【问题标题】:Can we run docker inside a docker container which is running in a virtual-box of Ubuntu 18.04?我们可以在 Ubuntu 18.04 的虚拟盒中运行的 docker 容器中运行 docker 吗?
【发布时间】:2026-01-24 17:00:01
【问题描述】:

我想在另一个 docker 容器中运行 docker。我的主容器在我的 Windows 10 上的 OS Ubuntu 18.04 的虚拟机中运行。在尝试运行它时,它向我显示:

无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。 docker 守护进程是否正在运行?

我该如何解决这个问题?

【问题讨论】:

  • 您是否在外部 docker 容器上启用了privileged 模式?
  • docker 客户端在哪里运行?在 Windows 中?在您的 Ubuntu 虚拟机中?另外,您运行什么命令导致错误发生?简单地复制/粘贴您运行的命令和终端的输出可能会有所帮助。
  • Docker 客户端正在我的 Ubuntu VM 中运行。我只是运行一个简单的“docker run hello-world”命令来检查它是否运行正常。我没有启用特权模式。
  • 我正在使用这个 docker 命令在我的 Ubuntu 虚拟机中的 docker 容器中运行电流:docker run --name efserver --hostname=efserver -d -p 8080:8080 -p 9990:9990 -p 7800:7800 -p 7070:80 -p 443:443 -p 8443:8443 -p 8200:8200 -i -t ecdocker/eflow-ce。在这个 docker 容器中,我想安装并运行 docker,以便我在 Electric-flow 中的 CI/CD 管道可以访问和使用 docker 命令。

标签: docker virtual ubuntu-18.04 electric-cloud


【解决方案1】:

是的,您可以这样做。检查 docker 网页上的 dind (docker in docker) 如何实现:https://hub.docker.com/_/docker

您的错误表明顶层容器中的 dockerd 没有运行,或者您没有在依赖容器上挂载 docker.sock 以与运行在顶层容器上的 dockerd 通信。

【讨论】:

    【解决方案2】:

    我正在使用这个 docker 命令在我的 Ubuntu 虚拟机中的 docker 容器中运行电流: docker run --name efserver --hostname=efserver -d -p 8080:8080 -p 9990:9990 -p 7800 :7800 -p 7070:80 -p 443:443 -p 8443:8443 -p 8200:8200 -i -t ecdocker/eflow-ce。在这个 docker 容器中,我想安装并运行 docker,以便我在electric-flow 中的 CI/CD 管道可以访问和使用 docker 命令。

    从你上面的描述来看,ecdocker/eflow-ce是你的CI/CD解决方案容器,你只想在这个容器中使用docker command,那么你不需要dind解决方案。您可以只访问容器的主机 docker 服务器。

    如下:

    docker run --privileged --name efserver --hostname=efserver -d -p 8080:8080 -p 9990:9990 -p 7800:7800 -p 7070:80 -p 443:443 -p 8443:8443 -p 8200:8200 -v $(which docker):/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -i -t ecdocker/eflow-ce
    

    与您的旧命令相比:

    • 添加--privileged
    • 添加-v $(which docker):/usr/bin/docker,即可在容器中使用docker client
    • 添加-v /var/run/docker.sock:/var/run/docker.sock,即可在容器中使用客户端访问宿主机的docker daemon。

    【讨论】:

      最近更新 更多