如何在docker swarm中重启多个容器

时间:2016-12-29 22:40:00

标签: docker docker-swarm

我目前在Docker设置中有4个不同主机的8个容器。

ubuntu@ip-192-168-1-8:~$ docker service ls
ID            NAME         MODE    REPLICAS  IMAGE
yyyytxxxxx8  mycontainers  global  8/8     myapplications:latest

在服务上运行ps -a会产生以下结果。

ubuntu@ip-192-168-1-8:~$ docker service ps -a yy
NAME                            IMAGE                        NODE          DESIRED STATE  CURRENT STATE        ERROR  PORTS
 mycontainers1                myapplications:latest:   ip-192-168-1-5 Running        Running 3 hours ago
 \_ mycontainers2                myapplications:latest: ip-192-168-1-6  Running        Running 3 hours ago
 \_ mycontainers3                myapplications:latest:  ip-192-168-1-7  Running        Running 3 hours ago
\_ mycontainers4                myapplications:latest:  ip-192-168-1-8  Running        Running 3 hours ago
\_ mycontainers1                myapplications:latest: ip-192-168-1-5  Running        Running 3 hours ago
 \_ mycontainers2                myapplications:latest:  ip-192-168-1-6  Running        Running 3 hours ago
\_ mycontainers3                myapplications:latest:  ip-192-168-1-7  Running        Running 3 hours ago
\_ mycontainers4                myapplications:latest:  ip-192-168-1-8  Running        Running 3 hours ago

我的问题是如何使用服务ID重新启动所有容器?我不想手动登录每个节点并执行重启。

3 个答案:

答案 0 :(得分:7)

在docker 1.12.x的最新稳定版本中,可以通过更新服务配置重新启动容器,但在即将发布的docker 1.13.0中,即使服务设置未更改,也可以通过指定$ docker service update --force mycontainers 标志,容器将重新启动。如果您不介意使用1.13.0 RC4,可以立即使用。

while

更新:Docker 1.13.0已经发布。

https://github.com/docker/docker/releases/tag/v1.13.0

答案 1 :(得分:1)

Pre-Docker 1.13,我发现将所有服务缩减到0,等待关机,然后将所有内容扩展回到上一级别。

docker service scale mycontainers=0
# wait
docker service scale mycontainers=8

答案 2 :(得分:0)

更新现有服务,swarm将重新创建所有容器。例如,您只需更新服务的属性即可重新存档。