[Docker]記一次使用jenkins將鏡像文件推送到Harbor遇到的問題


系統版本: Ubuntu 18.01
私服: Harbor
Docker版本: Docker version 18.09.5

首先需要明確的是,即在harbor里項目設置為公開,但是在push的時候還是需要用戶驗證的,即需要使用docker登錄

docker login harbor.zyg.com(私服的地址),輸入用戶名和密碼后即會在當前用戶的/home/用戶名/.docker/下生成一個config.json文件
但這只是當前用戶能夠使用的,每一次在使用docker pull/push時都會使用這個文件

問題一、 避免一般用戶在使用docker的時候使用sudo

1、創建docker用戶組,一般在安裝的時候會自動創建
2、添加用戶到docker組sudo usermod -aG docker $USER

問題二、 Jenkins執行shell腳本里的docker命令報權限不足

因為在執行shell系統使用的是jenkins偽用戶,所以這時需要將jenkins加入docker用戶組
sudo gpasswd -a jenkins docker
sudo service jenkins restart (一定要重啟)

問題三、 Jenkins推送鏡像報錯denied: requested access to the resource is denied

The push refers to repository [harbor.zyg.com/microservices/zhaiugo-id-service]
ead29f23f10c: Preparing
c1d68427d6dd: Preparing
c03339557420: Preparing
b8fded14819b: Preparing
10975dc549b8: Preparing
1e11e2a062fc: Preparing
a8eed0ba0657: Preparing
1e11e2a062fc: Waiting
a8eed0ba0657: Waiting
denied: requested access to the resource is denied
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE
還是因為jenkins在推送鏡像的時候使用的是jenkins的偽用戶,那么既然要推送就要登錄,將之前生成的config.json拷貝到jenkins的目錄下即可
1、使用root登錄后
2、將/home/用戶名/.docker/目錄拷貝到/var/lib/jenkins下
3、修改文件夾權限 chown -R jenkins.jenkins .docker

 


免責聲明!

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



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