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

问题描述 投票:0回答:3

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

docker docker-swarm
3个回答
6
投票

您可以使用类似

的脚本
docker service update -d service1
docker service update -d service2
...

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


0
投票

使用群模式,您可以立即更新堆栈中的所有服务

docker stack deploy --compose-file docker-compose.yml <stack-name>

https://docs.docker.com/engine/reference/commandline/stack_deploy/


0
投票
$ docker service ls | awk '{print $2}' | xargs -n1 docker service update --force

解释一下:

该命令将管道配置为“获取所有服务”->“获取其服务名称”->“执行命令并传递上一个命令输出中的每一行作为参数”。

定制:

  • 如果您想在 Docker 中使用服务 id,请将
    awk '{print $2}'
    替换为
    awk '{print $1}'
  • sudo docker service update --force
    替换为您要对列表中的每个服务执行的任何命令。
  • grep
    docker service ls
    之间添加
    awk
    以过滤您案例中的服务,以便按图像过滤(将 ubuntu:latest 替换为您的图像):
    $ docker service ls | grep ubuntu:latest | awk '{print $2}' | xargs -n1 docker service update --force
    
  • sudo
    之前添加
    docker service ...
    ,以防出现docker.sock错误
  • 如果不需要,请删除
    --force
© www.soinside.com 2019 - 2024. All rights reserved.