我想在不停机的情况下更新 docker swarm 服务。问题是我没有足够的资源来进行服务复制。有没有办法做到这一点?
问问题
2054 次
3 回答
5
swarm 模式的默认设置是在启动新容器之前停止容器。在 17.05 中添加了一个拉取请求 (#30261),可以选择在停止旧实例之前启动一个新实例。其语法是:
docker service update --update-order start-first ...
这尚未添加到更新堆栈中,您可以在问题 #32586上跟踪该请求。
于 2017-06-06T13:57:38.680 回答
1
根据文档,您可以在 docker-service 文件中使用 order 属性
order:更新期间的操作顺序:
- 先停止(旧任务在开始新任务之前停止)
- start-first(新任务先启动,正在运行的任务短暂重叠)(默认stop-first)
你的 docker 服务文件将是这样的
version: '3.4'
services:
nginx:
image: nginx
restart: always
deploy:
restart_policy:
condition: on-failure
update_config:
order: start-first
确保您使用的是 3.4+ 版本以使其正常工作
于 2020-06-18T15:11:43.713 回答
0
您要执行的部署类型称为蓝绿部署。我建议按照这个博客的步骤来做。
于 2017-06-06T13:40:10.240 回答