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

GitLab CI任务中Docker守护进程连接失败问题求助

GitLab CI Docker守护进程连接失败的解决方案

1. 修正.gitlab-ci.yml的服务与镜像配置

确保docker:dind服务开启特权模式,同时job使用官方docker镜像:

image: docker:latest

services:
  - name: docker:dind
    privileged: true # 必须开启,dind需要特权权限
    command: ["--tls=false"] # 关闭TLS简化配置,若需TLS可移除该行

variables:
  DOCKER_HOST: tcp://docker:2375 # 对应非TLS端口
  DOCKER_TLS_CERTDIR: "" # 关闭TLS时需清空该变量
  DOCKER_DRIVER: overlay2 # 推荐使用overlay2存储驱动

2. 检查GitLab Runner配置(自托管Runner)

如果使用自己搭建的Runner,需修改config.toml确保开启特权模式:

[[runners]]
  executor = "docker"
  [runners.docker]
    privileged = true # 关键配置,否则dind无法正常启动
    image = "docker:latest"
    volumes = ["/cache"]

修改后重启Runner服务生效。

3. 等待Docker守护进程完全启动

CI中dind服务启动需要时间,可在job开头添加等待逻辑:

until docker info >/dev/null 2>&1; do
  echo "等待Docker守护进程初始化..."
  sleep 3
done

4. 验证网络连通性

在job中添加端口测试,确认能访问dind服务:

# 安装nc工具(部分docker镜像默认无)
apk add --no-cache netcat-openbsd
# 测试2375端口连通性
nc -zv docker 2375

若测试失败,需检查Runner的网络模式是否允许job容器与dind服务容器通信。

5. 排查dind服务日志

在job中打印dind服务日志,定位启动失败原因:

docker logs docker # docker是dind服务的默认容器名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:52:43