我正在服务器上运行多个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:
docker ps -q
511c76a25dcc 995bd453c467
使用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