2016年4月15日金曜日

【Microsoft Azure】Azure Container Service で Docker と向き合う

いろいろあってDockerと向き合うことになったので、Azure でやるなら Azure Container Service(以下ACS) を使ってみようと。
https://azure.microsoft.com/ja-jp/services/container-service/

Apache Mesos または Docker Swarm のどちらかのオーケストレーションツールを使ってDockerコンテナを管理するっていうので、今回はDockerSwarmを選択。

構成などについては、こちらのドキュメントをまずは読んでください。
https://github.com/Azure/azure-quickstart-templates/blob/master/101-acs-swarm/docs/SwarmWalkthrough.md

ACSは、ポータルの「テンプレートからデプロイ」でARMテンプレートを使ってデプロイします。












こちらから「テンプレートのデプロイ」を選択します。



















ACSのテンプレートはgithubで公開されています。
https://github.com/Azure/azure-quickstart-templates/tree/master/101-acs-swarm (これはDockerSwarmのもの)

実際に使うARMテンプレートはこちら。これを
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/101-acs-swarm/azuredeploy.json

「テンプレートの編集」を選んで















ACSのARMテンプレートを貼り付けて保存します。













次に、パラメーターをセットします。
とりあえず、DNSNAMEPREFIX(FQDNにつける識別用プレフィックス)とSSHRSAPUBLICKEY(SSHでアクセスする際のRSA公開鍵)を入力して「OK」を押します。

















リソースグループを選ぶなり作成するなりして、リージョンを決めます。
最後に、法律条項を確認して作成します。















デプロイが終わると、以下の2つのFQDNが決定します。

masterFQDN:{DNSNAMEPREFIX}mgmt.japaneast.cloudapp.azure.com
agentFQDN:  {DNSNAMEPREFIX}agents.japaneast.cloudapp.azure.com

masterへのssh接続は、以下のようにします。公開鍵が登録されているので、秘密鍵のパスフレーズでログイン出来ます。

$ ssh azureuser@{DNSNAMEPREFIX}mgmt.japaneast.cloudapp.azure.com -A -p 2200

Are you sure you want to continue connecting (yes/no)? yes
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-58-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Fri Apr 15 08:28:32 UTC 2016

  System load: 0.15              Memory usage: 1%   Processes:       98
  Usage of /:  5.7% of 28.80GB   Swap usage:   0%   Users logged in: 0

  Graph this data and manage this system at:
    https://landscape.canonical.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

azureuser@xxx:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                NAMES
5a161555c072        swarm:1.1.0         "/swarm manage --repl"   10 minutes ago      Up 8 minutes        0.0.0.0:2375->2375/tcp                                                                                                               containers_swarm_1
058236a13875        progrium/consul     "/bin/start -server -"   10 minutes ago      Up 8 minutes        0.0.0.0:8300-8302->8300-8302/tcp, 0.0.0.0:8400->8400/tcp, 53/tcp, 53/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8301-8302->8301-8302/udp   containers_consul_1

とりあえず動いています。
ここで簡単なWebアプリコンテナを動かしてみます。
以下の内容で、docker-compose.ymlというファイルを作成します。
web:
  image: "yeasy/simple-web"
  ports:
    - "80"
  restart: "always"

それから、docker-composeコマンドでコンテナをUPします。
docker ps コマンドで確認できます。
azureuser@xxx:~$ docker-compose up -d
Pulling web (yeasy/simple-web:latest)...
latest: Pulling from yeasy/simple-web
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
d1784d73276e: Pull complete
72e581645fc3: Pull complete
9709ddcc4d24: Pull complete
2d600f0ec235: Pull complete
de1491f1bbd4: Pull complete
4becc568d2ff: Pull complete
6aeb62f4b3fa: Pull complete
77144c15ca8f: Pull complete
811db2e8b100: Pull complete
Digest: sha256:35e52520b8f98a092af6ce10c9fdd3ca6ca77f0b79f9d652c29bdd5d17c1c7aa
Status: Downloaded newer image for yeasy/simple-web:latest
Creating azureuser_web_1
azureuser@xxx:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                                                                                NAMES
ae8a0ea43b50        yeasy/simple-web    "/bin/sh -c 'python i"   23 seconds ago      Up 22 seconds       0.0.0.0:32768->80/tcp                                                                                                                azureuser_web_1
5a161555c072        swarm:1.1.0         "/swarm manage --repl"   20 minutes ago      Up 19 minutes       0.0.0.0:2375->2375/tcp                                                                                                               containers_swarm_1
058236a13875        progrium/consul     "/bin/start -server -"   20 minutes ago      Up 19 minutes       0.0.0.0:8300-8302->8300-8302/tcp, 0.0.0.0:8400->8400/tcp, 53/tcp, 53/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8301-8302->8301-8302/udp   containers_consul_1                                                                                                             containers_swarm_1

ブラウザから「{DNSNAMEPREFIX}agents.japaneast.cloudapp.azure.com」へアクセスするとWebアプリの画面が見えます。















0 件のコメント: