相關文章
企業實戰(23)基于Docker平台部署Jenkins中國定制版(1)
添加node節點前配置

在這裡插入圖檔描述
在這裡插入圖檔描述
開始添加node節點
在這裡插入圖檔描述
在這裡插入圖檔描述
在這裡插入圖檔描述
在添加node節點時,填好“名稱”、“描述”、“執行器數量”、“遠端工作目錄”、“标簽”、“用法(一般預設)”、“啟動方式(根據情況)”,完成後儲存。
在這裡插入圖檔描述
在這裡插入圖檔描述
這時node1節點還是未線上狀态,點選“node1”名稱會有節點連接配接Jenkins的方法。
在這裡插入圖檔描述
注意:
這裡必須用
--user root
使用者進入容器才可以建立工作目錄,預設進入是
jenkins
使用者,會提示權限不足。
[root@localhost ~]# docker ps -a //容器運作時需要映射代理連接配接端口50000
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1dad787d6f46 myjenkins:v1 "/sbin/tini -- /usr/…" 38 minutes ago Up 11 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
[root@localhost ~]# docker exec -it --user root jenkins /bin/bash
root@367402ec96bf:/# mkdir -p /opt/jenkins //建立工作目錄
root@367402ec96bf:/# cd /opt/jenkins/
root@367402ec96bf:/opt/jenkins# wget http://192.168.1.8:8080/jnlpJars/agent.jar
root@367402ec96bf:/opt/jenkins# ls
agent.jar
root@367402ec96bf:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins"
......
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected //連接配接成功
複制
在這裡插入圖檔描述
`報錯`
如果在容器中下載下傳好agent.jar後,執行節點連接配接指令的時候出現下面的錯誤:
WARNING: Connection refused (Connection refused)
root@367402ec96bf:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 5cb49ff710c0dde742725fcb82dc2e8ccf4f612819e2b6889cfcb93207fc734a -workDir "/opt/jenkins"
......
WARNING: Connection refused (Connection refused)
Nov 16, 2020 3:57:42 AM hudson.remoting.jnlp.Main$CuiListener error
SEVERE: http://192.168.1.8:8080/ provided port:50000 is not reachable
java.io.IOException: http://192.168.1.8:8080/ provided port:50000 is not reachable
at org.jenkinsci.remoting.engine.JnlpAgentEndpointResolver.resolve(JnlpAgentEndpointResolver.java:314)
at hudson.remoting.Engine.innerRun(Engine.java:693)
at hudson.remoting.Engine.run(Engine.java:518)
複制
解決:
1.檢視正在運作的容器是否已經映射了前面在Jenkins管理界面設定中的“全局安全配置”裡配置的代理指定端口(詳情見頂圖)
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1dad787d6f46 myjenkins:v1 "/sbin/tini -- /usr/…" 38 minutes ago Up 11 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
複制
2.沒有映射代理端口需要重新映射才能正常連接配接,有下面兩種方法:
- 2.1 `将目前已經運作的容器通過docker commit指令送出為一個鏡像,然後重新執行docker run指令添加完整的端口映射。`(推薦)`
[root@localhost ~]# docker stop jenkins
[root@localhost ~]# docker commit -m "my jenkins" 367402ec96bf myjenkins:v1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myjenkins v1 5349fdcc8533 7 minutes ago 662MB
jenkinszh/jenkins-zh latest 2cb4cce6db0a 5 months ago 656MB
[root@localhost ~]# docker run -itd --name=myjenkins -p 8080:8080 -p 50000:50000 myjenkins:v1
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1dad787d6f46 myjenkins:v1 "/sbin/tini -- /usr/…" 5 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp myjenkins
複制
進入浏覽器通路Jenkins頁面,重新完成入門步驟後進入Jenkins管理界面首頁,按照本教程從頭開始進行“添加node節點前配置”、“開始添加node節點”步驟,進行至“節點連接配接Jenkins方式”時,按照下面步驟重新操作即可。
[root@localhost ~]# docker exec -it --user root myjenkins /bin/bash
root@1dad787d6f46:/# cd /opt/jenkins/
root@1dad787d6f46:/opt/jenkins# rm -rf * //删除之前的檔案
root@1dad787d6f46:/opt/jenkins# wget http://192.168.1.8:8080/jnlpJars/agent.jar //重新複制連接配接代理的agent.jar連結
root@1dad787d6f46:/opt/jenkins# ls
agent.jar
root@1dad787d6f46:/opt/jenkins# java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins"
......
INFO: Agent discovery successful
Agent address: 192.168.1.8
Agent port: 50000
Identity: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Handshaking
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connecting to 192.168.1.8:50000
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Trying protocol: JNLP4-connect
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
Nov 16, 2020 6:19:14 AM hudson.remoting.jnlp.Main$CuiListener status
INFO: Connected
複制
- 2.2 `通過配置檔案修改已經運作的docker容器端口映射`
優化
在上面代理連接配接Jenkins的時候,可以看到我們是直接通過執行指令連接配接,這種方式會一直占用系統終端,這時我們可以通過編寫一個腳本來實作不占用終端一直運作腳本達到代理連接配接Jenkins的效果。(在容器中可以通過主控端寫好腳本後,與jenkins容器共享腳本目錄,這樣容器中也可以直接通路腳本目錄執行腳本)
nohup
不挂斷地運作指令
&
在背景運作 (一般這兩個一起用)
nohup command &
[root@localhost jenkins]# vim start.sh
#!/bin/bash
nohup java -jar agent.jar -jnlpUrl http://192.168.1.8:8080/computer/node1/slave-agent.jnlp -secret 90e0e5a0d61f67d551d029a22584632fb96f314acf1f3789372adbb747e81b11 -workDir "/opt/jenkins" &
(可以通過commit新鏡像重新執行docker run 映射端口跟共享目錄)
# sh start.sh
# ps -aux | grep start.sh //通過ps檢視背景運作的腳本
root 15269 0.0 0.0 112720 996 pts/0 S+ 15:13 0:00 grep --color=auto start.sh
# tail -f nohup.out //檢視腳本背景執行啟動日志
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
資訊: Handshaking
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
資訊: Connecting to 192.168.1.8:50000
十一月 16, 2020 3:10:11 下午 hudson.remoting.jnlp.Main$CuiListener status
資訊: Trying protocol: JNLP4-connect
十一月 16, 2020 3:10:12 下午 hudson.remoting.jnlp.Main$CuiListener status
資訊: Remote identity confirmed: 33:34:ca:16:46:58:d8:12:94:38:4b:eb:ee:33:a9:4c
十一月 16, 2020 3:10:12 下午 hudson.remoting.jnlp.Main$CuiListener status
資訊: Connected
複制