如何在不同的容器中运行相同的命令?

时间:2019-08-18 19:28:46

标签: linux docker

我试图在多个Docker容器中一次执行同一命令。

仅对一个容器实例工作运行命令:

sudo docker exec -it 0c3108d66666 mkdir newfolder && sudo touch newfile.txt

我想运行指定更多或更多容器ID的命令,类似于:

sudo docker exec -it 0c3108d666666 cf65935c7777 mkdir newfolder && sudo touch newfile.txt

这会产生一个错误exec失败,我已经搜索并尝试了,但是什么也没有。

2 个答案:

答案 0 :(得分:1)

不仅docker exec命令仅接受一个 容器参数,而且我什至没有看到在moby/moby中请求该特定功能的问题。

这意味着您需要获取所需的容器列表,在该列表上循环并调用docker exec命令(possibly in background,以便尽可能并行地启动它们)

答案 1 :(得分:1)

显而易见的解决方案是外壳循环。棘手的部分是管理退出代码,这需要使用子shell:

(for container in 0c3108d666666 cf65935c7777; do
   sudo docker exec -it $container mkdir newfolder || exit;
 done) && sudo touch newfile.txt

您还可以编写一个无需子shell即可执行此操作的shell函数,这对于某些用途可能更为方便。