删除docker服务并等待容器停止

删除docker服务并等待容器停止

假设我有 Docker Swarm 服务myservice1myservice2。我该如何删除这些服务并等待相关容器停止?

答案1

要停止并等待单个服务:

$ 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)

答案2

不幸的是,我需要更多回复才能对 /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)

然而, 这假设运行任务的节点是管理节点。如果不是,则docker service命令无法运行。在这种情况下,您应该docker service rm在 ssh 进入任务所在的位置之前运行该命令。

相关内容