使用docker快速部署Jenkins


先安裝配置docker

安裝不說了,注意非root用戶執行docker會報docker.sock訪問權限錯誤,需要把自己加到docker組。

然后因為國內訪問dockerhub速度太慢,所以需要配置國內dockerhub鏡像。這里用中科大的鏡像:

sudo vim /etc/docker/daemon.json

內容如下(dns設置可有可無):

{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"],
    "dns": ["8.8.8.8", "8.8.4.4"]
}

然后重啟dockerd:

sudo systemctl restart docker

拉取並運行Jenkins

docker pull jenkins/jenkins:lts-alpine

(我直接root了,你們注意安全)

創建掛載用的工作目錄(打算把數據保存在~/jenkins/data

cd
mkdir -p jenkins/data
sudo chown 1000:1000 jenkins -R  # jenkins鏡像默認是用1000這個用戶執行,不修改所有會無法創建文件

然后我們寫個啟動腳本,參考(jenkinsci官方github)[https://github.com/jenkinsci/docker/blob/master/README.md]即可:

cd ~/jenkins
vim init.sh

# 內容如下:

cd `dirname $0`  && echo "PWD: "$(pwd)

docker run -d --name myjenkins \
    --net=host \
    -v `pwd`/data:/var/jenkins_home \
    --restart=always \
    -e TZ="Asia/Shanghai" \
    --env JAVA_OPTS="-Djava.util.logging.config.file=/var/jenkins_home/log.properties" \
    --add-host=dockerhost:172.17.0.1 \
    jenkins/jenkins:lts-alpine

    # -p 8080:8080 \
    # -p 50000:50000 \

然后創建容器並運行:

cd ~/jenkins && bash init.sh

然后訪問8080端口初始化Jenkins,再設置項目就行了。如果要備份還原項目,直接備份還原data文件夾就行了。(data就是主機直接安裝Jenkins時的/var/lib/jenkins目錄)

如何使用Docker內的Jenkins

接下來的問題就是如何使用Jenkins在主機或其他容器部署項目了。(我猜你也不會想把項目和Jenkins部署在同一個容器的)

一開始我挺疑惑Docker中的Jenkins怎么調用主機的程序,查了資料還發現了 使用fabric進行ssh 的操作,感覺這還挺麻煩的。

其實一番鼓搗下來發現Jenkins是可以配置節點的,而且Jenkins直接就可以ssh連接各節點,把各項目指派到對應的節點去部署。這個圖反應了任務和節點的關系:

所以,要在Docker所在主機部署,可以直接把主機配置為Jenkins的某個節點:

  1. 配置主機作為Jenkins的一個節點:(對於docker中的Jenkins環境,我們就讓它是master節點,不給它分配任務就行了)

  2. 配置項目,指定對應的標簽或節點名字即可:(用標簽可以對應多個節點,注意不要有多余空格)

在Docker所在主機部署大概就這樣。

稱Jenkins所在主機為A,如果想到其他機器(比如服務器B)部署項目(比如項目C),也不需要在B中安裝Jenkins,只要在A的Jenkins控制台新建節點就行了,配置好B的地址(ip/url)和ssh密鑰,然后在A的Jenkins控制台新建項目C,限制在B對應的節點執行。 (注意:密鑰用戶要有部署項目的操作權限)





(默認Jenkins自身所在的環境是master節點)

  • master節點的執行者數量設為0可以禁用它,其他節點也可以設為0禁用,而不需要刪除,這樣可以保留配置

Docker修改hosts方法 https://www.cnblogs.com/amyzhu/p/10957667.html


免責聲明!

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



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