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

GitLab Runner容器内gitlab-runner用户执行Docker命令权限被拒问题

解决容器内gitlab-runner用户执行Docker命令的权限问题

问题根源

宿主机的docker.sock权限为srw-rw---- 1 root docker,意味着只有root用户或属于docker组(GID匹配宿主机docker组GID)的用户才能读写这个套接字。容器内的gitlab-runner用户UID是999,但默认GID只有999,和宿主机docker组的GID(你的环境里是135)不匹配,所以即使宿主机UID999在docker组,容器内用户依然没有权限访问套接字。

解决步骤

1. 确认宿主机docker组的GID

先在宿主机执行命令,获取docker组的GID:

getent group docker | cut -d: -f3

你的环境里这个值是135。

2. 方法一:启动容器时添加docker组权限

启动容器时,通过--group-add参数将宿主机docker组的GID添加到容器内的gitlab-runner用户附加组中:

docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --group-add $(getent group docker | cut -d: -f3) \
  gitlab/gitlab-runner:latest

3. 方法二:对已运行的容器调整权限

如果容器已经在运行,进入容器内执行以下操作:

  1. 以root身份进入容器:
docker exec -it gitlab_runner bash
  1. 创建GID匹配宿主机docker组的本地docker组:
groupadd -g 135 docker
  1. 将gitlab-runner用户加入该组:
usermod -aG docker gitlab-runner
  1. 退出容器后重新以gitlab-runner身份登录(或重启容器),再执行docker info即可正常运行。

注意事项

  • 不建议修改gitlab-runner用户的主GID,这可能会破坏容器内gitlab-runner服务的默认权限配置。
  • 确保容器挂载了宿主机的/var/run/docker.sock,这是容器内访问宿主机Docker daemon的前提。

内容的提问来源于stack exchange,提问作者林姿均

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:38:17