Hulk容器服務的映象CI解決方案

2021-09-23 06:27:35 字數 2662 閱讀 4963

前言

巧婦難為無公尺之炊,玩容器,「映象」就是下鍋的公尺,我們私有雲hulk平台的容器服務,向使用者提供ui頁面化的一整套的映象定製、製作、管理、私有映象倉庫的服務,這套服務的背後技術實現,jenkins算是「引擎」,本文簡要介紹這其中的技術方案;

純手工搗鼓docker映象

docker的映象,已然成為容器映象的事實標準,我們的容器服務也是基於docker構建的;

手工製作docker映象時,大概這幾步:

1、建立製作映象的工作目錄

# mkdir nginx-19-el6 

# cd nginx-19-el6 

2、可以建立乙個子目錄,存放要新增到映象中的配置檔案,並組織好目錄層次,最後用add指令統一新增到映象中

# mkdir rootfs 

# tree rootfs/ 

rootfs/ 

└── usr 

└── local

└── nginx 

└── conf 

├── fastcgi.conf 

├── include 

│   └── ***.conf 

├── mime.types 

└── nginx.conf 

3、寫乙個dockerfile

# cat dockerfile 

from

r.your.domain/admin/centos-68:latest 

run yum -y install nginx-1.9.15-5.el6 && yum clean all

addrootfs.tar.gz / 

expose 80 

entrypoint ["/usr/local/nginx/sbin/nginx"

] cmd ["-c"

, "/usr/local/nginx/conf/nginx.conf"

, "-g"

, "daemon off;"

]  4、build映象

# docker build -t r.your.domain/***/nginx-19-el6:01 . 

5、push到映象倉庫

# docker push r.your.domain/***/nginx-19-el6:01 

這種純手工的方式,很明顯,由於自動化程度低,工作量較大,尤其是當映象種類、版本較多以後,而且對於不了解docker命令、dockerfile語法的同學,使用門檻還是比較高哦;

ui頁面化、自動化地生產docker映象

針對上面提到的效率、使用門檻的問題,簡要介紹下我們的解決方案;

在面向使用者的功能方面,要解決好下面幾個主要問題:

映象內容的管理,主要是一些配置檔案,比如上面的rootfs目錄

dockerfile的定製、自動生成,比如定製run、expose、entrypoint、cmd

觸發build、push,以及映象倉庫的管理

在後端的技術實現方面,我們採用下面的架構:

映象內容管理、dockerfile定製生成

ui頁面上支援使用者管理自己的配置檔案(rootfs)、執行的命令(run)、入口程式、暴露的埠等,比如:

後台會把這些內容、資訊,儲存到gitlab;

jenkins實現自動化生產線

如果使用者觸發「製作映象」,會觸發乙個jenkins的job,該job從gitlab拉取後,根據乙個jenkinsfile裡定義邏輯「製作映象」;

jenkinsfile裡充分利用了pipeline的語法,把一系列步驟串起來:前期檢查、建立tar檔案、生成dockerfile、build、push、清理;

下面是乙個示例的jenkinsfile:

#!groovy 

pipeline  

options  

// a list of

parameters provided 

when

triggering 

parameters  

stages  

} stage('prepare'

)  } 

stage('build'

)  } 

stage('push'

)  } 

} post  

}映象倉庫管理

製作好的映象,儲存於私有映象倉庫,使用者在頁面可以方便的管理,也可以在自己測試環境,docker pull拉取映象、docker run測試映象;

成功解決 docker刪除映象 刪除容器

練習使用docker的時候建立了一大堆映象,現在想刪除那些沒用的 執行映象的時候會生成容器 映象是不可以被修改的 執行中的容器如果修改檔案,那都是修改容器空間中的檔案 不會影響到映象 例如有個映象imagea,docker執行a生成了containera 那麼需要刪除containera,才能刪除i...

發布映象到阿里雲容器服務

下一步之後,選擇本地倉庫既可 根據官方提供的命令來操作。在官網複製官方提供給自己的命令哦 1 登入阿里雲 root localhost docker login username simayxue registry.cn hangzhou.aliyuncs.com password login su...

Docker 服務 映象 容器簡單命令使用

docker 程序相關命令 啟動docker服務 systemctl start docker 檢視docker服務狀態 停止docker服務 systemctl stop docker 重啟docker服務 systemctl restart docker 設定開機啟動docker服務 docke...