我目前在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重新启动所有容器?我不想手动登录每个节点并执行重启。
答案 0 :(得分:7)
在docker 1.12.x的最新稳定版本中,可以通过更新服务配置重新启动容器,但在即将发布的docker 1.13.0中,即使服务设置未更改,也可以通过指定$ docker service update --force mycontainers
标志,容器将重新启动。如果您不介意使用1.13.0 RC4,可以立即使用。
while
更新:Docker 1.13.0已经发布。
答案 1 :(得分:1)
Pre-Docker 1.13,我发现将所有服务缩减到0,等待关机,然后将所有内容扩展回到上一级别。
docker service scale mycontainers=0
# wait
docker service scale mycontainers=8
答案 2 :(得分:0)
更新现有服务,swarm将重新创建所有容器。例如,您只需更新服务的属性即可重新存档。