无需停机即可更新服务中的映像

Mar*_*ark 3 docker docker-compose docker-swarm

我正在 Docker Swarm 上运行服务。这是我为部署服务所做的:

docker swarm init
docker stack deploy -c docker-compose.yml MyApplication
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml 的内容

version: "3"
services:
    web:
        image: myimage:1.0
        ports:
            - "9000:80"
            - "9001:443"
        deploy:
            replicas: 3
            resources:
                limits:
                    cpus: "0.5"
                    memory: 256M
                restart_policy:
                    condition: on-failure
Run Code Online (Sandbox Code Playgroud)

假设我更新了应用程序并构建了一个新图像myimage:2.0。在不停机的情况下将新版本的映像部署到服务的正确方法是什么?

Dou*_*nda 5

实现这一目标的一种方法是:

我有一些关于这个主题的例子:


有了这个,你可以简单地docker stack deploy...再次运行。如果服务有变化,它将被更新。


Kil*_*ian 2

您可以使用该命令docker service update --image,但它将启动一个隐式比例为 0/1 的新容器。

停机时间取决于您的应用程序。