You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab Runner上传Artifacts时出现no such host连接错误求助

问题解决:GitLab Runner上传Artifacts失败+拉取代码超时

问题根源分析

  1. Artifacts上传失败:错误中出现的Hetzner递归DNS地址,说明构建容器在解析gitlab域名时使用的是主机系统DNS,而非Docker内部DNS。核心原因是你的Runner Docker Executor设置了network_mode = "host",导致构建任务容器脱离了proxy-network,无法利用Docker内部服务发现机制找到gitlab容器。
  2. 代码拉取超时:构建容器处于host网络下,无法正常访问GitLab的外部反向代理地址myurl:443,大概率是反向代理配置限制、防火墙规则或网络路由问题导致。

解决方案

方案1:调整Runner网络模式(推荐)

将Runner构建容器的网络改为与GitLab相同的proxy-network,让构建容器通过Docker DNS直接解析gitlab容器名:

  1. 编辑Runner的config.toml,修改[runners.docker]区块下的网络配置:
[runners.docker]
    tls_verify = false
    image = "ubuntu:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
    network_mtu = 0
    network_mode = "proxy-network"  # 替换原有的host配置
  1. 重启GitLab Runner容器:
docker restart runner

方案2:保留host网络,修改Runner访问地址

如果必须使用host网络,需让Runner通过主机映射端口访问GitLab:

  1. 编辑Runner的config.toml,将url改为GitLab在主机上的映射地址:
[[runners]]
    name = "runner"
    url = "http://localhost:8080"  # 替换原有的http://gitlab
    # 其他配置保持不变
  1. 在GitLab的compose.yml的GITLAB_OMNIBUS_CONFIG中添加内部API地址配置,确保Runner能正确上传Artifacts:
gitlab_rails['internal_api_url'] = 'http://localhost:8080'
  1. 分别重启GitLab和Runner容器。

解决代码拉取问题

  • 若使用方案1(proxy-network):可在GitLab项目中将仓库remote地址改为内部地址http://gitlab/developer/test.git,或在GitLab的GITLAB_OMNIBUS_CONFIG中补充配置:
gitlab_rails['gitlab_url'] = 'http://gitlab'
  • 若使用方案2(host网络):检查Nginx Proxy Manager配置,确保主机及host网络下的容器能正常访问myurl:443,必要时调整防火墙或反向代理的允许规则。

验证

重新触发CI/CD任务,检查Artifacts上传是否正常,同时确认代码拉取步骤不再超时。

内容的提问来源于stack exchange,提问作者Sleither Milton Reyes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:15:21