dockerが話題なようですがよく知らないのでメモしておきます。このメモでは、docker-machineとazureを使ってdockerホストを操作した記録を残します。
dockerホストをいじるツールには、boot2dockerというものがあるそうなのですが、代わりに(?)docker-machineというのを使いました。これは、boot2dockerでほぼ必ず利用するVirtualBox以外にもazureやVmwareを選べるからです。
docker-machine + azure
docker-machineとは、dockerホストを作成するツールです。
コマンド一つで簡単にdockerホストを作成できてしまいます。
(2015-5-6現在ではベータ版だそうです。)
azure上に仮想マシンを作成して、それをdockerホストとして利用できるようなので試してみました。
手元のPCにVirtualBoxを持たなくてもいいってことなんですかね。
作成してみる
Azureサブスクリプション関連
サブスクリプションIDの確認とcertファイルを用意を行います。
今日はMacから操作したい気分なので、Azure クロス プラットフォーム コマンドラインツールを使いました。
$ azure account list # サブスクリプションIDの確認
$ azure account cert export # certファイルの作成
dockerマシン作成
docker-machineのコマンドを用います。これはbrewから事前にインストールしておきました。
# 各引数は下記に説明します
$ docker-machine create -d azure --azure-subscription-id=“サブスクリプションID” --azure-subscription-cert=生成されたcertファイル.pem --azure-location "Japan East" dockerホスト名
- driverとしてazureを選択。
- サブスクリプションIDとサブスクリプションのcertを指定。
- 追加オプションとしてJapan Eastを選択。
- 最後に、dockerホスト名を指定。
dockerホスト名はazure上のコンピュータ名になるので、ダブらないように気をつけます。
作成後の確認
作成されたdockerホストが表示されていれば、成功です。
$ azure vm list
$ docker-machine ls
何か動かしてみる
dockerホスト内にnginxのコンテナを作って動かしてみようと思います。
$ eval "$(docker-machine env dockerホスト名)"
$ docker run -d -P --name web nginx
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e35a71b72047 nginx:latest "nginx -g 'daemon of 8 seconds ago Up 7 seconds 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp web
$ docker port web
443/tcp -> 0.0.0.0:32768
80/tcp -> 0.0.0.0:32769
webを立ち上げたのでブラウザから確認したのですが、表示できませんでした。
ポート80やポート443へアクセスするには、32768と32769が必要なようです。それには、azureのエンドポイント設定が必要そうです。。コンテナを設置してデタラメに決まるポート番号のために毎回設定しなければならないのでしょうか。。
とりあえず、、dockerホスト内から確認して満足しておきます😓。
$ docker-machine ssh
$ w3m http://localhost:32769
$ exit
ちゃんとwebが動いていて、ページが表示されました。
さいごに、止めて消す
不要となったdockerホストを停止して削除します。
$ docker-machine ls # Runningのステータスになっている
$ docker-machine stop dockerホスト名 # 止める
$ docker-machine ls # Stoppedのステータスになった
$ azure vm list # StoppedVMのステータスになった
ちゃんと停止しました。
$ docker-machine rm dockerホスト名 # 消す
$ azure vm list # 一覧に含まれないことを確認
ちゃんと削除されました。
参考
- Azure ポータルでの Docker VM 拡張機能の使用
- Docker Machine
- Mac OS X ←boot2dockerの説明ですが、webコンテナの作成など参考にしました。