docker - docker swarm 模式是同时启动副本还是等到每个副本完成?
问题描述
我正在尝试使用docker swarm
和docker service
部署 Confluence Data Center。但是,集群部分的 Atlassian 文档给出了以下警告:
您一次只能启动一个节点。同时启动多个节点可能会导致严重故障。
docker swarm
服务副本的默认启动策略是什么?它们是同时开始的,还是一个接一个?如果一个接一个,它如何决定一个完成开始?
解决方案
默认情况下,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
推荐阅读
- regex - 如何从维基百科文本中删除所有乳胶?
- processing - 你如何画同心正方形?
- swift - 如何跨步遍历数组?
- r - 从 bigrquery 和 dbplyr 生成的 BigQuery 的优化?
- reflection - 如何设计一个可以根据其中一个值排序的地图?
- javascript - jquery 在我试图抓取的 div 元素的 id 上获得“未定义”
- python - 字典列表作为字典列表键的值
- css - 如何动态存储一些css,字体样式文件到反应的公用文件夹?
- arrays - 我想使用临时数组进行数组旋转,下面是它的代码?有没有更好的方法使用临时数组来做到这一点?
- excel - 用于存储工作表名称的动态数组