2

我想在不停机的情况下更新 docker swarm 服务。问题是我没有足够的资源来进行服务复制。有没有办法做到这一点?

4

3 回答 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:更新期间的操作顺序:

  1. 先停止(旧任务在开始新任务之前停止)
  2. 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+ 版本以使其正常工作

https://docs.docker.com/compose/compose-file/#deploy

于 2020-06-18T15:11:43.713 回答
0

您要执行的部署类型称为蓝绿部署。我建议按照这个博客的步骤来做。

https://technologyconversations.com/2017/01/31/blue-green-deployments-with-docker-services-running-inside-a-swarm-cluster/

于 2017-06-06T13:40:10.240 回答