我试图在多个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失败,我已经搜索并尝试了,但是什么也没有。
答案 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函数,这对于某些用途可能更为方便。