如何在零停机时间内更新没有复制的docker swarm服务?

时间:2017-06-06 12:38:08

标签: docker deployment docker-swarm downtime

我想在不停机的情况下更新docker swarm服务。问题是我没有足够的资源来进行服务复制。反正有吗?

3 个答案:

答案 0 :(得分:1)

swarm模式的默认设置是在启动容器之前停止容器。在17.05中添加了pull request (#30261),可选择在停止旧实例之前启动新实例。其语法是:

docker service update --update-order start-first ...

尚未添加到更新堆栈中,您可以在issue #32586上跟踪该请求。

答案 1 :(得分:1)

根据文档,您可以在docker-service文件上使用order属性

订单:更新过程中的操作顺序:

  1. 先停止(旧任务在开始新任务之前已停止)
  2. 先启动(新任务先启动,运行任务短暂重叠)(默认先停止

,您的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

答案 2 :(得分:0)

您要执行的部署类型称为蓝绿部署。我建议按照此博客的步骤进行操作。

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