在docker swarm中的服务的所有副本上运行命令

时间:2018-01-19 05:36:05

标签: docker docker-swarm

我有一个具有4个节点的docker swarm设置,并在全局模式下将Pumba部署到swarm设置。之后,我在swarm上运行我的应用程序容器,在不同的节点上使用副本。我想将kill或netem命令发送到所有节点中的所有Pumba容器。

现在,我能够做到的唯一方法是在创建服务时指定命令:

docker service create --name PUMBA --mode=global   --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock  gaiaadm/pumba:master pumba --random --interval 10s kill re2:"^customer-api*" --signal SIGTERM

或者通过进入每个主机并对容器执行exec并运行命令:

 docker exec -i $(docker ps| grep pumba|cut -d 'g' -f1 ) pumba netem --duration 60s delay --time 3000  --jitter 40 --distribution normal re2:"^${name[i]}*" > /dev/null 2>&1 &

我正在为此创建一个bash脚本。有没有办法可以将命令传递给服务,以便它在所有全局副本中反映出来?

1 个答案:

答案 0 :(得分:0)

我可以使用以下命令向Pumba容器发送新命令

docker service update PUMBA --args "pumba --random --interval 5s kill re2:"^customer*" --signal SIGTERM"