一尘不染

所有正在运行的容器上的Docker exec

docker

我正在服务器上运行多个docker容器,并且需要对所有容器上的存储库执行git pull。

我试过使用此:

docker exec $(docker ps -q) bash -c "cd /var/www/html && git pull"

但是它会出错:

OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "exec: \"606a1083d0be\": executable file not found in $PATH": unknown

它曾经工作过,但是后来突然停止工作,没有明显原因(我没有更改任何docker配置)

注意:的输出docker ps -q仅是容器ID:

511c76a25dcc
995bd453c467

阅读 280

收藏
2020-06-17

共1个答案

一尘不染

使用Docker exec可以一次在容器上运行该命令,但是从您要在所有正在运行的容器上运行该命令的问题出发,就可以了。

    for containerId in $(docker ps -q)
    do
        docker exec -it $containerId bash -c 'cd /var/www/html && git pull'
    done

我假设git已经安装在所有正在运行的容器中,并且全部基于bash

或更紧凑的形式可以是

for i in `docker ps -q`; do docker exec -it $i bash -c 'cd /var/www/html && git pull'; done
2020-06-17