【问题标题】:Docker: Update container with ZERO downtimeDocker:以零停机时间更新容器
【发布时间】:2021-06-04 15:16:16
【问题描述】:

我有一个使用 docker 和 docker-compose 运行的 discord 机器人,如何在不停机的情况下更新容器的映像?对我来说非常重要的是,机器人不离线。 我的 docker-compose.yml:

    version: '3.0'
services:
    bot:
        image: myimage:1.0
        restart: always

因此,例如,如果我使用 2.0 版而不是 1.0 版构建新映像,我想(手动)更新容器,而无需程序停机。

感谢您的回复和帮助:)

【问题讨论】:

    标签: docker docker-compose discord.js


    【解决方案1】:

    不幸的是,在单个 istance 服务器上使用 docker 是不可能的。

    在大规模架构中,您必须依赖编排器(如 Kubernetes),它允许您采用不同的 deployment strategis。一个例子是ramped deployment strategy,它允许您进行滚动更新。

    在这种情况下,暂时关闭的节点由旧的尚未更新的版本提供服务。当所有节点都被升级时,该过程将终止。

    【讨论】:

      【解决方案2】:

      您唯一的选择是在您的机器人服务前设置一个反向代理。 在这种情况下,您可以:

      1. 使用新版本的机器人创建一个新容器
      2. 当它运行时,更新反向代理配置,以便转发来自新容器的流量
      3. 移除旧容器

      这样,反向代理(而不是 docker)授予无停机时间。

      无论如何,如果它不是一项关键服务,我会接受停机时间,因为部署新版本要容易得多。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多