docker service update --force --image ${image} ${service}
只会更新一项服务,但我有多个服务依赖于同一个映像,我需要同时更新它们。
您可以使用类似
的脚本docker service update -d service1
docker service update -d service2
...
-d
,分离模式,使命令立即退出,因此在后台您的服务将同时更新。
使用群模式,您可以立即更新堆栈中的所有服务
docker stack deploy --compose-file docker-compose.yml <stack-name>
https://docs.docker.com/engine/reference/commandline/stack_deploy/
$ docker service ls | awk '{print $2}' | xargs -n1 docker service update --force
解释一下:
该命令将管道配置为“获取所有服务”->“获取其服务名称”->“执行命令并传递上一个命令输出中的每一行作为参数”。
定制:
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
。