Scaleway部署的GitLab CI/CD任务出现无法解析仓库主机域名错误
排查路径
1. 优先排查Docker DinD服务启动失败问题
日志中明确输出DinD服务mount: permission denied报错,这是触发后续执行环境异常的核心前置问题:
- 查看GitLab Runner配置文件
/etc/gitlab-runner/config.toml,确认Docker执行器的privileged参数是否为true,DinD服务必须开启特权模式才能正常挂载内核相关文件系统 - 执行
groups gitlab-runner命令,验证gitlab-runner用户是否已加入docker用户组,是否具备执行Docker命令的权限
2. 排查域名解析可用性
- 在Runner所在Ubuntu实例本地执行
nslookup 4fdbbd17-693b-45c1-bb2e-07b18837958a.pub.cloud.scaleway.com,确认宿主机本身能否正常解析该GitLab域名 - 检查Scaleway实例安全组、私有网络DNS规则,确认同区域实例是否允许解析该公有域名,是否存在DNS拦截策略
- 手动启动Docker测试容器验证容器内解析能力:
docker run --rm alpine nslookup 4fdbbd17-693b-45c1-bb2e-07b18837958a.pub.cloud.scaleway.com,确认Docker默认网络是否存在DNS异常
3. 排查GitLab Runner克隆配置
检查Runner配置中clone_url参数是否和GitLab实际可访问地址一致,是否存在配置错误。
解决路径
1. 修复DinD服务启动异常
修改/etc/gitlab-runner/config.toml对应Runner配置段,开启特权模式:
[[runners]] executor = "docker" [runners.docker] privileged = true volumes = ["/certs/client", "/cache"]
修改完成后执行sudo gitlab-runner restart重启服务生效。
2. 修复域名解析故障
- 若宿主机本身无法解析该域名,可直接在Runner配置中指定GitLab的内网IP作为克隆地址,绕过域名解析:
[[runners]] clone_url = "http://<你的GitLab实例内网IP>/"
- 若仅Docker容器内无法解析,可在Runner配置中指定自定义DNS服务器:
[[runners]] [runners.docker] dns = ["1.1.1.1", "8.8.8.8"]
3. 临时验证方案
如需快速验证CI/CD流程可用性,可在项目.gitlab-ci.yml中添加前置脚本绑定hosts:
before_script: - echo "<GitLab实例IP> 4fdbbd17-693b-45c1-bb2e-07b18837958a.pub.cloud.scaleway.com" >> /etc/hosts
内容的提问来源于stack exchange,提问作者Nedislav Kolev
相关产品推荐
相关产品推荐

