Docker Swarm-我应该在部署堆栈之前移除堆栈吗?

Docker Swarm-我应该在部署堆栈之前移除堆栈吗?,docker,deployment,docker-swarm,Docker,Deployment,Docker Swarm,我对Docker并不陌生,但对Docker Swarm来说我是新来的 我们的部署通常包括使用最新代码构建一个新的docker映像,将其推送到注册表,然后针对一个compose文件运行docker stack deploy 我的问题是,在运行部署之前是否需要运行docker stack rm$stack_NAME 我不确定swarm的deploy命令是否足够聪明,可以判断docker映像是否已更改,它是否需要执行某些操作。在不删除旧堆栈的情况下重新部署相同的堆栈名称。如果希望从compose文件中

我对Docker并不陌生,但对Docker Swarm来说我是新来的

我们的部署通常包括使用最新代码构建一个新的docker映像,将其推送到注册表,然后针对一个compose文件运行docker stack deploy

我的问题是,在运行部署之前是否需要运行docker stack rm$stack_NAME


我不确定swarm的deploy命令是否足够聪明,可以判断docker映像是否已更改,它是否需要执行某些操作。

在不删除旧堆栈的情况下重新部署相同的堆栈名称。如果希望从compose文件中删除服务,则需要包含-prune选项。对于任何未更改的服务,swarm将保持不变。但是对于任何有更改的服务,包括注册表服务器上的新映像,您将看到根据您在撰写文件中指定的执行滚动更新

当您使用默认VIP连接到服务时,只要该服务存在,即使在滚动更新中,VIP也会保留相同的IP地址,以便连接到您的服务的其他容器可以这样做,而不必担心过时的DNS引用。通过复制服务,滚动更新可以防止任何可见的中断。这两者的结合为您提供了删除和重新创建swarm堆栈时所不具备的高可用性