プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2022/04/21

[Docker] Swarm モードの停止

event_note2022/04/20 23:19

Docker Swarm モードを停止するには、Worker ノードと Manager ノードを削除します。

Worker ノードの削除

ノードの切り離し

Worker ノードで docker swarm leave を実行すると、Worker ノードが Swarm から切り離されます。

$ docker swarm leave
Node left the swarm.

確認

Manager ノードで docker node ls を実行すると、Worker ノードの STATUSDown になったのが確認できます。

$ docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
hqi4gtcdh4a7ya8myg0x0my37     worker1    Down      Active                          20.10.12
z9voajpw84i4jk2fomqwsmnc7 *   manager1   Ready     Active         Leader           20.10.7

ノードの削除

次に Manager ノードで以下のコマンドを実行すれば、Manager ノードの管理上から Worker ノードが削除されます。

$ docker node rm <ノードID or ホスト名>

確認

docker node ls を実行すると、Worker ノードが削除されたのが確認できます。

$ docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
z9voajpw84i4jk2fomqwsmnc7 *   manager1   Ready     Active         Leader           20.10.7

Manager ノードの削除

Manager ノードの削除でも docker swarm leave を実行しますが、そのまま実行すると以下のようなメッセージが出力されます。

$ docker swarm leave
Error response from daemon: You are attempting to leave the swarm on a node that is participating as a manager. Removing the last manager erases all current state of the swarm. Use `--force` to ignore this message.

Manager ノードを削除するとSwarm の現在の状態がすべて消去されるために警告が表示されていますが、--force を指定すれば削除できます。

$ docker swarm leave --force
Node left the swarm.

一応以下の公式ドキュメントを見ると、もう少し詳しく書いてあります。

要約すると、Manager ノードが複数いる環境では、Manager ノードを Worker ノードに降格させてから削除するのが安全で、最後の Manager ノードの削除、つまり Manager ノード削除後にその Swarm をもう利用しない場合のみ --force をつけて削除しろ、という感じでしょうか。

Swarm が無効になったこを確認

docker info を実行すると、出力の中に Swarm: inactive となっているのが確認できるかと思います。