docker安裝jenkins及其相關問題解決
阿新 • • 發佈:2018-12-27
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回車 你會發現終於看到老頭子了 當然了你還需要安裝對應的外掛。