自动化应用程序容器化和镜像备份发布的方法与流程

文档序号:20874719发布日期:2020-05-26 16:20阅读:252来源:国知局
自动化应用程序容器化和镜像备份发布的方法与流程

本发明涉及docker容器镜像生成技术领域,具体涉及一种自动化应用程序容器化和镜像备份发布的方法。



背景技术:

容器虚拟化技术作为一种轻量级的虚拟化技术,近年来被各行业广泛认可和采用。应用程序容器化部署要比传统的应用程序部署具有更多优势,能够快速部署和启动、节约成本、方便持续集成和标准化应用发布等。随着自主可控事业的发展,在国产龙芯cpu平台上的应用程序容器化的需求更凸显出来。

容器虚拟化技术,基于docker技术,这些年来一直都是一个国内外研究的热点。虽然容器的进程和宿主操作系统相互隔离,但目前市面上的主流容器镜像绝大多数只支持在x86平台上运行,其他平台如arm等也只有很少的基础容器镜像,而龙芯平台的docker技术也起步不久,上层用户在龙芯平台上的容器化应用开发部署可能需要重新手工制作大量docker镜像,这带来了很多的不便利因素,在一定程度上限制了自主可控事业的快速发展。因此,设计一种应用于国产龙芯cpu平台的自动化的应用程序容器化的方法是非常有必要的。

现有技术中,存在一些自动化的应用程序镜像化的方法方案,多为分散性的某个具体应用程序的容器化部署方案,这些方案也都是基于docker技术进行实现的。

现有技术中虽然可以实现某些应用程序的容器化部署,但只是一些基于docker技术的分散性的方案,更没有针对在龙芯cpu平台的适配处理,且相关基础docker镜像从开源仓库获取,只能在x86平台或一些伪x86平台上运行,无法满足龙芯cpu平台下的应用程序容器化部署需求。



技术实现要素:

为解决现有技术存在的不足,本发明提供了一种自动化应用程序容器化和镜像备份发布方法,包括如下步骤:

步骤s1,构建基础镜像:基于硬件平台和操作系统,构建基础镜像;

步骤s2,构建基础构建镜像:从基础镜像启动容器,以相应的编程语言分类,分别增量制作基础构建镜像;

步骤s3,构建应用程序容器化镜像:从基础构建镜像启动容器,将应用程序源代码注入到容器内的已知目录,并为应用程序源代码安装编译和运行时的依赖项,在容器内对应用程序源代码进行编译处理,将相应文件安装到指定路径,将新的容器提交为应用程序容器化镜像;

步骤s4,应用程序容器化镜像测试及备份发布:运行应用程序容器化镜像,利用应用程序测试脚本执行测试验证。

其中,所述步骤s4中,应用程序容器化镜像运行测试通过后,将应用程序容器化镜像保存为压缩包,上传至备份服务器,同时将应用程序容器化镜像发布至公有镜像仓库或私有镜像仓库。

其中,所述步骤s4中,将应用程序容器化镜像上传至备份服务器的路径及发布至公有镜像仓库或私有镜像仓库的路径以参数形式传入。

其中,所述步骤s1包括:

步骤s11:检测当前工作区域磁盘剩余空间是否充足,若不充足,则退出进程,若充足,则继续;

步骤s12:检测工作区域操作系统docker服务是否正在进行,如果没有正常运行则退出工作进程,如果正常运行,则继续;

步骤s13:创建工作目录,在工作目录下创建子工作目录,在子工作目录下创建安装目录、构建目录及备份目录;

步骤s14:将必要基础软件包安装至安装目录下;

步骤s15:将安装目录压缩成格式压缩包,并将格式压缩包保存至构建目录下;

步骤s16:在构建目录下利用模板文件生成dockerflie脚本,调用镜像构建命令制作生成基础镜像;

步骤s17:调用镜像保存命令将生成的基础镜像保存至备份目录下,并生成校验码。

其中,所述步骤s14中,安装基础软件包时使用--setopt=tsflags=nodocs参数,避免包括man手册文件在内的不相关文档的安装,并且,在安装之后删除非必要文件。

