我如何获得一个Docker Gitlab CI运行器来访问其父主机上的Git?

Gitlab在我们的内部networkinghttp://gitlab上设置

在同一台机器上的Docker容器无法连接到它。

如何configurationdocker,以便它知道gitlab是它的父类?


当Gitlab CI尝试运行一个构build(在一个Docker容器内)时,这个问题展现出来了:

克隆到'/ builds / ns / project'…致命:无法访问' http:// gitlab-ci-token:xxxxxx@gitlab/ns/project.git/ ':无法parsing主机'gitlab'

我尝试添加networking的DNS服务器到/etc/default/docker DOCKER_OPTS中的DOCKER_OPTS无济于事。

根据GitLab CI Runner高级configuration ,您可以尝试在GitLab CI运行器中使用extra_hosts参数。 在/etc/gitlab-runner/config.toml

 [[runners]] url = "http://gitlab/ci" token = "TOKEN" name = "my_runner" executor = "docker" [runners.docker] host = "tcp://<DOCKER_DAEMON_IP>:2375" image = "..." ... extra_hosts = ["gitlab:192.168.0.39"] 

用这个例子,当运行git的容器内部的git会尝试从gitlab克隆时,它将使用192.168.0.39作为这个主机名的IP。

您可以使用--dns标志将容器dnsconfiguration为--dns docker runhttps://docs.docker.com/engine/reference/run/#network-settings ),但默认情况下它应该使用主机dns。

如果您的Gitlab安装也作为Docker容器运行,只需将gitlab-runner链接到gitlab容器即可:

 docker run -d --name gitlab-runner --restart always --link gitlab \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:latest 

这样,Docker负责在gitlab-runner中提供主机“gitlab”。