《Jenkins & Docker在HULK的落地實踐》要點:
本文介紹了Jenkins & Docker在HULK的落地實踐,希望對您有用。如果有疑問,可以聯系我們。
巧婦難為無米之炊,玩容器,“鏡像”就是下鍋的米,我們私有云Hulk平臺的容器服務,向用戶提供UI頁面化的一整套的鏡像定制、制作、管理、私有鏡像倉庫的服務,這套服務的背后技術實現,Jenkins算是“引擎”,本文簡要介紹這其中的技術方案;
Docker的鏡像,已然成為容器鏡像的事實標準,我們的容器服務也是基于Docker構建的;
手工制作Docker鏡像時,大概這幾步:
1、創建制作鏡像的工作目錄
# mkdir nginx-19-el6# cd nginx-19-el6
# mkdir rootfs# tree rootfs/rootfs/
└── usr
└── local
└── nginx
└── conf
├── fastcgi.conf
├── include
│ ? └── xxx.conf
├── mime.types
└── nginx.conf
# cat dockerfileFROM r.your.domain/admin/centos-68:latest
RUN yum -y install nginx-1.9.15-5.el6 && yum clean all
ADD rootfs.tar.gz /
EXPOSE 80
ENTRYPOINT [“/usr/local/nginx/sbin/nginx”]
CMD [“-c”, “/usr/local/nginx/conf/nginx.conf”, “-g”, “daemon off;”]
# docker build -t r.your.domain/xxx/nginx-19-el6:01
# docker push r.your.domain/xxx/nginx-19-el6:01
針對上面提到的效率、使用門檻的問題,簡要介紹下我們的解決方案;
在面向用戶的功能方面,要解決好下面幾個主要問題:
在后端的技術實現方面,我們采用下面的架構:
UI頁面上支持用戶管理自己的配置文件(rootfs)、運行的命令(RUN)、入口程序、暴露的端口等,比如:
后臺會把這些內容、信息,存儲到GitLab;
如果用戶觸發“制作鏡像”,會觸發一個Jenkins的job,該job從GitLab拉取后,根據一個Jenkinsfile里定義邏輯“制作鏡像”;
Jenkinsfile里充分利用了pipeline的語法,把一系列步驟串起來:前期檢查、創建tar文件、生成dockerfile、build、push、清理;
下面是一個示例的Jenkinsfile:
#!groovypipeline {
agent anyenvironment {
REGISTRY_ACCESS = credentials(‘xxx’)
}options {
timeout(time: 30, unit: ‘MINUTES’)
}// a list of parameters provided when triggering
parameters {
string(name: ‘registry’, defaultValue: ”)
string(name: ‘namespace’, defaultValue: ”)
string(name: ‘image_name’, defaultValue: ”)
string(name: ‘image_tag’, defaultValue: ”)
}stages {
stage(‘Verify’) {
steps { ? ? ? ? ? ? ? ?echo “To check whether related project exists and specified tag is usable…”
sh “xxx xxx xxx”
}
}stage(‘Prepare’) {
steps { ? ? ? ? ? ? ? ?echo “To generate ‘Dockerfile’ and archive ‘rootfs’ directory…”
sh “xxx xxx xxx”
sh “xxx xxx xxx”
}
}stage(‘Build’) {
steps { ? ? ? ? ? ? ? ?echo “To build image…”
sh “xxx xxx xxx”
}
}stage(‘Push’) {
steps { ? ? ? ? ? ? ? ?echo ‘To push image…’
sh “xxx xxx xxx”
}
}
}post {
always { ? ? ? ? ? ?echo “Always clean up, no matter whether the building and pushing was failure or success”
sh “xxx xxx xxx”
}
}
鏡像倉庫管理
制作好的鏡像,存儲于私有鏡像倉庫,用戶在頁面可以方便的管理,也可以在自己測試環境,docker pull拉取鏡像、docker run測試鏡像;
本文主要給大家介紹了Jenkins&Docker是如何在HULK落地的,其實最初的出發點還是解決當前Docker CLI下上手使用成本高的問題.在經過WEB化和自動化之后,會大大降低業務的接入使用成本,最終助力Docker在業務的快速實踐.
文章來自微信公眾號:HULK一線技術雜談
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/1972.html