Swarm の再スケジュール・ポリシー

Docker Swarm で再スケジュール・ポリシーを設定できます。再スケジュール・ポリシーとは、コンテナを実行中のノードが落ちた時、再起動するかどうかを決めます。

再スケジュール・ポリシー

コンテナ起動時に再スケジュール・ポリシー(reschedule policy)を設定できます。設定をするには reschedule 環境変数を指定するか、 com.docker.swarm.reschedule-policy ラベルを指定します。ポリシーを指定しなければ、再スケジュール・ポリシーは off になります。つまり、ノードで障害が発生しても Swarm はコンテナを再スケジュールしません(再起動しません)。

on-node-failure ポリシーを環境変数 reschedule で設定するには、

$ docker run -d -e reschedule:on-node-failure redis

com.docker.swarm.reschedule-policy ラベルで同じポリシーを設定するには、

$ docker run -d -l 'com.docker.swarm.reschedule-policy=["on-node-failure"]' redis

再スケジュール・ログの確認

docker logs コマンドを使って再スケジュールしたコンテナの動作を確認できます。確認するには、次の構文を使います。

docker logs SWARMマネージャのコンテナID

コンテナの再スケジュールに成功したら、次のようなメッセージを表示します。

Rescheduled container 2536adb23 from node-1 to node-2 as 2362901cb213da321
Container 2536adb23 was running, starting container 2362901cb213da321

同様に、新しいノード上で新しいコンテナの起動に失敗したら、ログには次のように表示します。

Failed to start rescheduled container 2362901cb213da321