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

GitLab CI执行docker build命令报错:无法连接Docker服务

解决GitLab CI中Docker构建的DNS解析错误

错误本质

你碰到的ERROR: error during connect: Get "http://docker:2375/_ping": dial tcp: lookup docker on 127.0.0.53:53: server misbehaving错误,核心是Docker客户端无法通过DNS找到docker主机——这说明你的GitLab Runner环境没正确配置Docker-in-Docker(DinD)服务,导致构建任务里的Docker命令找不到可用的Docker守护进程。

解决方案

1. 修改.gitlab-ci.yml配置

在CI配置中添加DinD服务,并配置必要的环境变量:

stages:
  - build

build-image:
  stage: build
  image: docker:latest
  services:
    - docker:dind  # 引入DinD服务
  variables:
    DOCKER_HOST: tcp://docker:2375  # 指定Docker守护进程的连接地址
    DOCKER_TLS_CERTDIR: ""  # 禁用TLS(无需加密连接时使用)
  script:
    - docker build --pull -t e45 .

2. 检查GitLab Runner执行器配置

如果用的是Docker执行器的Runner,必须确保其配置开启特权模式(DinD运行需要特权权限)。修改Runner的config.toml文件:

[[runners]]
  name = "Docker Runner"
  url = "https://你的GitLab实例地址/"
  token = "你的Runner令牌"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = true  # 必须开启此选项
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

3. 额外注意点

  • 确保docker镜像和docker:dind服务使用相同版本(比如都用docker:24.0.6和docker:24.0.6-dind),避免版本不兼容问题。
  • 如果需要TLS加密连接,不要设置DOCKER_TLS_CERTDIR: "",保留默认TLS配置即可。

内容的提问来源于stack exchange,提问作者Amir Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:59:56