Dockerにおいて表題の通り。前回までの続きからstep2を行う。
- step0: Environment
- step1: Set up a key-value store
- step2-1: Create Swarm cluster
- step2-2: Create Swarm cluster
■ 環境
- Mac OSX (10.10.5)
- Apache ZooKeeper 3.4.6
- Vagrant 1.8.1
- Ubuntu Vivid
■ Docker Host
Vagrantで起動している2つのVMにDockerをインストールする。”Ubuntu/Vivid“へのDockerインストール方法は下記に記載。
Install Docker Engine to Ubuntu/Vivid
上記インストールでは、該当ホスト以外からのアクセスが不可なので下記エントリのようにリモートアクセスを可能となるように設定を変更する。
上記エントリでは、CentOS6へのインストールなので、Ubuntuと違う点を下記に記載する。Ubuntuでは`initd`ではなく`systemd`なので、下記ファイルが修正対象のファイルとなる。
$ sudo vi /lib/systemd/system/docker.service
修正内容は下記。
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375
“ExecStart“に”-H tcp://0.0.0.0:2375“を追加しただけである。Dockerのデーモンを再起動する。
$ sudo systemctl reload-daemon
$ sudo systemctl restart docker.service
※ Ubuntuで`upstart`を使用している場合には、対象のファイルは下記になるかと思われる。
/etc/default/docker
しかし、今回利用しているVagrantの”ubuntu/vivid64“では`upstart`がインストールされていないので`systemd`のファイルを編集している。
■ `docker daemon`オプション
Get started with multi-host networking
https://docs.docker.com/engine/userguide/networking/get-started-overlay/
公式ドキュメントの上記のページを見ると、”step2“の”1. Create Swarm master“にて`docker-machine`で起動しているDockerホストには下記オプションが渡されているようである。
- –cluster-store=zk://10.0.2.2:2181/
- –cluster-advertise=eth1:2375
これらを前述のリモートアクセスを可能にしたのと同じように下記ファイルを編集して追加する。接続先のKVSは以前のエントリで触れている通りZooKeeperを使用する。
“–cluster-store“で指定するのはホストOSで起動しているZooKeeperである。”–cluster-advertise“で指定しているのは、Dockerにリモートでアクセスするルートと考え上記のようにしている。
これらを追記し再度Dockerサービスを再起動する。
$ sudo vi /lib/systemd/system/docker.service
変更後は下記のようになっている。
ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 --cluster-store=zk://10.0.2.2:2181/ --cluster-advertise=eth1:2375
再起動する。
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
ZooKeeperには下記のznodeが作成されていた。
/
+ docker
+ nodes
+ 192.168.33.11:2375
+ 192.168.33.12:2375
ここまでで2台のDockerホストを起動した。
今回はここまで。swarmクラスタは次回構築することにする。
以上。