web-dev-qa-db-ja.com

Dockerサービスを削除し、コンテナーが停止するのを待ちます

DockerSwarmサービスがあるとしましょうmyservice1およびmyservice2。これらのサービスを削除して、関連するコンテナーが停止するのを待つにはどうすればよいですか?

2
redgeoff

停止して単一のサービスを待つには:

$ docker service rm myservice1 && docker wait $(docker ps -f "name=myservice1" -q)

複数のサービスの場合:

$ docker service rm myservice1 myservice2 && docker wait $(docker ps -f "name=myservice1" -f "name=myservice2" -q)
4
redgeoff

残念ながら、/ u/redgeoffの回答についてコメントするには、さらに担当者が必要です...しかし、docker waitは、コマンドが実行されるノードに対してローカルなコンテナ/タスクで動作します。マルチノードスウォーム(docker swarmを使用するポイントの一種)では、現在のノードがサービスタスクの実行場所であるとは限りません。

このようなものはより良いはずです:

$ docker service ps --format '{{.Node}}' serviceName
# node1.swarm.internal
$ ssh [email protected]
$ docker service rm myservice1 && docker wait $(docker ps -f "name=serviceName" -q)

ただし、このalsoは、タスクが実行されているノードがマネージャーノードであると想定しています。そうでない場合、docker serviceコマンドは実行できません。その場合、タスクが存在する場所にSSH接続する前に、docker service rmコマンドを実行する必要があります。

0
404