首页 > 解决方案 > docker swarm 模式是同时启动副本还是等到每个副本完成?

问题描述

我正在尝试使用docker swarmdocker service部署 Confluence Data Center。但是,集群部分的 Atlassian 文档给出了以下警告:

您一次只能启动一个节点。同时启动多个节点可能会导致严重故障。

docker swarm服务副本的默认启动策略是什么?它们是同时开始的,还是一个接一个?如果一个接一个,它如何决定一个完成开始?

标签: dockerdocker-swarmconfluence

解决方案


默认情况下,docker swarm同时创建副本,但一次更新一个副本(滚动更新)。据我所知,您无法控制创建,但您可以使用一个副本创建应用程序,然后对其进行更新:

docker service create --replicas 1 --name apache httpd:alpine
sleep 60 # one minute
docker service update --replicas 2 apache
sleep 60 # one more minute ...
docker service update --replicas 3 apache

这是安全的,因为如果您不更改 then 以外的任何参数,则现有副本不会受到影响--replicas

如果您想一次更新一个副本,您可以使用--update-parallelism,并进一步控制每个更新副本之间的时间--update-delay

docker service update apache \
--image nginx:alpine \
--update-parallelism 1 \
--update-delay 10s

推荐阅读