首页 文章 精选 留言 我的

精选列表

搜索[CI/CD集成],共10018篇文章
优秀的个人博客,低调大师

Hulk容器服务的镜像CI解决方案

前言 巧妇难为无米之炊,玩容器,“镜像”就是下锅的米,我们私有云Hulk平台的容器服务,向用户提供UI页面化的一整套的镜像定制、制作、管理、私有镜像仓库的服务,这套服务的背后技术实现,Jenkins算是“引擎”,本文简要介绍这其中的技术方案; 纯手工捣鼓Docker镜像 Docker的镜像,已然成为容器镜像的事实标准,我们的容器服务也是基于Docker构建的; 手工制作Docker镜像时,大概这几步: 1、创建制作镜像的工作目录 #mkdirnginx-19-el6 #cdnginx-19-el6 2、可以创建一个子目录,存放要添加到镜像中的配置文件,并组织好目录层次,最后用ADD指令统一添加到镜像中 #mkdirrootfs #treerootfs/ rootfs/ └──usr └──local └──nginx └──conf ├──fastcgi.conf ├──include │└──xxx.conf ├──mime.types └──nginx.conf 3、写一个dockerfile #catdockerfile FROMr.your.domain/admin/centos-68:latest RUNyum-yinstallnginx-1.9.15-5.el6&&yumcleanall ADDrootfs.tar.gz/ EXPOSE80 ENTRYPOINT["/usr/local/nginx/sbin/nginx"] CMD["-c","/usr/local/nginx/conf/nginx.conf","-g","daemonoff;"] 4、build镜像 #dockerbuild-tr.your.domain/xxx/nginx-19-el6:01. 5、push到镜像仓库 #dockerpushr.your.domain/xxx/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{ agentany environment{ REGISTRY_ACCESS=credentials('xxx') } options{ timeout(time:30,unit:'MINUTES') } //alistofparametersprovidedwhentriggering parameters{ string(name:'registry',defaultValue:'') string(name:'namespace',defaultValue:'') string(name:'image_name',defaultValue:'') string(name:'image_tag',defaultValue:'') } stages{ stage('Verify'){ steps{ echo"Tocheckwhetherrelatedprojectexistsandspecifiedtagisusable..." sh"xxxxxxxxx" } } stage('Prepare'){ steps{ echo"Togenerate'Dockerfile'andarchive'rootfs'directory..." sh"xxxxxxxxx" sh"xxxxxxxxx" } } stage('Build'){ steps{ echo"Tobuildimage..." sh"xxxxxxxxx" } } stage('Push'){ steps{ echo'Topushimage...' sh"xxxxxxxxx" } } } post{ always{ echo"Alwayscleanup,nomatterwhetherthebuildingandpushingwasfailureorsuccess" sh"xxxxxxxxx" } } 镜像仓库管理 制作好的镜像,存储于私有镜像仓库,用户在页面可以方便的管理,也可以在自己测试环境,docker pull拉取镜像、docker run测试镜像; 本文作者:佚名 来源:51CTO

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册