如何对多个容器运行单个docker exec命令

时间:2019-08-06 09:16:42

标签: docker docker-exec

我当前正在随时运行由同一代理构建的2至6个docker容器的mac mini托管。容器充当构建代理,但有时构建会失败并且无法正确清理。这将导致文件剩余,从而占用空间。

我想设置并执行cron作业,该作业每晚运行,对每个容器执行docker exec命令并删除我的构建目录。

我尝试了简单的方法: docker exec -it `docker ps -q` ls /root/build-dir

但这失败了: OCI runtime exec failed: exec failed: container_linux.go:344: starting container process caused "exec: \"ee89958ce4bc\": executable file not found in $PATH": unknown

但是这可行: docker exec -it ee89958ce4bc ls /root/build-dir

有没有一种方法可以对多个容器使用docker exec而无需编写复杂的脚本来遍历docker ps中的容器ID?

注意:我不想更改docker容器并在其中添加cron作业。我希望它在主机上运行

1 个答案:

答案 0 :(得分:0)

您可以使用for loop

for con in `docker ps -q` ; do echo "$con" && docker exec -it $con ls -l; done