GitLab - Docker inside gitlab/gitlab-ce 出错

GitLab - Docker inside gitlab/gitlab-ce get errors

我正在 运行docker 上安装一个 gitlab/gitlab-ce 容器。然后,在其中,我想 运行 一个 gitlab-运行ner 服务,通过提供 docker 作为 运行ner。我 运行 的每个命令(例如 docker ps、docker 容器 ..),我都会收到此错误:

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

P.s:我试过 service docker restart,重新安装 docker 和 gitlab-运行ner.

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

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

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

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

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

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

此外,还有一张 docker-in-docker 图像已经是 modified for docker-in-docker usage. You can read up on it here and create your own custom gitlab/gitlab-ce 图像。

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