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

MacOS下Jenkins Docker镜像构建报Docker权限拒绝,如何将jenkins用户加入Docker组

问题原因

你遇到的权限报错是因为MacOS上运行的Docker Desktop,默认仅开放docker.sock文件的访问权限给宿主机的docker用户组,你启动Jenkins容器时没有做对应的权限映射,导致容器内的jenkins用户无法访问挂载进去的docker套接字文件。

解决方案

方法一:调整启动参数(推荐,永久生效)

  • 先在Mac本地终端执行命令查询docker用户组的GID:dscl . read /Groups/docker PrimaryGroupID,记录输出的数字(默认一般为999)
  • 停止当前运行的Jenkins容器:docker stop [你的Jenkins容器名称]
  • 重新启动Jenkins容器,新增两个核心参数:
    1. 挂载宿主机docker套接字到容器内:-v /var/run/docker.sock:/var/run/docker.sock
    2. 给容器内jenkins用户追加宿主机docker组权限:--group-add [你刚才查询到的docker GID]
  • 完整启动命令示例:
docker run -d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
--group-add 999 \
--name jenkins \
jenkins/jenkins:lts

如果你用docker-compose部署Jenkins,直接在配置中新增group_add: - 999(替换为你自己的docker GID)即可。

方法二:进入容器手动配置(临时生效,容器重建后需要重新操作)

  • 以root身份进入正在运行的Jenkins容器:docker exec -u root -it [你的Jenkins容器名称] bash
  • 容器内创建和宿主机GID一致的docker组:groupadd -g [你查询到的docker GID] docker
  • 将jenkins用户加入docker组:usermod -aG docker jenkins
  • 给docker套接字文件赋权:chmod 660 /var/run/docker.sock
  • 退出容器后重启Jenkins生效:docker restart [你的Jenkins容器名称]
验证

配置完成后可以在Jenkins流水线中新增临时步骤执行docker ps,如果能正常输出进程列表没有权限报错,说明配置生效,你提供的Dockerfile和Jenkinsfile本身语法无问题,可以正常运行。

你使用的Dockerfile内容

FROM python:3.7-alpine

CMD [ "python", "-c", "print('Hi there!')"]

你使用的Jenkinsfile内容

pipeline {
  agent any
  stages {
    stage("build") {
      steps {
        sh """
          docker build -t hello_there .
        """
      }
    }
    stage("run") {
      steps {
        sh """
          docker run --rm hello_there
        """
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:57:03