CI/CD

Jenkins构建提示docker命令权限问题解决方法

在jenkins PipeLine运行下面脚本时,出了下面的错误

pipeline {
    agent any
    
    environment {
        DOCKER_IMAGE = "spring-petclinic"  // 替换为你的镜像仓库地址
        DOCKER_TAG = "latest"  // 使用构建编号作为标签
    }
    
    stages {
        stage('Git Clone') {
            steps {
                git(
                    url: 'http://xxxx:3001/gitea_admin/spring-petclinic.git',
                    credentialsId: '9012b775-e018-4115-ae34-0fbadd1e88d4',
                    branch: 'main',
                )
                sh 'pwd'
                sh 'ls -la'
            }
        }
        
        stage('Build') {
            steps {
                sh './mvnw package -DskipTests -Dcheckstyle.skip=true -Dspotbugs.skip=true -Dpmd.skip=true'
            }
        }
        
        stage('Docker Build') {
            steps {
                sh "docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."
        }
}
        

    }
}
ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied

原因:

  • jenkins当前用户和用户组权限不足导致

解决方法

  • 把jenkins加入用户组
# usermod -aG docker jenkins
  • 设置sock文件权限
#  sudo chmod 666 /var/run/docker.sock
  • 重启docker和jenkins
# systemctl restart docker
# systemctl restart jenkins

重新执行Pipeline,是可以正常执行了。

docker images 也可以看见build出的镜像了