コンポーズファイルで参照されなくなったサービスを削除する
このステップでは、再度 docker-compose.yml
ファイルを修正し、今回はサービスを削除します。スタックを再デプロイすると、Docker Swarm はコンポーズファイルでサービスが定義されなくなったことを検出し、そのサービスを削除します。このプロセスは、サービスの「削除(pruning)」と呼ばれることもあります。
まず、docker-compose.yml
ファイルを編集して alpine
サービスを削除しましょう。
nano ~/project/docker-compose.yml
ファイルから alpine:
セクション全体を削除します。ファイルは元の状態に戻り、web
サービスのみを定義するようになります。
version: "3.8"
services:
web:
image: nginx:1.21.6
ports:
- "80:80"
修正したファイルを保存するには、Ctrl + X
を押し、次に Y
を押し、最後に Enter
を押します。
これで、修正した docker-compose.yml
ファイルを使用してスタックを再度デプロイします。
docker stack deploy -c ~/project/docker-compose.yml mywebstack
Docker Swarm は mywebstack
スタックの現在の状態と更新された docker-compose.yml
ファイルの定義を比較します。ファイルに alpine
サービスがもう存在しないことに気づき、対応するサービスとそのタスクを Swarm から削除します。alpine
サービスが削除されていることを示す出力が表示されるはずです。
alpine
サービスが削除されたことを検証するために、スタック内のサービスを再度一覧表示しましょう。
docker stack services mywebstack
これで、mywebstack_web
サービスのみがリストされているはずです。mywebstack_alpine
サービスは削除されているはずです。
最後に、Swarm 環境をクリーンアップするために、スタック全体を削除できます。
docker stack rm mywebstack
このコマンドは、mywebstack
スタックを削除し、そのすべてのサービスとタスクも含めます。削除が確認される出力が表示されるはずです。
スタックが削除されたことを検証するために、スタックを再度一覧表示しましょう。
docker stack ls
mywebstack
はもうリストに表示されないはずです。
docker-compose.yml
ファイルからサービスを削除して再デプロイすることで、スタックからサービスを正常に削除し、その後スタック全体を削除することで環境をクリーンアップしました。