0

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

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

我该如何解决这个问题?

4

2 回答 2

0

我正在使用以下 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 守护进程。
于 2019-05-06T05:21:39.503 回答
0

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

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

于 2019-05-06T04:31:54.430 回答