Docker の使い方 (docker run から Docker Compose まで) 研修コースに参加してみた
今回参加した研修コースは Docker の使い方 (docker run から Docker Compose まで) です。
Docker、いよいよエンタープライズな SI の業界でも使われ始めているのでしょうか、満員です!!
実際参加してみると、Docker のチュートリアルとして色々な Web アプリケーションを docker run で立ち上げて動かしたり、Docker Compose で複数のコンテナを連携させるやり方を演習でき、チームの開発環境の統一など使えるシーンが具体的にイメージできました!
最後には kubernetes でのデモも交え、Docker をどこから始めよう、と考えている方や開発チームにはとてもオススメです!
では、どんな内容だったのか、レポートします!
もくじ
コース情報
想定している受講者 |
|
---|---|
受講目標 |
|
講師紹介
インフラ分野の講師と言えば 新谷 泰英さん です。
どうすれば技術を身につけられるか、理解できるか、研究しつづけるインフラ系の人気トレーナー
仮想化とコンテナ
まずは仮想化 (VM) とコンテナで実現したいことは近いけど、どう仕組みが違うのか、というお話です。が、これは以前のレポートに詳しく出た内容でしたので、ここでは割愛します!
Docer の構成
コンテナ技術の概要がわかったところで、Docker の仕組みについて解説いただきました。
- Docker Server の上でコンテナが動く
- イメージを起動すると、メモリにイメージがロードされる
- プロセスが立ち上がる
- プロセスがコンテナ
Docker インストール ~ チュートリアル
ここからは実際に Docker をインストールして使ってみます。
- コンテナ 1 つにつき 1 サービスとして動かす
- Web サーバ / App サーバ / DB サーバ があればそれぞれ単体で動かす
- データベースのように永続化したいデータがあれば、それは別コンテナを立てる
docker ps -a
で停止したコンテナも含め一覧が表示されるdocker run -it -h
- -it をつけると起動して、起動したコンテナが操作できる
- -h はホスト名を割り当てるポジション
docker run [イメージ名]
でイメージがローカルのリポジトリに無ければ、自動で pull して実行する
docker attach ID
で操作するコンテナを切り替え
このあたりは以前にもやったのでサクサク進みます。
Docker で Web アプリケーションを実行
WordPress とチャットツールの Slack のクローン Mattermost (OSS) を構築してみます。
WordPress を実行
- 1 コンテナ 1 サービスなので通常は複数動かさない
- とはいえ、1 コンテナにすべて入れて動かすこともできる
docker run -d -p 8888:80 --name=wordpress tutum/wordpress
1 ライナーで動くなんて、素敵です。
- オプションの補足解説
-p xx:yy
ホストのポート xx をコンテナの yy にマッピング-v ss:dd
ホストのディレクトリ ss をコンテナのディレクトリ dd にマウント (ホストからデータ呼び出し)
Mattermost (チャット) を実行
続いて、Mattermost です。これまた 1 ライナーです!
docker run --name mattermost -d --publish 80:8065 --add-host dockerhost:127.0.0.1 mattermost/mattermost-previe
チャットができたよ!
Mattermost 初見だったのですが、プロジェクトで Slack が使えない場合などに社内サーバやプライベートクラウドで使えますね。
コンテナを複数連携
とはいえ、WordPress も Mattermost も Web サーバ、DB サーバをシングルコンテナで動かしたので、あまり良くありません。
そこで複数のコンテナを連携させるやり方を2つ教えていただきました。
link
- link というオプションがある
docker run --name --link mysql:mysql -p 8888:80 -d wordpress
- 数が増えると、シンドイ…
もっといいやり方が Docker Compose
- Docker Compose
- yaml ファイルに依存関係を記述しておく
- ファイルを読み込んで実行してくれる
Docker Compose の演習 ~docker-compose.yml を書いてみる~
実際に Docker Compose で WordPress を動かすための yaml ファイルを書いて実行してみます。
- インストール
yum -y install epel-release # 標準ライブラリにはない
yum -y install docker-compose
- wordpress ディレクトリを作成
mkdir wordpress
- docker compose ファイルを作成・編集
-
vi docker-compose.yml
mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: P@ssw0rd wordpress: image: wordpress links: - mysql:mysql ports: - "8888:80"
-
- 実行!
docker-compose up -d
動きました! いえーい!
- 停止
docker-compose down
Docker Compose のファイルも公開されていて、使われているとのことでした。
たしかに GitHub で検索してみると、いろいろありました。
Laravel を Docker Compose で構築するテンプレート
m2wasabi/docker-compose-template-laravel: Docker template for Laravel developer
これは開発チームで開発環境を全員一緒にする、テスト環境をサッと作る、といったときにメチャクチャ効きそうです。
管理ツール
また動かして終わりではなく、管理も必要ですよね。ということで、Docker の build から終了やコンテナの状況を GUI で管理できるツールがあります。
代表的な Portainer を Docker Hub から pull して動かしてみてみます。
最近は linux からモニターする場合と、Datadog や NewRelic のようにエージェントを動かしてモニターする場合もあるようですね。
オーケストレーション Kubernetes (minikube) を使ってみよう
最後に自動スケールするオーケストレーションを新谷さんにデモしていただきました。
- オーケストレーションとは自動スケールする仕組み
- VMware であれば vSphere
- docker 純製のものは swarm というのがあった (過去形)
- Kubernetes (Google製のOSS。k8s という略称) が有力
- が、めっちゃ大変…
- minikube であれば k8s をローカルでも試せる
- (マジですか!?)
- 初回インストールで30分~40分掛かるので、それだけ注意
minikube というものがあったんですね。
今回は新谷さんがすでに minikube をインストールしていて、それをデモされていたのですが、Kubernetes と同じ UI でした。
この minikube のデモを終えたところで、このコースは修了しました。
まとめ
このコースでは Docker のチュートリアルとして、イメージからコンテナを作ることからはじめ Docker Compose で複数コンテナを連携させて、Web アプリケーションを構築するということをやってみました。
管理ツールやオーケストレーションも、もちろんデモもあったのですが、はじめて開発環境を自分で構築したときにとてもとてもハマったので Docker Compose が体験できたことはとってもよかったです。
Docker をどこから始めようかな、と思う方にはとてもオススメです!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!
IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!
SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。