1. 程式人生 > >docker安裝jenkins及其相關問題解決

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回車 你會發現終於看到老頭子了 當然了你還需要安裝對應的外掛。