![](/img/trans.png)
[英]start multiple docker containers with a single command line shell script (without docker-compose)
[英]How to run a shell command on all containers of a replicated docker-compose service?
我正在使用 docker 运行 spark 工作人员,使用 docker-compose 设置进行复制:
version: '2'
services:
spark-worker:
image: bitnami/spark:latest
environment:
- SPARK_MODE=worker
- SPARK_MASTER_URL=spark://1.1.1.1:7077
deploy:
mode: replicated
replicas: 4
例如,当我运行docker-compose exec spark-worker ls
时,它通常只在第一个副本上运行。 有没有办法将这些命令广播到所有副本?
docker-compose version 1.29.2, build 5becea4c
Docker version 20.10.7, build f0df350
对此没有内置工具,但您可以相当容易地构建一些东西。 例如:
docker ps -q --filter label=com.docker.compose.service=spark-worker |
xargs -ICID docker exec CID ls
我会提出一个比@larsks 提出的更简单的命令,它利用docker-compose
命令本身。
SERVICE_NAME=spark-worker
for id in $(docker-compose ps -q $SERVICE_NAME); do
docker exec -t $id "echo" "hello"
done;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.