树莓派部署的gitlab-runner报错Could not resolve host: gitlab.com如何解决
问题根因
你使用Docker类型的executor执行作业时,GitLab Runner会启动独立的Docker容器运行流水线任务,报错是该容器内部无法解析gitlab.com域名,和树莓派主机本身的网络连通性无关。
你之前配置的network_mode = "gitlab_default"仅适用于本地Docker部署GitLab服务的场景,你的场景用的是官方公共GitLab服务,本地不存在这个网络,所以会触发网络不存在的报错。
解决方案(按优先级尝试)
方案1:给作业容器配置公共DNS
修改config.toml中[runners.docker]配置段,新增DNS配置项,指定公共DNS服务器:
[runners.docker] tls_verify = false image = "node:latest" privileged = false disable_entrypoint_overwrite = false oom_kill_disable = false disable_cache = false volumes = ["/cache"] shm_size = 0 # 新增以下内容,可根据需求替换为你常用的公共DNS dns = ["8.8.8.8", "114.114.114.114"]
修改完成后执行命令重启GitLab Runner服务生效:sudo gitlab-runner restart
方案2:配置容器复用主机网络
如果方案1无效,可以让作业容器直接复用树莓派主机的网络栈,域名解析逻辑和主机完全一致,修改[runners.docker]段:
[runners.docker] # 原有配置保持不变,新增以下内容 network_mode = "host"
修改后同样重启GitLab Runner服务生效。
方案3:手动指定gitlab.com域名映射
如果以上方案都不生效,可以手动给容器配置gitlab.com的IP映射:
- 先在树莓派主机执行
ping gitlab.com获取gitlab.com的实际IP地址 - 修改
[runners.docker]段,添加配置:
[runners.docker] # 原有配置保持不变,替换下方IP为你实际ping到的gitlab.com的IP extra_hosts = ["gitlab.com:你ping到的gitlab对应的IP"]
修改后重启服务生效。
注意:需要先删除你之前配置的错误的
network_mode = "gitlab_default"配置,避免持续触发网络不存在的报错。
内容的提问来源于stack exchange,提问作者Alexy
相关产品推荐
相关产品推荐

