Gitlab runner、私有repo、docker执行器未使用主机的hosts文件

svujldwt  于 2022-11-22  发布在  Docker
关注(0)|答案(4)|浏览(148)

我有一个私有的git repo。我的runner在另一台机器上,都是ubuntu。当我试着在yml文件中ping $CI_REGISTRY时,我发现在构建过程中$CI_REGISTRY域名没有解析到正确的IP地址。我需要命中服务器的内部地址,而不是外部地址,所以我在运行gitlab runner的主机上设置了一个主机文件,该文件具有正确的地址,但执行程序忽略了它。奇怪的是,它得到的地址是cloudflare网络上的内部地址,而不是我试图访问的主机的外部地址,如果它正在进行DNS查找,我会认为这是一个外部地址。
我可以怎样:

  • 强制Docker执行器使用主机的hosts文件
  • 传入一个环境变量(或其他东西),执行器可以使用它来正确解析地址
j9per5c4

j9per5c41#

此问题已通过修改/etc/gitlab-runner/config.toml得到解决:

[[runners]]
...
  [runners.docker]
  ...
    privileged = true
    extra_hosts = ["repo.mydomain.com:172.23.8.182"]
i1icjdpr

i1icjdpr2#

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

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

您可以使用一个或多个--add-host标志将其他主机添加到容器的/etc/hosts文件中。此示例为名为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

(来源。)

q35jwt9p

q35jwt9p3#

我尝试了几个解决方案,但没有工作,直到我简单地输入ip+端口,而不是我的假域名

Enter the GitLab instance URL (for example, https://gitlab.com/):
[http://gitlab_ip:port]
.....
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

有时候,在深入研究stackoverflow之前,值得思考一下:D

mec1mxoz

mec1mxoz4#

码头执行人:

[[runners]]
  ...
  executor = "docker"
  [runners.docker]
    extra_hosts = ["gitlab.someweb.com:10.0.1.1"]

Kubernetes遗嘱执行人:

[[runners]]
  ...
  executor = "kubernetes"
  [runners.kubernetes]
    [[runners.kubernetes.host_aliases]]
      ip = "10.0.1.1"
      hostnames = ["gitlab.someweb.com"]

相关问题