现象
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,是否能够解决这个错误。