Gitlab 运行程序、私有存储库、docker 执行程序不使用主机的主机文件

Dae*_*ach 5 docker gitlab-ci gitlab-ci-runner

我有一个私人 git 存储库。我的跑步者在一台单独的机器上,都是 ubuntu。当我尝试在 yml 文件中 ping $CI_REGISTRY 时,我在构建过程中看到 $CI_REGISTRY 域名未解析为正确的 IP 地址。我需要访问服务器的内部地址,而不是外部地址,因此我在运行 gitlab runner 的主机上设置了一个具有正确地址的主机文件,但执行器忽略了它。奇怪的是,它提供的地址是 cloudflare 网络上的内部地址,而不是我试图访问的主机的外部地址,就像我预期的那样,如果它正在进行 DNS 查找。

我怎样才能:

  • 强制docker执行器使用主机的hosts文件
  • 传入执行程序可以用来正确解析地址的环境变量(或其他变量)

Dae*_*ach 7

通过修改 /etc/gitlab-runner/config.toml 解决了这个问题:

[[runners]]
...
  [runners.docker]
  ...
    privileged = true
    extra_hosts = ["repo.mydomain.com:172.23.8.182"]
Run Code Online (Sandbox Code Playgroud)


Nic*_*ell 0

您需要修改容器的/etc/hosts文件,而不是主机的主机文件。最简单的方法是选择--add-host

\n

这是文档:

\n
\n

将条目添加到容器主机文件(--add-host)

\n

/etc/hosts您可以使用一个或多个标志将其他主机添加到container\xe2\x80\x99s文件中--add-host。此示例为名为 的主机添加静态地址docker

\n
$ docker run --add-host=docker:10.180.0.1 --rm -it debian\n\nroot@f38c87f2a42d:/# ping docker\nPING docker (10.180.0.1): 48 data bytes\n56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms\n56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms\n^C--- docker ping statistics ---\n2 packets transmitted, 2 packets received, 0% packet loss\nround-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms\n
Run Code Online (Sandbox Code Playgroud)\n
\n

来源。)

\n