Удалите службу докеров и дождитесь остановки контейнеров.

Допустим, у меня есть службы Docker Swarm myservice1 и myservice2 . Как мне удалить эти службы и дождаться остановки связанных контейнеров?

1
задан 11 January 2018 в 20:52
2 ответа

Чтобы остановить и дождаться одной службы:

$ 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)
3
ответ дан 3 December 2019 в 18:28

К сожалению, мне нужно больше представителей, чтобы прокомментировать ответ / u / redgeoff ... но docker wait работает с контейнерами / задачами, которые являются локальными для узла, команда исполняется на. В многоузловом рое (своего рода точка использования роя докеров) узел, на котором вы находитесь, не обязательно находится там, где выполняется служебная задача.

Что-то вроде этого должно быть лучше:

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

Однако , этот также предполагает, что узел, на котором выполняется задача, является узлом-менеджером. В противном случае команды службы докеров не могут выполняться. В этом случае вы должны запустить команду docker service rm перед тем, как ssh'ing туда, где существует задача.

0
ответ дан 3 December 2019 в 18:28

Теги

Похожие вопросы