当前位置: 首页 > 面试题库 >

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

华恩
2023-03-14
问题内容

我正在服务器上运行多个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

问题答案:

使用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


 类似资料:
  • 在刚刚开始使用容器的工作中。在设置过程中花了10秒钟的时间,我用podman构建了一个RHEL 8系统。有两个不同的非根用户在运行容器。每个用户看到正在运行的容器时运行“podman ps”,总计3个。root看不到任何正在运行的容器。为什么?root不应该能够看到与所有者相同的正在运行的容器吗?我没有发现任何迹象表明这种情况应该发生,或者只是一个新手的错误。任何文档都会有所帮助。

  • 我记得用过 几个月前没有问题地链接命令,但现在这不起作用了,我得到了以下输出: 什么改变了?如何在一行中删除所有Docker运行容器?如果有用的话,我正在Windows ;10上使用Docker for Windows(本机与Hyper-V一起使用,而不是与VirtualBox一起使用),我使用的命令在以前的Windows 8 Docker工具箱安装中运行良好。

  • 问题内容: 是否可以备份正在运行的Docker容器?该命令适合这样做吗? 问题答案: 一位朋友发表了评论 您好Slava,很抱歉您的问题已关闭。作为记录,Slava谈论的是docker.io,这是Linux容器的运行时。是的,这是一种合适的方法。它将生成整个容器文件系统状态的压缩包,并将其转储到stdout上。所以 将产生可用的tarball。您可以使用以下命令重新导入压缩包 请注意,原始元数据(

  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • 简而言之:我想删除docker映像,但是如果我这样做,它会告诉我不能删除它,因为该映像正在被运行的容器使用。但是据我所知,根本没有容器在运行。 详细信息:我调用查看调用图像。通过这种方式,我确定了要删除的图像ID,并调用,其中{ID}是应该删除的字符串(它适用于其他图像,因此到目前为止我非常有信心)。我得到的答复是: 来自守护程序的错误响应:冲突:无法删除{ID}(无法强制)-运行容器08815c

  • 我有一个在主机上运行的docker容器,它是通过标准的“docker run…”命令启动的。它运行的网络是“directory_default”的默认名称,其中“director”是当前目录的名称。 我还有一个docker compose文件(在同一台主机上),它包含另一个容器定义,需要访问已经运行的容器。然而,当运行撰写文件时,我总是看到一个错误,指出网络无法访问。 读取无法链接到由docker