Docker Swarm モードを停止するには、Worker ノードと Manager ノードを削除します。
Worker ノードの削除
ノードの切り離し
Worker ノードで docker swarm leave
を実行すると、Worker ノードが Swarm から切り離されます。
$ docker swarm leave
Node left the swarm.
確認
Manager ノードで docker node ls
を実行すると、Worker ノードの STATUS
が Down
になったのが確認できます。
$ 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
となっているのが確認できるかと思います。