其中,所述步骤s2包括:

步骤s21:根据对应的编程语言种类,创建工作目录workdir/xxxx/、构建目录workdir/xxxx/build/以及备份目录workdir/xxxx/backup/,其中,xxxx表示不同的编程语言分类;

步骤s22:进入构建目录workdir/xxxx/build,根据模板生成相应编程语言的基础构建镜像的dockerfile脚本;

步骤s23:从步骤s1生成的基础镜像启动容器,安装编程语言基础编译环境,并提交为新的镜像,即基础构建镜像;

步骤s24:调用镜像保存命令将生成的基础构建镜像以压缩包的形式保存至备份目录workdir/xxxx/backup/下,并生成校验码。

其中,所述步骤s3包括:

步骤s31:创建工作目录workdir/app-xxx/、构建目录workdir/app-xxx/build/以及备份目录workdir/app-xxx/backup/,其中xxx由输入的应用程序源代码路径解析得到;

步骤s32:调用s2icreate命令在构建目录workdir/app-xxx/build/下生成dockerfile脚本模板、配置文件模板及应用程序运行脚本模板;

步骤s33:结合应用程序修改完善dockerfile脚本、配置文件及应用程序运行脚本文件;

步骤s34:根据应用程序所使用的编程语言,从步骤s2生成的基础构建镜像中选取合适的,由基础构建镜像启动容器;

步骤s35:根据步骤s31中,解析得到的应用程序源代码输入路径,加载应用程序源代码,将应用程序源代码注入到容器内的已知目录;

步骤s36:解析配置文件,安装应用程序源代码编译及运行时的依赖库;

步骤s37:在容器内对应用程序源代码进行编译处理,将相应文件安装到指定路径,将新的容器提交为应用程序容器化镜像;

步骤s38:将应用程序容器化镜像入口点设置为将启动相应服务以托管应用程序的脚本,即应用程序运行脚本。

其中,所述步骤s4包括:

步骤s41:基于步骤s3生成的应用程序容器化镜像,调用应用程序测试脚本执行测试验证,若运行失败,则退出进程,否则继续;

步骤s42:将步骤s3生成的应用程序容器化镜像以压缩包的形式保存至备份目录workdir/app-xxx/backup/下,并生成校验码;

步骤s43:调用镜像上传命令将应用程序容器化镜像发布至公有镜像仓库或私有镜像仓库;

步骤s44:遍历应用程序内所有的工作目录,将所有备份目录下的压缩包及对应的校验码上传备份至指定的备份服务器。

本发明提供的自动化应用程序容器化和镜像备份发布的方法,填补了x86平台应用程序容器化镜像无法在龙芯平台下部署使用的问题,弥补了国产龙芯cpu平台的自动化应用程序容器化和容器镜像(批量)自动化发布技术的空白,使得应用程序可以自动化地在龙芯cpu平台上的容器中进行编译、(打包)安装、部署及备份发布。

附图说明

图1:本发明的自动化应用程序容器化和镜像备份发布方法在实现过程中的各镜像的逻辑联系图。

图2:本发明的自动化应用程序容器化和镜像备份发布方法的实现流程图。

图3:本发明在构建基础镜像时的具体流程图。

图4:本发明在构建基础构建镜像时的具体流程图。

图5:本发明在构建应用程序容器化镜像时的具体流程图。

图6:本发明在应用程序容器化镜像测试及备份发布时的具体流程图。

具体实施方式

为了对本发明的技术方案及有益效果有更进一步的了解,下面结合附图详细说明本发明的技术方案及其产生的有益效果。

本发明的自动化应用程序容器化和镜像备份发布方法,主要针对国产平台上自动化的应用程序的镜像构建,并能够支持多种计算机语言应用程序的容器化构建,特别适用于国产龙芯cpu平台的应用程序容器化及容器镜像的自动化备份发布的实现。

