Gitlab在http://gitlab
的内部网络上设置同一台机器上的Docker容器无法连接到它。
如何配置docker以便它知道gitlab是它的父级?
当Gitlab CI尝试运行构建(在Docker容器内)时,问题就出现了:
克隆到' / builds / ns / project' ...致命:无法访问 ' http://gitlab-ci-token:xxxxxx@gitlab/ns/project.git/':无法做到 解决主持人' gitlab'
我已尝试将网络的DNS服务器添加到$stmt = $pdo->prepare("SELECT first_name, .......,:member");
$stmt->execute(array(":member"=>$_GET['member']));
中的DOCKER_OPTS
,但无济于事。
答案 0 :(得分:13)
根据GitLab CI Runner Advanced 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的容器内部将尝试从 gitlab 克隆时,它将使用192.168.0.39
作为此主机名的IP。
答案 1 :(得分:0)
您可以使用--dns
标记将容器dns配置为docker run
(https://docs.docker.com/engine/reference/run/#network-settings),但默认情况下应使用主机dns。
答案 2 :(得分: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负责制作主机&#39; gitlab&#39;可在gitlab-runner中找到。