概要
Docker 1.12 RC2 のころと RC5 で変わっているところをメモ。
Docker swarm mode で遊んでみた感想。
不具合
CentOS7でrpmからインストールされているのですが、RC5でバグが混じってます。(github上ではすでに修正されているので次のリリースではなおっているでしょう。)
不具合の関係で
/usr/lib/systemd/system/docker.socket
がインストールされなくなったのですが
/usr/lib/systemd/system/docker.service
内に
Require=docker.socket
と記載があり、docker.socketが無いため、dockerサービスが立ち上がりません。
とりあえずは手動で修正(該当行を削除してsystemctl daemon-reload
)しましょう。
変わったところ
docker swarm init --listen-addr <node-01のIPアドレス>:2377
RC2のころはこれで普通にクラスタ初期化できてましたが、一部環境では
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses - specify one with --advertise-addr
といわれます。アドレスいくつも持ってる場合はlistenじゃなくてadvertiseを使いましょう
docker swarm init --advertise-addr <node-01のIPアドレス>:2377
また、クラスタ初期化時に、Tokenが発行されます。
node用とmanager用です。
docker swarm init --advertise-addr 192.168.57.220:2377
Swarm initialized: current node (3p05tbv2ap6guq3m6whxxtx1l) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0l6b3efum2k90ejmxmc3zlbhlu342djlgoysbshbwy15m15l9x-7yjzu2zzsrhpklbgk84i3uaev \
192.168.57.220:2377
To add a manager to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0l6b3efum2k90ejmxmc3zlbhlu342djlgoysbshbwy15m15l9x-detp1i0geqf3t1axmwhsf1oyo \
192.168.57.220:2377
既存のクラスタに参加する場合は、このTokenが必要となります。
docker swarm join --token <TOKEN> <node-01のIPアドレス>:2377
セキュアになったというか、ミスが減りそうですね。
遊んでみた感想
VirtualBoxで遊んでいたので、何か特有のことがあるかもしれません。
kernel panic おきなくなった
RC2のころ、nodeを systemctl stop docker
からの systemctl start docker
したら、数秒でkernel panicになることがあったのですが、それがなくなりました。
原因さっぱりわからないし、ログ見てもわからなかったので報告できてなかったのですが、良かったです。
managerが2つだと(相変わらず)つらい。
managerが3とか5いないと、分断されたときにどちらが正常なクラスタとして動いていいのかわからないですしね。
- Leaderを落とすと、Reachableだったもう1つのmanagerがLeaderに昇格してくれない。Leaderを復帰させたらReachableだったほうがLeaderになってLeaderだったほうがReachableに変わります。
- Reachableのほうを落としたあと、managerではないnodeを落とすと、Activeのままになった。そこでUnreachableになっているmanagerを立ち上げると、Reachableになり、それと同時に落ちていたnodeがDownになる。