MacOS~jenkins里解決docker執行權限問題


一 全局配置項設置

  • 需要添加全局變量項,例如名稱docker,路徑/usr/local
  • 添加一個jenkinsfile文件,用於運行docker命令
pipeline {
 agent any
 tools{
    gradle "gradle"
 }

stages {
    stage('init') {
           steps {
            script{
              def dockerPath = tool 'docker' //全局配置里的docker
              env.PATH = "${dockerPath}/bin:${env.PATH}" //添加了系統環境變量上
            }
           }
    }

    stage('Build') {
        steps {
            script{
              sh "docker --version"
            }
        }
    }
  }
}

注意:我們需要把docker的路徑添加到env環境變量里才可以使用docker命令,這個我試了很多次。

二 添加jenkins用戶到docker組
上面的操作完成之后,你的docker --version是可以打印了,但還不能執行docker命令,還需要你把jenkins用戶添加到docker用戶組里。

沒有添加用戶組會有這個錯誤提示

docker run --rm -v /Users/Shared/Jenkins/Home/workspace/helloJava:/src --user root --privileged=true alpine:3.6 sh -c 'cp /src/src/main/docker/Dockerfile /src/build/libs'
docker: 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.39/containers/create: dial unix /var/run/docker.sock: connect: permission denied.

當前用戶添加到docker組

sudo gpasswd -a ${USER} docker

#或者將當前用戶直接加到文件中
sudo echo "docker:x:994:${USER}" >> /etc/group

#查看docker用戶組成員
cat /etc/group |grep docker

#重新啟動docker服務
sudo systemctl restart docker
# 賦予權限
sudo chmod a+rw /var/run/docker.sock

修改jenkins用戶的擁有者

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

sudo vim /Library/LaunchDaemons/org.jenkins-ci.plist

sudo chown -R lind.zhang:docker /Users/Shared/Jenkins/

sudo chown -R lind.zhang:docker /var/log/jenkins/

啟動jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist

大功告成

[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ docker run alpine:3.6 /bin/echo hello
hello
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM