測試環境:centos 7(64位)、docker-ce、jenkins 2.93
docker離線安裝
在centos上安裝docker,除了docker的rpm外還需要有以下的依賴包:
安裝依賴:
sudo yum install libtool-ltdl-2.4.2-22.el73.x8664.rpm
複製程式碼
sudo yum install container-selinux-2.33-1.git86f33cd.el7.noarch.rpm
複製程式碼
sudo yum install docker-ce.rpm
複製程式碼
如果之前安裝過docker而遇到問題,請參考docker-ce安裝文件
開啟docker服務
sudo systemctl start docker
複製程式碼
下載jenkins映象並匯出
我這裡選擇的是這個jenkins映象,之前在win10 pro上有用過jenkinsci/blueocean:latest,在執行node命令是會出現找不到node命令,即使我已經設定了PATH
docker pull jenkins/jenkins
複製程式碼
輸入 docker images
檢視當前的映象列表
輸入sudo docker save -o myjenkins.tar jenkins/jenkins:latest
以.tar的格式匯出jenkins/jenkins:latest映象到當前資料夾,並將它拷貝到離線環境
在離線環境下匯入
離線環境下,輸入sudo docker load --input myjenkins.tar
匯入映象。
這時輸入docker images
檢視映象,即可看見匯入的映象
執行匯出的jenkins映象
docker run
// 當此容器stop時,刪除此容器
--rm
// 設定呼叫docker中命令終端時,使用的角色
-u root
// 對映主機的物理埠8080到docker的8080虛擬埠
-p 8080:8080
//如果jenkins-data(資料夾名字,可以取其他的)在/var/lib/docker/volumes下不存在,docker會建立此資料夾,並將此資料夾下的_data資料夾對映到docker中的/var/jenkins_home,此資料夾下儲存的是jenkins的資料(包含外掛、使用者資訊、構建記錄等)
-v jenkins-data:/var/jenkins_home
// docker的守護程式(沒深入研究過)
-v /var/run/docker.sock:/var/run/docker.sock
// 對映主機的/home/hanqing/source到docker容器中的/home
-v /home/hanqing/source:/home
// 要執行的映象
myjenkins
複製程式碼
打命令的時候是一行寫完的,不換行
執行後下圖的紅框中的字串要拷貝下來,之後jenkins啟用需要用到
配置jenkins
開啟瀏覽器訪問localhost:8080,看到jenkins服務已經開啟了
administrator的password就是之前紅框中的那一串
因為是離線(可以先跳過這個步驟,等配置完jenkins的時候再新增),我知道的外掛安裝方式有兩種
- 外掛可以通過jenkins-plugins下載後,從系統設定->管理外掛->高階->上傳外掛
- 從已經下載好外掛的jenkins外掛目錄下拷貝出來,複製到離線jenkins的外掛目錄(此例子的外掛目錄是/var/lib/docker/volumes/jenkins-data/_data/plugins)
設定使用者(電子郵件一欄一定要有@)
開始使用jenkins
點選主頁左側的新建Item
選項,輸入任務名,選擇構建一個自由風格的軟體專案
,點選確定
在頁面中原始碼管理section中選擇版本管理器,我用的是git,所以就用git作例子,這裡的Repository URL可以是一個本地地址,也可以是一個網址,必須指向一個帶.git檔案的資料夾或者一個git倉庫,如果要使用ssh的話,需要在Credentials中設定ssh私鑰
在構建section選擇execute shell,然後就可以在command輸入框中輸入命令了(這些命令是在docker的容器中執行的,所以執行環境也是容器的)
給構建環境增加node
預設情況下,此docker容器的執行環境中沒有node,就跑不了npm script,如果是聯網的話,可以通過NodeJS Plugin外掛來解決,但離線的話就需要在command裡面需要將node的可執行檔案新增進PATH中
我的解決方案是將node的linux二進位制檔案壓縮包解壓到/home/hanqing/source目錄下,為了方便將解壓後的資料夾命名為node,也就是把這些檔案對映到了容器的/home目錄下,這時將bin資料夾下的二進位制檔案新增到PATH中就可以使用node命令了,在command輸入框中輸入:PATH=$PATH:/home/node/bin