我不是Docker的新手,但我是Docker Swarm的新手。
我们的部署通常包括使用最新的代码构建新的docker镜像,将其推送到注册表,然后对合成文件运行docker stack deploy
。
我的问题是,在运行部署之前,我需要运行docker stack rm $STACK_NAME
吗?
我不确定swarm的部署命令是否足够智能,以确定docker镜像是否已更改,以及它是否需要执行某些操作。
发布于 2018-08-23 08:25:41
您可以重新部署相同的堆栈名称,而不删除旧堆栈。如果您希望从组合文件中删除服务,则需要包含--prune
选项。对于任何未更改的服务,swarm将不对其进行修改。但是对于发生更改的任何服务,包括注册表服务器上的新映像,您将看到根据您在组合文件中指定的update config执行的滚动更新。
当您使用默认VIP连接到服务时,只要服务存在,即使在滚动更新中,VIP也将保持相同的IP地址,以便连接到您的服务的其他容器可以这样做,而不必担心过时的DNS引用。使用复制的服务,滚动更新可以防止任何可见的中断。两者的结合为您提供了删除和重新创建swarm堆栈时所不具备的高可用性。
https://stackoverflow.com/questions/51972295
复制相似问题