【问题标题】:How to update docker stack without restarting all services如何在不重新启动所有服务的情况下更新 docker stack
【发布时间】:2017-05-18 15:30:26
【问题描述】:

我有一个 swarm 集群,其中部署了不同的技术 docker。 (Zookeeper、Kafka、Elastic、Storm 和自定义 Web 应用程序)

Web 应用程序经历了巨大的变化,每次 Web docker 更改时都必须更新堆栈。 Elasticsearch 镜像会不时更新。

当我运行 docker stack deploy 时,它会重新启动所有现有的甚至没有更改的 docker 服务。这阻碍了整个堆栈,并且整个应用程序都存在停机时间。 Docker 栈没有更新选项。

有人对此有解决方案吗?

【问题讨论】:

    标签: docker docker-swarm docker-stack


    【解决方案1】:

    docker service update --image 可以解决问题。

    检查docker service update docs

    【讨论】:

    • docker 服务将更新单个图像。每次我需要指定需要更新的图像。这将是一项非常痛苦的任务。
    • 正在寻找解决方案,其中 docker stack 只更新已修改的图像,而不是整个堆栈
    • 当我做 docker stack deploy 时,未受影响的容器不会改变。可能是您在机器上提取了较新版本的图像吗?但我知道的唯一能让你 100% 确定只有一项服务受到影响的方法是 docker service update...
    • 这对我有用。 docker service update --image demo.net/library/cf demo_web
    【解决方案2】:

    使用更改的配置(docker-compose.yml 文件)重新部署堆栈可解决问题,请参阅https://docs.docker.com/engine/reference/commandline/stack_deploy/#extended-description。 他们在那里说“从 swarm 上的 compose 或 dab 文件创建和更新堆栈。”我也没有看到任何命令,如 'docker stack update '。这样就可以解决问题了。

    【讨论】:

    • 问题是:“[...] 更新 docker stack 无需重新启动所有服务
    • 此命令是“仅重启已更改”的服务,还是重启所有服务而不考虑更改?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多