我们可以在Docker容器中运行docker容器吗?该容器在Ubuntu 18.04的虚拟框中运行?

时间:2019-05-06 04:23:57

标签: docker virtual ubuntu-18.04 electric-cloud

我想在另一个Docker容器中运行docker。我的主容器正在Windows 10上的OS Ubuntu 18.04的virtualbox中运行。在尝试运行它时,它显示为:

无法通过unix:///var/run/docker.sock连接到Docker守护程序。 docker守护程序正在运行吗?

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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,以便我的CI / CD管道在电流程中可以访问和使用docker命令。

根据您的上述描述,ecdocker/eflow-ce是您的CI / CD解决方案容器,而您只想在此容器中使用docker command,则不需要垃圾解决方案。您只能访问容器的主机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守护程序。