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

GitLab本地Runner无法连接Docker守护进程问题求助

GitLab Runner无法连接Docker守护进程问题解决

我在使用本地GitLab Runner时遇到无法连接Docker守护进程的问题,给Docker服务添加别名后仍失败,报错信息如下:

ERROR: Cannot connect to the Docker daemon at tcp://docker:2375/. Is the docker daemon running?
ERROR: Cannot connect to the Docker daemon at tcp://thealias:2375/. Is the docker daemon running?

我的配置文件

.gitlab-ci.yml

push_image:
  image: docker:20.10.16-dind

  services:
    - docker:20.10.16-dind

  before_script:
    - docker info
    - docker login ext_registry.com -u $NEXUS_USER -p $NEXUS_PASS
  script:
    - docker build -t ext_registry.com.liberty.edu:5000/occ/groupsyncer:latest .

gitlab-runner.toml

[[runners]]
  name = "docker-runner"
  url = "https://gitlab.example.com/"
  token = REDACTED
  executor = "docker"
  cache_dir="/cache"
  clone_url = "https://gitlab.example.com"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    volumes = ["/opt/gitlab-runner/cache:/cache:rw"]
    tls_verify = false
    image = "docker:20.10.16"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    shm_size = 0

解决方法

  1. 修正.gitlab-ci.yml配置
    不要同时将docker:dind作为job镜像和服务使用,应该用普通的docker镜像作为job运行环境,docker:dind作为后台服务。同时显式设置Docker环境变量避免连接问题:

    push_image:
      image: docker:20.10.16
      services:
        - name: docker:20.10.16-dind
          alias: docker
      variables:
        DOCKER_HOST: tcp://docker:2375
        DOCKER_TLS_CERTDIR: ""
      before_script:
        - docker info
        - docker login ext_registry.com -u $NEXUS_USER -p $NEXUS_PASS
      script:
        - docker build -t ext_registry.com.liberty.edu:5000/occ/groupsyncer:latest .
    
  2. 确认Runner配置有效性
    你的gitlab-runner.toml中已经设置了privileged = true,这是docker:dind运行的必要条件。修改配置后重启Runner服务:

    gitlab-runner restart
    
  3. 检查主机Docker服务状态
    在GitLab Runner所在主机上,确认Docker守护进程正在运行:

    systemctl status docker
    

    若未运行,启动服务:

    systemctl start docker
    

内容的提问来源于stack exchange,提问作者Brandon Kauffman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:45:28