Jenkins Pipeline運行docker報錯:Got permission denied

一、Pipeline語句

Jenkinsfile (Declarative Pipeline)

pipeline {
    agent {docker 'maven:3-alpine'}
    stages {
        stage('Example Build') {
            steps {
                sh 'mvn -v'
            }
        }
    }
}


二、Pipeline執行結果

Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/pipeline-docker-job
[Pipeline] {
[Pipeline] sh
+ docker inspect -f . maven:3-alpine

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.40/containers/maven:3-alpine/json: dial unix /var/run/docker.sock: connect: permission denied
[Pipeline] sh
+ docker pull maven:3-alpine
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/create?fromImage=maven&tag=3-alpine: dial unix /var/run/docker.sock: connect: permission denied
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE


三、解決方法

        出現“Got permission denied”報錯,主要是權限問題,jenkins pipeline是在master上執行的,Jenkins是由jenkins用戶啓動的,但是jenkins用戶沒有執行docker的權限,所以導致以上報錯,所以我們的解決方法如下:

# usermod -a -G docker jenkins
# systemctl restart jenkins

僅僅將jenkins用戶加入docker組還不夠,必須要重啓Jenkins纔可以生效!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章