GitLab-GitLab/GitLab ce中的Docker获取错误

GitLab-GitLab/GitLab ce中的Docker获取错误,docker,gitlab-ci,gitlab-ci-runner,Docker,Gitlab Ci,Gitlab Ci Runner,我在docker上运行一个容器。然后,在它里面,我想运行一个gitlab runner服务,提供docker作为runner。我运行的每个命令(例如docker ps、docker container…)都会出现以下错误: 无法连接到位于的Docker守护程序unix:///var/run/docker.sock. 是 docker守护进程正在运行 注意:我尝试了服务docker restart、reinstal docker和gitlab runner。默认情况下,运行gitlab的docke

我在docker上运行一个容器。然后,在它里面,我想运行一个gitlab runner服务,提供docker作为runner。我运行的每个命令(例如docker ps、docker container…)都会出现以下错误:

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


注意:我尝试了
服务docker restart
、reinstal docker和gitlab runner。

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

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

docker run -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-ce
之后,您将能够使用容器中的docker客户端与主机上的docker守护程序进行通信。

由于无法在docker中运行docker(作为安全措施)

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

此外,docker映像中还有一个docker,它是docker在docker中使用的。您可以阅读它并创建自己的自定义图像


在这两种情况下,最终结果将与docker中的docker相同,docker并不是docker中的docker,而是允许您从docker容器中管理主机docker引擎。因此,在同一台主机上运行具有相同的结果,并且更容易

您的docker守护进程似乎没有正常启动(这可能是由一些错误(如cgroups)引起的),也许您可以阅读docker守护进程的日志以解决问题~?为什么您的gitlab运行程序必须与gitlab位于同一个容器中?这种做法与Docker的做法背道而驰。更好的方法是在单独的容器中运行runner,然后将两个容器连接在一起。