代码之家  ›  专栏  ›  技术社区  ›  KajMagnus

停止、升级、启动所有Docker Stack服务?

  •  0
  • KajMagnus  · 技术社区  · 7 年前

    docker-stack.yml 文件,使用新的映像版本号更新该文件,然后启动所有服务。为了将它们一起升级,使它们始终处于最新版本。

    我该怎么做?我不想删除网络和卷我是说, docker stack rm 看起来有点过分了?及 docker service scale service-name=0

    我之所以想升级stop everything,是因为它更简单:我的应用程序中的服务不需要与其他API的不同版本兼容。一个服务的版本X永远不会运行并且必须与另一个服务的版本X-1通信(相反,所有服务都将在同一个版本X上)。它们使用相同的版本号)。

    (如果我问错了问题,请随时告诉我:-)注意:在这种特殊情况下,20-30秒的停机时间是可以的,因为所有容器立即停止升级或重新启动。这是针对Docker Swarm/Stack的,而不是Docker Compose(这样就可以了) down up

    1 回复  |  直到 7 年前
        1
  •  1
  •   BMitch    7 年前

    免责声明:我觉得这是一种错误的升级方法。它将停机时间引入设计为高可用性的系统。


    要停止服务,我可能会添加一个无法满足的约束,例如。

    docker service update \
      --constraint-add node.label.disable_service==true -d \
      ${service_name}
    

    这包括复制服务和全局计划服务。当您使用合成文件重新部署堆栈时,它将删除此约束(还应删除任何比例更改)。


    推荐文章