Remova o serviço de encaixe e aguarde a parada dos contêineres

1

Digamos que eu tenha os serviços do Docker Swarm myservice1 e myservice2 . Como posso remover esses serviços e esperar que os contêineres associados parem?

    
por redgeoff 11.01.2018 / 19:52

2 respostas

2

Para parar e esperar por um único serviço:

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

Para vários serviços:

$ docker service rm myservice1 myservice2 && docker wait $(docker ps -f "name=myservice1" -f "name=myservice2" -q)
    
por 11.01.2018 / 19:52
0

Infelizmente, preciso de mais representantes para comentar a resposta do / u / redgeoff ... mas o docker wait opera em containers / tarefas que são locais para o nó no qual o comando é executado. Em um enxame de vários nós (o ponto de usar o docker swarm), o nó em que você está não tem garantia de estar onde a tarefa de serviço está sendo executada.

Algo como isso deve ser melhor:

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

No entanto , isso também assume que o nó em que a tarefa está sendo executada é um nó gerenciador. Se não estiver, os comandos docker service não poderão ser executados. Nesse caso, você deve executar o comando docker service rm antes de executar o ssh onde a tarefa existe.

    
por 13.11.2018 / 19:38