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

Mac环境下Jenkins无法连接Docker守护进程问题求助

问题分析

你遇到的错误核心是Jenkins的Docker代理容器(docker:24.0.5)无法访问Mac宿主机的Docker Desktop守护进程。默认情况下,该代理容器不会自动挂载宿主机的Docker Socket,导致容器内的Docker客户端找不到daemon。而whoami: unknown uid 501是因为容器内不存在宿主机的用户ID,这属于次要警告,不影响镜像构建的核心流程。

解决方案

1. 修改Jenkinsfile,挂载Docker Socket到代理容器

在docker agent配置中添加volumes参数,将宿主机的Docker Socket挂载到容器内的对应路径,让容器内的Docker命令能直接调用宿主机的daemon:

pipeline {
    agent none
    stages {
        ...
        stage("Build Docker Image") {
            agent {
                docker { 
                    image 'docker:24.0.5'
                    // 挂载宿主机Docker Socket到容器内部
                    volumes ['/var/run/docker.sock:/var/run/docker.sock']
                }
            }
            environment {
                HOME = "${env.WORKSPACE}"
            }
            steps {
               script {
                dockerImage = docker.build("<docker image name>:${env.BUILD_ID}")
               }
            }
        }
        ...
    }
}

Mac上Docker Desktop默认会创建/var/run/docker.sock软链接指向实际Socket路径,直接挂载该路径即可。

2. 确保Jenkins用户拥有Docker Socket访问权限

虽然你已创建docker组并添加用户,仍需确认Docker Socket的权限配置:

  • 查看Socket权限:
    ls -l /var/run/docker.sock
    
  • 若Socket所属组不是docker,手动调整:
    sudo chown root:docker /var/run/docker.sock
    
  • 重启Docker Desktop,让权限设置生效。

3. 消除whoami: unknown uid 501警告(可选)

该警告不影响构建,若要消除,可在Docker代理中指定用root用户运行(便捷但需注意安全):

agent {
    docker { 
        image 'docker:24.0.5'
        volumes ['/var/run/docker.sock:/var/run/docker.sock']
        args '-u root'
    }
}

4. 验证Docker连接(可选)

在流水线步骤中添加测试命令,确认容器内可正常访问Docker daemon:

steps {
    script {
        sh 'docker info' // 测试daemon连接状态
        dockerImage = docker.build("<docker image name>:${env.BUILD_ID}")
    }
}
验证步骤

修改Jenkinsfile后重新运行流水线:

  1. 确认docker info能正常输出daemon信息
  2. 检查docker build命令是否成功构建镜像

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:07:12