一、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纔可以生效!