图1为本发明的自动化应用程序容器化和镜像备份发布方法在实现过程中的各镜像的逻辑联系图,如图1所示,本发明的在构建自动化应用程序的镜像过程中,所使用的容器及程序包括:1.基础镜像;2.基于不同编程语言的基础构建镜像;3.应用程序源代码;4.应用程序容器化镜像。图2为本发明的自动化应用程序容器化和镜像备份发布方法的实现流程图,以龙芯平台下的构建和发布为例,如图2所示,其主要过程包括:

1.构建基础镜像:基于龙芯cpu硬件平台和国产中标麒麟服务器操作系统软件环境,制作包含软件包数量较少、体积较小的基础镜像,事先需搭建好yum源。

2.构建基础构建镜像:从龙芯平台下的基础镜像启动容器,以各种编程语言分类,分别增量制作龙芯平台下的基础构建镜像。

3.构建应用程序容器化镜像:从龙芯平台下的基础构建镜像启动容器,将应用程序源代码注入到容器内的已知目录,并为源代码安装编译和运行时依赖项,在容器内对应用程序源代码进行编译处理,将相应文件安装到指定路径,将新的容器提交为应用程序容器化镜像。

4.应用程序容器化镜像运行测试:运行镜像,利用应用程序测试脚本执行测试验证。应用程序容器化镜像运行测试通过后,将应用程序容器化镜像保存为压缩包,上传至备份服务器,同时将应用程序容器化镜像上传(发布)至dockerhub或私有镜像仓库。此过程通过调用自动化脚本执行实现,应用程序容器化镜像上传及发布的路径,以参数形式传入。

图3为本发明在构建基础镜像时的具体流程图,如图3所示,此步骤旨在实现龙芯平台下的基础镜像的构建及本地备份,其详细流程如下:

(1)检测当前工作区域磁盘剩余空间是否充足,如设定默认检测阈值为20g(阈值可通过配置文件手动设定),若磁盘剩余空间不足20g,则会退出进程,否则继续。

(2)检测工作区域操作系统docker服务是否正在运行,如果docker服务没有正常运行则退出工作进程,否则创建工作目录workdir/,在工作目录下创建子工作目录workdir/base/,并在子工作目录下创建安装目录workdir/base/rootfs/、构建目录workdir/base/build/以及备份目录workdir/base/backup/。

(3)调用yum命令将一些必要基础软件包安装到workdir/base/rootfs/目录下,安装软件包时使用--setopt=tsflags=nodocs参数,即不安装相关文档、man手册等文件,并在安装后删除部分非必要文件,以尽可能控制安装文件总大小,以使基础镜像的体积尽可能地小。

(4)安装后将workdir/base/rootfs/目录压缩成tar.xz格式压缩包,并将tar.xz格式压缩包保存到构建目录workdir/base/build/下。

(5)在构建目录workdir/base/build/下利用模板文件生成dockerfile,调用dockerbuild命令制作生成基础镜像。

(6)调用dockersave命令将生成的基础镜像以tar包形式保存到workdir/base/backup/目录下,并生成md5校验码。

图4为本发明在构建基础构建镜像时的具体流程图,如图4所示,此步骤旨在实现龙芯平台下的基础构建镜像的构建及本地备份,其详细流程如下:

(1)基础构建镜像主要按编程语言分类,创建工作目录workdir/xxxx/、构建目录workdir/xxxx/build/以及备份目录workdir/xxxx/backup/,其中,xxxx表示不同的编程语言分类,例如java、php、nodejs、python、perl、ruby等。

(2)进入构建目录workdir/xxxx/build/,根据模板生成相应编程语言的基础构建镜像的dockerfile。

(3)从步骤1生成的基础镜像启动容器,安装编程语言基础编译环境,并提交为新的镜像,即基础构建镜像。

(4)调用dockersave命令将生成的基础构建镜像以tar包形式保存到备份目录workdir/xxxx/backup/下,并生成md5校验码。

图5为本发明在构建应用程序容器化镜像时的具体流程图,如图5所示,此步骤旨在实现龙芯平台下的应用程序容器化镜像的构建,其详细流程如下:

