如何在docker swarm中同时更新多个服务

如何在docker swarm中同时更新多个服务,docker,docker-swarm,Docker,Docker Swarm,docker服务更新--force--image${image}${service}将只更新一个服务,但我有几个服务依赖于同一个映像,我需要同时更新它们。您可以使用如下脚本 docker service update -d service1 docker service update -d service2 ... -d分离模式使命令立即退出,因此在后台您的服务将同时更新。使用swarm模式,您可以一次更新堆栈中的所有服务 docker堆栈部署--编写文件docker-compose.yml

docker服务更新--force--image${image}${service}
将只更新一个服务,但我有几个服务依赖于同一个映像,我需要同时更新它们。

您可以使用如下脚本

docker service update -d service1
docker service update -d service2
...

-d
分离模式使命令立即退出,因此在后台您的服务将同时更新。

使用swarm模式,您可以一次更新堆栈中的所有服务

docker堆栈部署--编写文件docker-compose.yml


您是否有任何理由需要同一映像的多个服务,而不是使用一个服务并将其扩展到与当前服务相同数量的副本?这样,您只需要更新一个服务,并且作为服务一部分的所有容器,无论它们位于哪个节点上,都将更新为使用新映像。一个服务用于django后端,另一个服务用于芹菜工人。它们共享相同的源代码,这就是为什么具有相同的映像。docker机器不会将它们放入队列并逐个调用?@Aiven它们是并行执行的,就像您执行“docker stack deploy”一样。是否有方法检查服务是否在分离模式下成功聚合?(除了不时检查
docker ps
/
docker service ls
)不幸的是,您必须手动执行此操作,但如果您具有良好的回滚策略,则故障不会导致服务器停机,所以这是可以接受的。
docker stack deploy
太过分了:)这就是为什么我使用
service update
这只更新具有更新映像的容器。@Aiven,实际上不是这样。该命令将使用最新的映像版本更新所有服务。更新该命令的难点在于,它重置了我在部署堆栈后缩放的副本数量。@WildDev是否需要向撰写文件中添加一些内容?因为根据我的经验,
stack deploy
总是重新加载所有内容。我可以在日志和
服务ls
中看到它(如果我在重新部署后立即运行它)