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

Dockerfile配置GitLab Runner后执行CI任务遇Docker守护进程连接错误

解决GitLab Runner容器无法连接docker.sock的问题

核心原因

挂载docker.sock后仍报错,几乎都是权限问题:主机上的/var/run/docker.sock所属组通常是docker(GID多为999),而容器内的gitlab-runner用户默认不在对应GID的组里,导致没有访问套接字的权限。

具体解决方案

1. 确认挂载命令正确性

运行容器时必须正确挂载主机的docker.sock,命令示例:

docker run -d \
  --name gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /path/to/gitlab-runner/config:/etc/gitlab-runner \
  gitlab/gitlab-runner:latest

注意:路径不能写错,主机端的/var/run/docker.sock必须和容器内的路径一致。

2. 同步Docker组权限(推荐方案)

  • 先查询主机上docker组的GID:
    cat /etc/group | grep docker
    
    输出类似docker:x:999:,这里的999就是目标GID。
  • 运行容器时,将gitlab-runner用户加入该GID的组:
    docker run -d \
      --name gitlab-runner \
      --group-add 999 \  # 替换成你查到的实际GID
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v /path/to/gitlab-runner/config:/etc/gitlab-runner \
      gitlab/gitlab-runner:latest
    

3. 验证容器内访问权限

进入容器执行命令,确认是否能正常连接Docker守护进程:

docker exec -it gitlab-runner bash
su gitlab-runner
docker ps

如果能正常列出容器,说明权限配置生效。

4. 检查Runner配置

确认GitLab Runner的executor为docker,且docker_socket_path配置正确(默认就是/var/run/docker.sock)。可以在Runner配置文件/etc/gitlab-runner/config.toml中查看:

[[runners]]
  executor = "docker"
  [runners.docker]
    docker_socket_path = "/var/run/docker.sock"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:15:16