Docker Swarm を試してみる

Docker Swarmを試してみました。

Dockerがインストールされている ホストを二台(node1、node2)用意しました。
node1 がマネージャ、node2 が swarm node です。
ディスカバリサービスは DockerHub を使用しています。

下環境情報です(二台とも一緒)

root@ubuntu:~# uname -a
Linux ubuntu 3.19.0-33-generic #38-Ubuntu SMP Fri Nov 6 18:18:12 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

root@ubuntu:~# docker info
Containers: 2
Images: 8
Server Version: 1.9.1
Storage Driver: devicemapper
 Pool Name: docker-252:0-163206-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 107.4 GB
 Backing Filesystem: 
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 1.844 GB
 Data Space Total: 107.4 GB
 Data Space Available: 22.55 GB
 Metadata Space Used: 1.749 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.90 (2014-09-01)
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-33-generic
Operating System: Ubuntu 15.04
CPUs: 2
Total Memory: 992.9 MiB
Name: ubuntu
ID: DZ3Q:GYC5:JU6F:KELO:HXKC:2WNX:L2DJ:CZIM:YQX5:CVXP:FAZN:PXFQ
WARNING: No swap limit support

以下のスクリプトを dockerがインストールされているホスト上で実行します
※今回は node1 上で実行しました。

# node情報を設定
export node1=192.168.1.6:2375
export node2=192.168.1.7:2375

# TOKEN発行
export SWARM_TOKEN=$(docker -H tcp://$node1 run --rm swarm create)

# swarm マネージャ起動
# manager 起動時の --strategy オプションでコンテナの起動方式が変わる
docker -H tcp://$node1 run -d -p 12375:2375 swarm manage token://$SWARM_TOKEN

# swarm ノード起動
docker -H tcp://$node2 run -d swarm join --addr=$node2 token://$SWARM_TOKEN

# node情報の取得
root@ubuntu:~# docker -H tcp://192.168.1.6:12375 info
Containers: 1
Images: 1
Server Version: swarm/1.1.3
Role: primary
Strategy: spread
Filters: health, port, dependency, affinity, constraint
Nodes: 2
 ubuntu: 192.168.1.6:2375
  └ Status: Healthy
  └ Containers: 1
  └ Reserved CPUs: 0 / 2
  └ Reserved Memory: 0 B / 1.018 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.19.0-33-generic, operatingsystem=Ubuntu 15.04, storagedriver=devicemapper
  └ Error: (none)
  └ UpdatedAt: 2016-03-10T03:32:29Z
 ubuntu: 192.168.1.7:2375
  └ Status: Pending
  └ Containers: 2
  └ Reserved CPUs: 0 / 2
  └ Reserved Memory: 0 B / 1.018 GiB
  └ Labels: executiondriver=native-0.2, kernelversion=3.19.0-33-generic, operatingsystem=Ubuntu 15.04, storagedriver=devicemapper
  └ Error: ID duplicated. DZ3Q:GYC5:JU6F:KELO:HXKC:2WNX:L2DJ:CZIM:YQX5:CVXP:FAZN:PXFQ shared by this node 192.168.1.7:2375 and another node 192.168.1.6:2375
  └ UpdatedAt: 2016-03-10T03:32:53Z
Kernel Version: 3.19.0-33-generic
Operating System: linux
CPUs: 2
Total Memory: 1.018 GiB
Name: aab2fa7bedb4
root@ubuntu:~# 

きちんと2台 起動し、認識しました!
以下の資料に感謝。

資料
http://docs.docker.jp/swarm/discovery.html
http://qiita.com/atsaki/items/16c50dfd579a9339c333