Centos7 docker部署jenkins及報錯問題解決


Jenkins部署:

//下載鏡像
docker pull jenkins/jenkins
//開放指定的防火牆端口
firewall-cmd --zone=public --add-port=8000/tcp --permanent
//創建本地掛載目錄
mkdir -p /home/docker/jenkins
//需要修改下目錄權限, 因為當映射本地數據卷時,/home/docker/jenkins目錄的擁有者為root用戶,而容器中jenkins user的uid為1000
執行如下命令即可:
chown -R  1000:1000 /home/docker/jenkins

//運行啟動Jenkins

docker run -d -p 8000:8080 -v /home/docker/jenkins:/var/jenkins_home --name jenkins --restart=always jenkins/jenkins

示例:docker run --privileged -id -p 9999:8080 --name=jenkins05 myjenkins:3.0 /usr/sbin/init

docker run -d -p 8000:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home --name jenkins --restart always --privileged=true  -u root jenkins

查看密碼:docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword

-p : 映射端口,宿主機端口:容器端口

-v : 掛載,宿主機目錄:容器目錄

--name : 自定義容器名

-u : 權限用戶名

--privileged : 使用該參數,container內的root擁有真正的root權限,否則,container(容器)內的root只是外部的一個普通用戶權限,privileged啟動的容器可以看到很多host上的設備,並且可以執行mount,甚至允許你在docker容器內啟動docker容器。

/usr/sbin/init  >>>后面加 /usr/sbin/init表示給容器授權root權限,使容器能夠使用root權限下的命令

給運行中的容器增加root權限:

首先你的container得正在運行。

可通過sudo docker container ls查看容器的CONTAINER ID

最后執行命令(其中848669a8722b為上面查到的CONTAINER ID)

sudo docker exec -ti -u root 848669a8722b bash

查看容器日志

docker logs -f jenkins

查看容器運行

docker ps

之后瀏覽器輸入  http://你的ip地址:8000

進入之后需要輸入密碼,在命令行使用如下命令獲取密碼

cat /home/jenkins/secrets/initialAdminPassword        查看密碼

之后會進入jenkins安裝插件頁面,

這里選擇安裝推薦插件就可以了;

接下來就是進入jenkins首頁,這里使用前需要配置一些基礎的maven和jdk;

 

點擊進入配置頁面:

解釋一下我這里為什么是/var/jenkins_home/

因為我首先jenkins是安裝在docker里的,這時候使用的就是docker里的路徑,

我們上面運行jenkins的時候,看我標紅的地方;

這里我的jdk是復制了一份放在/home/jenkins/下面的,所以這里路徑就可以直接這么寫了;

注意:這里是JAVA_HOME,所以不要加bin目錄;

接下來配置maven,跟jdk一樣;

至此,基本配置都已經好了。

接下來創建你新項目吧;

對了,默認的推薦插件是沒有maven項目的,所以你可以在插件市場里搜索一下maven;

 然后去可選插件里搜索:

 右上角的搜索框輸入:Maven Integration plugin

找到之后直接安裝,然后重啟jenkins就可以了;

重啟jenkins可以直接在瀏覽器地址欄操作:

http://你的ip地址:8000/restart

這樣就OK了;

 

報錯解決辦法:
docker 運行后, 執行docker logs -f myjenkins時報錯:

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?

需要修改下目錄權限, 因為當映射本地數據卷時, /home/docker/jenkins目錄的擁有者為root用戶,而容器中jenkins user的uid為1000
執行如下命令即可:

chown -R 1000:1000 /home/docker/jenkins


轉載:


免責聲明!

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



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