GitLab - gitlab / gitlab-ce里面的Docker会出错

时间:2017-12-31 03:59:29

标签: docker gitlab-ci gitlab-ci-runner

我在docker上运行gitlab/gitlab-ce容器。然后,在里面,我想通过提供docker作为跑步者来运行gitlab-runner服务。我运行的每一个命令(例如docker ps,docker container ..),我都会收到此错误:

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

P.s:我已经尝试service docker restart,重新安装了docker和gitlab-runner。

2 个答案:

答案 0 :(得分:1)

默认情况下,运行gitlab的docker容器无法访问主机上的docker守护程序。 docker客户端使用套接字连接与docker守护进程通信。您的容器中没有此套接字。

您可以使用泊坞窗卷使主机的套接字在容器中可用:

docker run -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-ce

之后,您将能够使用容器中的docker客户端与主机上的docker守护程序进行通信。

答案 1 :(得分:1)

default,无法运行docker-in-docker(作为安全措施)。

您可以在特权模式下运行Gitlab容器,安装套接字(-v /var/run/docker.sock://var/run/docker.sock)然后重试。

此外,还有一个Docker-in-docker镜像,用于Docker-in-docker使用modified。您可以阅读here并创建自己的自定义gitlab/gitlab-ce图片。

在这两种情况下,最终结果都与docker-in-docker不是真正的docker-in-docker相同,但是让您从Docker容器中管理主机docker-engine。因此,只需在同一主机上运行Gitlab-ci-runner docker image就可以获得相同的结果并且更容易。