首页 文章

如何让Docker Gitlab CI运行器在其父主机上访问Git?

提问于
浏览
11

Gitlab在我们的内部网络上设置http://gitlab

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

如何配置docker以便它知道gitlab是它的父级?


当Gitlab CI尝试运行构建(在Docker容器内)时,问题就出现了:

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

我've tried adding the network'的DNS服务器 DOCKER_OPTS/etc/default/docker 无济于事 .

3 回答

  • 13

    根据GitLab CI Runner Advanced configuration,您可以尝试在GitLab CI运行器中使用 extra_hosts param . 在 /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的容器内部将尝试从gitlab克隆时,它将使用 192.168.0.39 作为此主机名的IP .

  • 0

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

  • 0

    如果您的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' .

相关问题