docker安裝jenkins及其相關問題解決


 

1.拉取鏡像並啟動容器

docker run -d -p 8080:8080 -p 50000:50000 -v $(pwd)/data:/var/jenkins_home --name jenkins jenkins

 

2.通過docker ps命令你會發現jenkins容器沒有運行起來

 

3.通過docker ps -a查看所有容器並找到對應的Jenkins容器編號,並通過命令查看對應的日志

docker logs Jenkins

錯誤信息如下:

touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied

Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

 

分析:

我們檢查一下之前啟動方式的"/var/jenkins_home"目錄權限,查看Jenkins容器的當前用戶: 當前用戶是"jenkins"而且"/var/jenkins_home"目錄是屬於jenkins用戶擁有的。

 

docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "whoami && id

 

控制台輸出:

 

 

docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "ls -la /var/jenkins_home"

 

控制台輸出:

 

 

而當映射本地數據卷時,/var/jenkins_home目錄的擁有者變成了root用戶

docker run -ti --rm -v $(pwd)/data:/var/jenkins_home --entrypoint="/bin/bash" jenkins -c "ls -la /var/jenkins_home"

 

控制台輸出:

 

這就解釋了為什么當"jenkins"用戶的進程訪問"/var/jenkins_home"目錄時,會出現 Permission denied 的問題

我們再檢查一下宿主機上的數據卷目錄,當前路徑下"data"目錄的擁有者是"root",這是因為這個目錄是Docker進程缺省創建出來的。

 

ls -la data

 

控制台輸出:

 

發現問題之后,相應的解決方法也很簡單:把當前目錄的擁有者賦值給uid 1000,再啟動"jenkins"容器就一切正常了。

遞歸授權並再次啟動jenkins

sudo chown -R 1000 data
docker start Jenkins

 

最后輸入瀏覽器地址:http://IP:8080回車 你會發現終於看到老頭子了 當然了你還需要安裝對應的插件。

 


免責聲明!

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



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