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



我对 Docker 并不陌生,但我对 Docker Swarm 很陌生。

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

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

我不确定 swarm 的部署命令是否足够智能,可以确定 docker 映像已更改并且需要执行某些操作。

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

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

最新更新