LoginSignup
8
8

More than 5 years have passed since last update.

docker-machine + azure

Last updated at Posted at 2015-05-05

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 # 一覧に含まれないことを確認

ちゃんと削除されました。

参考

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8