(1)创建工作目录workdir/app-xxx/、构建目录workdir/app-xxx/build/以及备份目录workdir/app-xxx/backup/,其中,xxx由输入的应用程序源代码路径解析得到。

(2)调用s2icreate命令在构建目录workdir/app-xxx/build/下生成dockerfile模板、配置文件模板、应用程序运行脚本模板。

(3)结合应用程序修改完善dockerfile、配置文件、应用程序运行脚本等文件。

(4)依据应用程序所使用的编程语言,从步骤2生成的基础构建镜像中选取合适的,由基础构建镜像启动容器。

(5)根据解析所得的应用程序源代码输入路径,加载应用程序源代码,将应用程序源代码注入到容器内的已知目录。

(6)解析配置文件,安装应用程序源代码编译及运行时的依赖库。

(7)在容器内对应用程序源代码进行编译处理,将相应文件安装到指定路径,将新的容器提交为应用程序容器化镜像,并将镜像入口点设置为将启动相应服务以托管应用程序的脚本,即应用程序运行脚本。

图6为本发明在应用程序容器化镜像测试及备份发布时的具体流程图,如图6所示,此步骤旨在实现龙芯平台下应用程序容器化镜像的测试、备份及发布,其详细流程如下:

(1)基于步骤3生成的应用程序容器化镜像,调用应用程序测试脚本执行测试验证。

(2)如运行测试失败,则退出进程,否则将步骤3生成的应用程序容器化镜像以tar包形式保存到备份目录workdir/app-xxx/backup/下,并生成md5校验码。

(3)调用dockerpush将镜像发布至dockerhub或镜像仓库。

(4)遍历工作目录workdir/,将所有备份目录backup/下的tar包及对应md5校验码上传备份至指定的备份服务器。

本发明中,所谓的“容器虚拟化”,是一种通过虚拟化技术来隔离运行在主机上不同进程,从而达到进程之间、进程和宿主操作系统相互隔离、互不影响的技术。这种相互孤立进程叫容器,它有自己的一套文件系统资源和从属进程。

本发明中,所谓的“从源构建”,是一种容器虚拟化形式,它利用docker技术,将应用程序源代码和基础镜像增量融合,使应用程序源代码实现在容器中的编译安装并构建出可直接运行部署的包含应用程序的docker镜像。

本发明中,所谓的“--setopt=tsflags=nodocs参数”,为linux运行环境下yum命令的一个具体的参数项,该参数的功能在于:使用yum命令安装软件包时,不安装软件包默认带有的man手册、doc文档等文件。

本发明中,所谓的“s2icreate”,是一个生成模版文件的命令,其作用是创建生成dockerfile模版、配置文件模版以及应用程序运行脚本模版。

本发明的有益效果如下:

1、通过使用模板自动生成龙芯平台下基础镜像及基础构建镜像的镜像文件,并通过调用镜像构建命令构建基础镜像及基础构建镜像,实现了应用程序容器化的自动化。

2、本发明所构建的基础镜像和基础构建镜像在国产龙芯平台下具有可重用性,方便了国产龙芯平台的二次开发。

3、通过压缩操作及--setopt=tsflags=nodocs参数的调用,极大地缩小了镜像大小。

4、各步骤中,在镜像发布的同时将镜像以压缩包形式备份,使得数据保存多一层保障,且方便应用程序容器化镜像在无外部网络或镜像仓库无法访问的情况下进行部署。

综上,本发明提供的自动化应用程序容器化和镜像备份发布的方法,提供了一种可以在龙芯平台下实现自动化从源构建应用程序容器镜像及镜像自动化备份发布的方案,填补了x86平台应用程序容器化镜像无法在龙芯平台下部署使用的问题,弥补了国产龙芯cpu平台的自动化应用程序容器化和容器镜像(批量)自动化发布技术的空白,使得应用程序可以自动化地在龙芯cpu平台上的容器中进行编译、(打包)安装、部署及备份发布。

虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1