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

Gitlab容器Registry连接被拒 CI流水线报错no such host如何解决

GitLab CI Registry登录报错排查方案

1 优先排查DNS解析故障

报错信息中包含no such host,说明当前CI运行环境无法解析registry.domain域名,为最高优先级排查项:

  • 在CI流水线的docker login命令前新增调试指令,打印域名解析结果:
    before_script:
      - nslookup registry.domain
      - ping -c 3 registry.domain
    
  • 若解析失败,可选两种方案修复:
    • 在GitLab Runner所在节点的/etc/hosts文件中添加registry.domain对应的IP映射
    • 调整GitLab Runner使用的DNS服务器,确保可正常解析自定义域名

2 验证HTTP协议适配配置

Docker默认优先使用HTTPS协议访问镜像仓库,你配置的Registry为HTTP协议,需额外适配:

  • 首先在CI中打印$CI_REGISTRY变量确认取值:echo $CI_REGISTRY,如果返回值为不带http://前缀的纯域名,Docker会自动拼接https://前缀发起请求,导致报错
  • 修复方式二选一:
    • 直接修改登录命令,手动指定HTTP协议:docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" http://$CI_REGISTRY
    • 为DinD服务配置不安全仓库参数,修改.gitlab-ci.yml配置:
      image: docker:18-git
      services:
        - name: docker:18-dind
          command: ["--insecure-registry=registry.domain"]
      
  • 若使用自建Runner,还需在Runner所在节点的/etc/docker/daemon.json中添加配置,之后重启Docker服务生效:
    {
      "insecure-registries": ["registry.domain"]
    }
    

3 验证服务连通性

完成上述两步后如果仍报错,验证网络连通性:

  • 在CI中添加指令curl -v http://registry.domain/v2/,确认80端口无防火墙、安全组拦截,可正常访问Registry服务

内容的提问来源于stack exchange,提问作者Dawn tns

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:27:03