虛擬機centos7上安裝docker+jenkins
學習某冊子的CICD時,安裝了docker和jenkins,記錄的安裝程序和中間碰到的問題,
使用的虛擬機為Parallels Desktop,配置為2核4G,系統為centos 7,下載地址,
安裝docker
在開始安裝之前,需要安裝device-mapper-persistent-data和lvm2兩個依賴,
device-mapper-persistent-data是Linux下的一個存盤驅動,Linux上的高級存盤技術,lvm的作用則是創建邏輯磁盤磁區,
1. 安裝依賴
使用CentOS的Yum包管理器安裝兩個依賴:
yum install -y yum-utils device-mapper-persistent-data lvm2
依賴安裝完畢后,將阿里云的Docker鏡像源添加進去,可以加速Docker的安裝:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2. 安裝docker
yum install docker-ce -y


3. 啟動docker
安裝完畢,就可以使用systemctl命令來啟動Docker了,systemctl是Linux的行程管理服務命令,可以幫助我們啟動docker,
systemctl start docker
systemctl enable docker

執行一下docker -v,可以用來查看Docker安裝的版本資訊,也可以幫助我們查看docker的安裝狀態;如果正常展示版本資訊,代表Docker已經安裝成功,
4. 關于配置阿里云鏡像源
在Docker安裝完畢后,之后我們去拉取docker鏡像時,一般默認會去docker官方源拉取鏡像,但是外網比較慢,所以更換為阿里云鏡像倉庫源進行鏡像下載加速,
登錄阿里云官網,打開阿里云容器鏡像服務,點擊左側選單最下面的鏡像加速器,選擇CentOS,按照官網的提示執行命令,即可更換docker鏡像源地址,
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://***.mirror.aliyuncs.com"]
}
EOF


安裝jenkins
安裝完Docker后,我們只是擁有了一個可以承載服務的載體,想實作自動化構建,還需要安裝一個構建工具Jenkins,
Jenkins是一個基于Java語言開發的持續構建工具平臺,主要用于持續、自動地構建/測驗你的軟體和專案,它可以執行你預先設定好的設定和構建腳本,也可以和Git代碼庫做集成,實作自動觸發和定時觸發構建,
1. 安裝Java
因為Jenkins是Java撰寫的持續構建平臺,所以安裝Java必不可少,
openjdk是SunJDK的一種開源實作,openjdk和sunjdk的具體區別,
直接使用yum包管理器安裝openjdk即可:
yum install -y java
2. 使用yum安裝Jenkins
由于yum源不自帶Jenkins的安裝源,我們需要自己匯入一份Jenkins安裝源進行安裝,匯入后,使用yum命令安裝即可,
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
注:wget后面的引數是大寫O
3. 啟動Jenkins
Jenkins安裝后,會將啟動命令注冊到系統Service命令中,所以直接使用系統service命令啟動Jenkins即可,有三個命令可以使用,分別對應啟動/重啟/停止,
service jenkins start # 啟動Jenkins
# service jenkins restart # 重啟Jenkins
# service jenkins stop # 停止Jenkins

4. 給jenkins放行埠
在啟動Jenkins后,Jenkins會開啟它的默認埠8080,但由于防火墻限制,我們需要手動讓防火墻放行8080埠才能對外訪問到界面,
這里我們在CentOS下的firewall-cmd防火墻添加埠放行規則,添加完后重啟防火墻,
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=50000/tcp --permanent
systemctl reload firewalld

服務啟動后,訪問IP:8080,Jenkins第一次啟動時間一般比較長(看服務器性能)

5. 初始化jenkins配置
-
解鎖jenkins
在
Jenkins啟動完成后,會自動跳轉至下面這個界面,這是Jenkins的解鎖界面,你需要輸入存放在服務器的初始解鎖密碼才能進行下一步操作,
Jenkins啟動后,會生成一個初始密碼,該密碼在服務器的檔案記憶體放,我們可以進入服務器查看密碼內容,將密碼填寫在Jenkins的管理員密碼輸入框內:cat /var/lib/jenkins/secrets/initialAdminPassword點擊
繼續按鈕,解鎖Jenkins, -
下載插件
解鎖后就到了插件下載頁面,這一步要下載一些
Jenkins的功能插件,
因為
Jenkins插件服務器在國外,所以速度不太理想,需要更換為清華大學的Jenkins插件源,再安裝插件,更換方法:進入服務器,將
/var/lib/jenkins/updates/default.json內的插件源地址替換成清華大學的源地址,將google替換為baidu即可,sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' /var/lib/jenkins/updates/default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' /var/lib/jenkins/updates/default.json接著點擊
安裝推薦的插件即可,
6. 安裝完畢
插件安裝完畢后,接著是注冊管理員賬號,按照提示一路配置后,直到看到以下界面代表安裝成功,

整體安裝結果測驗
Jenkins算是啟動成功了,但是還需要對Jenkins做一點簡單的配置,才可以讓它構建docker鏡像,
點擊Jenkins首頁->左側導航->新建任務->Freestyle project
新建完畢后,找到構建一項,選擇增加構建步驟,選擇執行shell,輸入以下命令:
docker -v
docker pull node:latest
該命令會去拉取一個nodejs穩定版的鏡像,我們可以來測驗Docker的可用性
保存后,我們點擊左側選單的立即構建,Jenkins就會開始構建,選擇左側歷史記錄第一項(最新),點擊控制臺輸出,查看構建日志,

執行后,發現提示無訪問權限,這里就涉及到Linux下的Unix Socket權限問題
Unix Socket權限問題
docker的架構是C/S架構,使用docker命令時,其實是命令使用socket與docker的守護行程進行通信,才能正常執行docker命令,
而在Linux中,Unix socket屬于root用戶,因此需要root權限才能訪問,官方的解釋:
Manage Docker as a non-root user The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user. If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.
在docker中,docker提供了一個用戶組的概念,我們可以將執行Shell的用戶添加到名稱為docker的用戶組,則可以正常執行docker命令,
在Jenkins中執行的終端用戶為jenkins,所以我們只需要將jenkins加入到docker用戶組即可:
groupadd docker # 新增docker用戶組
gpasswd -a jenkins docker # 將當前用戶添加至docker用戶組
newgrp docker # 更新docker用戶組
加入后,重啟Jenkins:
service jenkins restart
重啟Jenkins后,再次執行腳本,此時執行成功,

本文來自博客園,作者:beckyye,轉載請注明原文鏈接:https://www.cnblogs.com/halftonine/p/16910987.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/539630.html
標籤:其他
上一篇:跨域
