【Docker 入門】Docker machine
Docker Machine
-
Docker Engineを搭載した仮想マシンの作成、起動、停止、再起動などをコマンドラインから実行できるツールです。
-
ローカルPCだけでなく、リモートのクラウドプロバイダでDockerホストを立ち上げ管理することも可能です。
Docker MachineはいわばDockerによる仮想化技術なので、どこかのホストプラットフォーム上で実行することが必要になります。windowsなら、Hyper-Vもしくは、Virtual boxなどを起動して、そこで仮想マシン版のDockerを起動します。
Docker machineを使用したDockerホストの管理コマンド
- 現在立ちあがっている仮想Dockerマシン名を表示
docker-machine ls
- docker-machineを作成
docker-machine create <作成したい仮想マシンDockerの名前>
- 作成したdocker-machineにssh接続
docker-machine ssh <接続したい仮想マシンDocker>
- 操作したいdocker-machineの環境変数の設定
docker-machine env <接続したい仮想マシンDocker>
- docker-machineの停止
docker-machine stop <停止させたい仮想マシンDocker>
- docker-machineの削除
docker-machine rm <削除したい仮想マシンDocker>
GCPのGCEへDockerホストをプロビジョニングする方法
dokcer-instanceをGCP上に立ち上げる
プロジェクトの作成
↓
IAMと管理>サービスアカウント>サービスアカウントを作成>このサービスアカウントにプロジェクトへのアクセスを許可する(サービスアカウントの権限を「オーナー」に)
プロジェクトにオーナー権限を付与し忘れると、仮想マシンが立ち上がらないので注意!!
キーの作成jsonでこれをGOOGLE_APPLICATION_CREDENTIALSとしてあとで環境変数に設定します
export GOOGLE_APPLICATION_CREDENTIALS="/c/Program Files/Docker Toolbox/docker-test-219312-c298954a4db6.json"
↓
APIサービスの有効化
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=<プロジェクトID>
↓
インスタンスの立ち上げ
docker-machine create --driver google --google-project <プロジェクトID> --google-zone asia-northeast1-a <仮想Dockerコンテナ名>
--diriver google : ドライバーにGoogleを指定して、Google Compute Engine上にホストを作成することを意味しています。
--google-project : GCPのproject名
--google-zone:GCPの利用地域指定
操作対象のホストマシンをさきほど立ちあげたDocker仮想コンテナに切り替えます。
<仮想Dockerコンテナ名>はvm01とします
下記コマンドで、環境変数の設定します
docker-machine env vm01
下記で、操作対象のホストマシンに切り替えます。
eval $(docker-machine env vm01)
docker-machine lsすると、vm01がACTIVEになっていることが確認できます。
では下記コマンドで、dockerコンテナを起動してみましょう。
docker run -d -p 8080:80 --name webserver kitematic/hello-world-nginx
ポート8080番、webserverという名前でkitematic/hello-world-nginxコンテナを起動します。
ファイアウォールルールは以下のように設定します
設定したポート8080番を解放します。
docker-machine ip vm01でvm01のホストマシンに振られているIPアドレスを確認します。
ブラウザからそのIPと先ほど解放したポート8080番でアクセスします。
(docker-machine ip vm01で確認したIP):8080
このよう画面が表示されれば成功です。
ちなみに、この画面は
/var/lib/docker/volumes/390297c140c89575f4b2699e459d86af844b8d6b1cd90f3ab5d97f9e10fc78b5/_data/index.html
のファイルですので、ここを書き換えると、
こんな風に編集できてしまいます。
ホストの停止は
docker-machine stop vm01
ホストの削除は
docker-machine rm vm01
で行えます。
いちど、DockerToolboxを閉じて、ふたたびホストに接続する場合には、もういちど
export GOOGLE_APPLICATION_CREDENTIALS="/c/Program Files/Docker Toolbox/docker-test-219312-c298954a4db6.json"
の操作が必要になります。
接続時に自動でよみこませるためには、この設定をbash_profileなどに書き込む必要があるでしょう。
全般、こちらにくわしくまとまっています
Docker Machine をローカル VM で始めるには — Docker-docs-ja 1.11.0 ドキュメント
独学するには?
もっとDockerを詳しく学びたいひとは、Udemyの「ゼロからはじめる Dockerによるアプリケーション実行環境構築」がおすすめです。本も読んで学んでもいますが、動画教材ならではの手を動かしながらの学びやすさがあります。
本ならこちらがおすすめ
Dockerのみならず、Kubernetesまでを見据えて書かれているところもよいです。弊部署の大先輩も7冊くらいDocker本を読んでみた結果、これが一番まとまっていてよかったといってました。
ではでは!