2016年3月14日月曜日

Docker MachineでESXiにDockerSwarmクラスタを構成する



Docker Machineを使用してESXi6.0にDocker Swarmのクラスタ環境を構築した時のメモです。

CentOSAtomicHostやらgit for Windowsやら手動で色々試してみたのですが
どうもうまくいかず、結局マニュアル通りにやって動きました・・・。

 cannot connect to the docker engine endpoint となってどうしてもマネージャとクラスタの通信がうまくいかない・・・。

 クライアントはWindows10を使用しています。

1.クライアントにDocker Toolboxをインストールします。
 ※git for Windowsからスクリプトで導入するとDockerのバージョンが1.10.2 となりSwarmの
  サポート外になります。

 https://www.docker.com/products/docker-toolbox

2.インストール後、デスクトップの「Docker Quick Terminal」を起動します。
3.VirtuabBox上にDocker-Machine用Dockerが起動します。
4.以降は下記URLを参考にESXiにDocker Swarm環境を構築します。

 https://docs.docker.com/swarm/install-w-machine/
 https://docs.docker.com/machine/drivers/vsphere/

5.ESXi上に[manager][agent1][agent2]のDocker-Machineを作成します。


 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] manager

 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] agent1

 docker-machine create --driver vmwarevsphere --vmwarevsphere-username=[ESXiのroot] --vmwarevsphere-password=[ESXiのpassword] --vmwarevsphere-vcenter=[ESXiのIPアドレス] agent2


6.下記コマンドでdocker-machineが作成され、STATEがRunningとなっていることを確認します。


 docker-machine ls


7.Docker Swarmを構成するためのtokenを作成します。


 eval $(docker-machine env manager) #左記コマンドを実行することで[manager]でコマンドの実行が可能となります。
 docker run --rm swarm create
  0ac50ef75c9739f5bfeeaf00503d4e6e #左記ランダムなtokenが発行されるので以降使用します。


8.manager側の設定を行います。(変更箇所はtokenのみ)

 
 docker run -d -p 3376:3376 -t -v /var/lib/boot2docker:/certs:ro swarm manage -H 0.0.0.0:3376 --tlsverify --tlscacert=/certs/ca.pem --tlscert=/certs/server.pem --tlskey=/certs/server-key.pem token://[7で発行されたtoken]


9.agent1側の設定を行います。(変更箇所は[7で発行されたtoken]のみ)


 eval $(docker-machine env agent1)
 docker run -d swarm join --addr=$(docker-machine ip agent1):2376 token://[7で発行されたtoken]


10.agent2側の設定を行います。(変更箇所は[7で発行されたtoken]のみ)


 eval $(docker-machine env agent2)
 docker run -d swarm join --addr=$(docker-machine ip agent1):2376 token://[7で発行されたtoken]


11.Swarmが構成されたことを確認します。


 DOCKER_HOST=$(docker-machine ip manager):3376
 docker info

 ※Nameに[agent1][agent2]が表示されており[Running:2]等になっていればOK


12.適当にコンテナを起動します


 docker run hello-world


上記だけだとCoreOSよりも簡単にSwarmクラスタが構成できる印象でした。
ただ、一旦上記Docker-Machineを停止、起動するとクラスタ構成がわけわからなくなる・・・。
※「使い捨て」思想のためDocker-Machineの停止、起動自体、想定外の操作かもしれないですが。

実運用で使用するためにはまだまだ勉強が必要と感じました。



 

0 件のコメント:

コメントを投稿