修复 gitlab runner dns 错误导致的远程服务器连接失败

现象

fatal: unable to access .git: Could not resolve host

查看设置

查看容器 gitlab-runner 的 dns 设置

docker exec -it gitlab-runner bash
cat /etc/resolv.conf

重置 gitlab-runner 的 dns 设置

欲将宿主机中的 resolv.conf 文件用 docker cp 拷贝进 gitlab-runner 的 /etc/resolv.conf 位置。

docker cp ./resolv.conf gitlab-runner:/etc/resolv.conf

问题仍在

然而,runner 运行的时候会启动新的过程中的容器,这个新建的临时的容器的 dns 设置与 gitlab-runner 容器的 dns 设置不一。

如何修改临时容器的 dns 设置

修改 config.toml

进入 gitlab-runner 容器,可以找到 runner 的配置文件 /etc/gitlab-runner/config.toml

关键的修改

将 ./config.toml 拷贝出来进行编辑。在 [runners.docker] 选项下增加 network_mode = "host" 选项。

  [runners.docker]
    #...
    network_mode = "host"

完成修改

将编辑好的 ./config.toml 拷贝进容器中的指定位置

docker cp  ./config.toml gitlab-runner:/etc/gitlab-runner/config.toml

终极检查

重新运行(retry) 执行失败的 job,是否能够解决这个错误。

参考文档

关于本文如您有任何想法和意见,欢迎与我们联系,邮箱地址zhi@uqugu.com
您对本文有什么看法,喜欢或者不喜欢都可以发表意见。