我在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。
答案 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就可以获得相同的结果并且更容易。