1、各個組件的功能描述:linux
Docker 是一個開源的應用容器引擎。nginx
Jenkis 是一個開源自動化服務器。laravel
(1).負責監控gitlab代碼、gitlab中配置文件的變更;git
(2).負責執行鏡像文件的構建、上傳與下載;docker
(3).經過Rancher插件系統構建stack/service;shell
GitLab: 是一個用於倉庫管理系統的開源項目,使用Git做爲代碼管理工具。npm
(1).保存項目配置文件;centos
(2).nginx定製配置文件;服務器
(3).Dockerfile文件;app
Harbor:開源的docker鏡像倉庫管理系統,比較方便管理維護鏡像。
(1)負責構建後鏡像的存儲
rancher:容器編排管理工具。
(1)經過API負責接受jenkins的調用,自動建立、更新stack/service;
(2)實現服務的擴容縮容
2、流程導圖說明:
① 開發人員提交代碼提交到gitlab
②gitlab鉤子會觸發jenkins執行下載對應項目的env、nginx配置文件、Dockerfile和最新版本的代碼
③jenkins執行shell腳本:composer安裝laravel插件和npm安裝模塊,編譯生成js文件。無缺的代碼經過docker build Dockerfile 指令打包成鏡像
④上傳構建好的鏡像push到harbor鏡像倉庫
⑤jenkins藉助Rancher的插件經過API與rancher交互更新service達到更升級容器的目的(也就是更新代碼版本),其中pull鏡像的這一步會經過saltstack並行從harbor上下拉以前構建好的鏡像到多個主機上
以上流程完整的實現了CI\CD,這裏主要是jenkins部分是關鍵位置之一。
3、從零開始搭建
1.首先檢查虛擬機的版本(centos7,內核3.10及以上)
2.安裝JDK1.8
3.確保yum 包更新到最新(截圖就不發了...更新包比較多)
yum -y update(可能須要點時間去更新)
systemctl disable firewalld.service(永遠關閉防火牆)
以上內容最好安裝在原始機器上面(專門準備一臺虛擬機安裝JDK插件,而後其餘的安裝經過克隆,而後在進行安裝)
4、安裝docker容器(對以上操做的集羣克隆一臺,須要MAC地址)
(1).卸載
舊版本:
yum remove docker docker-common docker-selinux docker-engine
(2).安裝須要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
(3).設置yum源
yum -y install yum-utils、
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(4).查看可用的全部倉庫中全部docker版本
yum list docker-ce --showduplicates | sort -r
(5).安裝docker
sudo yum install -y docker-ce
(7).設置開機並加入開機自啓動
systemctl start docker
systemctl enable docker
(8).查看docker的版本(檢查是否安裝成功,以及相關的版本)
docker version(代表docker安裝成功)
(9). 安裝docker-compose
5、安裝gitlab(代碼管理器)---使用docker進行安裝
(1).下載鏡像文件
docker pull beginor/gitlab-ce:11.0.1-ce.0
(2).建立etc、log、data目錄,便於往後升級
mkdir -p /mnt/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
(3).運行gitlab容器
docker run \
--detach \
--publish 8443:443 \
--publish 8090:80 \
--name gitlab \
--restart always \
-v /mnt/gitlab/etc:/etc/gitlab \
-v /mnt/gitlab/log:/var/log/gitlab \
-v /mnt/gitlab/data:/var/opt/gitlab \
beginor/gitlab-ce:11.0.1-ce.0
。。。。。。。。時間關係未完待續........以上狀況,親自安裝步驟並實現....