1

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

我怎么能:

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

2 回答 2

2

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

[[runners]]
...
  [runners.docker]
  ...
    privileged = true
    extra_hosts = ["repo.mydomain.com:172.23.8.182"]
于 2020-07-18T15:56:04.430 回答
0

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

这是文档:

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

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

$ docker run --add-host=docker:10.180.0.1 --rm -it debian

root@f38c87f2a42d:/# ping docker
PING docker (10.180.0.1): 48 data bytes
56 bytes from 10.180.0.1: icmp_seq=0 ttl=254 time=7.600 ms
56 bytes from 10.180.0.1: icmp_seq=1 ttl=254 time=30.705 ms
^C--- docker ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 7.600/19.152/30.705/11.553 ms

来源。)

于 2020-07-17T02:25:06.873 回答