《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.vephp.com/jiaocheng/1972.html