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

自建GitLab Runner使用rootless DinD失败:无法连接Docker守护进程

我来帮你排查这个问题——你遇到的核心矛盾是:虽然Docker登录成功了,但后续无法连接到DinD的守护进程,这和你用了rootless Docker配置有直接关系,咱们一步步拆解:

问题根源分析

  1. 镜像版本与rootless配置不匹配:你的CI任务用了普通的docker:18.09和docker:18.09-dind,但Runner默认镜像用的是docker:19.03-dind-rootless。Rootless DinD的默认端口不是普通DinD的2375,而是2376(默认带TLS加密),环境变量配置逻辑也完全不同,版本和模式的混搭直接导致了连接失败。
  2. 挂载的宿主机sock干扰了DinD服务:你在Runner配置里挂载了/app/log/docker-rootless/docker.sock:/var/run/docker.sock,这会让CI任务优先尝试使用宿主机的Docker守护进程,而非你指定的DinD服务容器,进一步混淆了连接目标。
  3. 登录成功的假象:docker login命令不需要连接Docker守护进程,它只是把认证信息写入本地的config.json文件,所以即使daemon没连上,登录也会返回成功;而docker info必须和daemon通信,才会暴露真实的连接问题。

具体解决方案

1. 统一CI任务的DinD镜像与rootless配置

修改你的CI文件,使用支持rootless的DinD服务镜像,并适配对应的环境变量:

build:
  image: docker:20.10
  stage: build
  services:
    - docker:20.10-dind-rootless
  variables:
    # Rootless DinD默认使用TLS,端口为2376
    DOCKER_HOST: tcp://docker:2376/
    DOCKER_DRIVER: overlay2
    # Rootless模式下必须指定证书目录
    DOCKER_TLS_CERTDIR: "/certs"
    DOCKER_CERT_PATH: "/certs/client"
  script:
    - echo $CI_REGISTRY
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - docker info

2. 调整GitLab Runner配置,移除干扰项

修改Runner的config.toml,统一镜像版本并去掉不必要的宿主机sock挂载:

[[runners]]
name = "Docker Runner"
url = "https://gitlab.systems.co.uk/"
token = "fgtgervsdasdsdds"
executor = "docker"
[runners.custom_build_dir]
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
# 统一使用和CI任务一致的rootless DinD镜像
image = "docker:20.10-dind-rootless"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
# 移除宿主机docker.sock挂载,保留必要的缓存和证书目录
volumes = ["/cache", "/srv/gitlab-runner/config/certs:/etc/gitlab-runner/certs"]
shm_size = 256m  # 给DinD分配足够的共享内存,避免构建时内存不足

3. 验证宿主机依赖

Rootless DinD依赖slirp4netns工具做网络虚拟化,确保Runner所在的宿主机已经安装了这个工具(大多数现代Linux发行版已经预装,若没有则通过包管理器安装即可)。


内容的提问来源于stack exchange,提问作者mikita agrawal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:45:06