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

Jenkins Docker Agent报错:/var/run/docker.sock权限被拒求助

问题描述

Jenkins节点(slave)已安装Docker,手动以jenkins用户执行docker run可正常启动容器,且该用户已加入docker组:

[stg-jenkins-slv-1] jenkins:~$ docker run --rm -it node16_16_0_custom_build:latest  /bin/bash
node@8508f61f549c:/home/simha/app$ 
uid=1009(jenkins) gid=1011(jenkins) groups=1011(jenkins),0(root),27(sudo),115(docker)

但使用如下Jenkinsfile的Docker Agent时,触发Docker权限拒绝错误:

stage('Build reacjts project') {
    agent { 
        docker { 
            label 'jenkins-slv-1'
            image 'node16_16_0_custom_build:latest'}
    }
    steps {
        sh '''
            node --version
            npm install
            npm run build
        '''
    }
}

错误信息:

+ docker inspect -f . node16_16_0_custom_build:latest

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/node16_16_0_custom_build:latest/json": dial unix /var/run/docker.sock: connect: permission denied

尝试重启节点的Jenkins服务失败:

[stg-jenkins-slv-1] jenkins:~$ sudo service jenkins restart
Failed to restart jenkins.service: Unit jenkins.service not found.

需排查Docker Agent实际使用的用户,以便将其加入docker组解决权限问题。

排查与解决步骤

一、排查Docker Agent运行用户

方法1:临时修改Jenkinsfile查看用户信息

在流水线的steps中添加查看当前用户的命令,运行一次流水线后查看控制台输出:

stage('Build reacjts project') {
    agent { 
        docker { 
            label 'jenkins-slv-1'
            image 'node16_16_0_custom_build:latest'}
    }
    steps {
        sh '''
            whoami
            id
            node --version
            npm install
            npm run build
        '''
    }
}

控制台输出中的whoami结果即为Docker Agent使用的用户名,id结果可查看其所属组。

方法2:查看节点上Jenkins代理进程的运行用户

直接在Jenkins节点执行命令,找到Jenkins代理进程的所属用户:

ps aux | grep jenkins-agent

命令输出的第一列即为进程的运行用户。

二、解决权限问题

  1. 将查到的用户加入docker组:
sudo usermod -aG docker <目标用户名>
  1. 让用户组生效:
    • 若为当前登录用户,执行newgrp docker立即刷新组权限
    • 重启Jenkins代理进程:找到代理进程PID后杀死,再按原启动方式重新启动(如SSH代理则重新建立连接)
  2. 验证:再次运行流水线,或用该用户执行docker inspect node16_16_0_custom_build:latest,确认权限问题已解决。

三、关于Jenkins服务重启失败的说明

提示Unit jenkins.service not found说明该节点的Jenkins代理并非通过systemd服务管理,大概率是SSH启动的代理进程,直接找到并重启代理进程即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:40:28