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

时间:2018-08-22 17:33:52

标签: docker deployment docker-swarm

我不是Docker的新手,但是我是Docker Swarm的新手。

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

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

我不确定swarm的deploy命令是否足够聪明,以至于无法确定docker映像已更改并且需要执行某些操作。

1 个答案:

答案 0 :(得分:1)

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

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