本申请涉及容器技术领域,公开了一种容器镜像构建方法
【技术实现步骤摘要】
容器镜像构建方法、系统、装置、设备和存储介质
[0001]本申请涉及容器
,尤其涉及一种容器镜像构建方法
、
装置
、
系统
、
设备和存储介质
。
技术介绍
[0002]Docker
是一种容器技术,它可以将一个应用程序及其依赖项打包在一个容器中,以便在任何地方运行,这种方式使得应用程序的部署和管理更加简单和灵活
。
传统的
Java
程序打包成容器镜像的过程可如图1所示,包括:在
Java
程序的根目录下创建一个名为
Dockerfile
的文件,
Dockerfile
是一个文本文件,里面包含了构建容器镜像所需的指令,构建容器镜像的
Dockerfile
文件放在构建上下文目录中,并存在本地文件系统
。Docker
镜像的构建过程是
Docker
的守护进程执行的,
Docker
守护进程通过执行
Dockerfile
中的指令,完成容器镜像的构建,构建完成后输出新镜像的
ID
;本地构建完镜像后,会继续推送至远程镜像仓库
。
[0003]专利技术人研究发现,传统方案中,每次
java
程序的局部更新都要全量打包镜像,导致存储
、
带宽等容器构建资源的浪费
。
技术实现思路
[0004]基于此,有必要针对上述技术问题,提供一种容器镜像构建方法
、
装置
、
系统
、
设备和存储介质,用于减少容器构建资源的浪费
。
[0005]第一方面,提供了一种容器镜像构建方法,所述方法包括:
[0006]计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中;
[0007]当需再次构建所述应用程序的容器镜像时,计算当前所述项目文件的第二哈希值,并从所述缓存中确定出所述应用程序对应的第一哈希值;
[0008]确定所述第二哈希值与所述缓存中的第一哈希值的匹配结果;
[0009]根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像;
[0010]将所述目标容器镜像推送至容器镜像仓库
。
[0011]进一步地,所述根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像,包括:
[0012]当所述第二哈希值与所述缓存中的第一哈希值为相匹配时,从所述缓存提取出所述第一哈希值所关联的中间层镜像;
[0013]将所述关联的中间层镜像作为所述目标容器镜像
。
[0014]进一步地,所述根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像,还包括:
[0015]当所述第二哈希值与所述缓存中的第一哈希值为不匹配时,识别出所述项目文件的变化文件;
[0016]从所述缓存提取出所述第一哈希值所关联的中间层镜像;
[0017]根据所述变化文件更新所述所关联的中间层镜像,将更新后的所述中间层镜像作为所述目标容器镜像
。
[0018]进一步地,所述计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中,包括:
[0019]检查所述缓存是否存在所述应用程序的项目文件所对应的中间层镜像;
[0020]当所述缓存为未否存在所述应用程序的项目文件所对应的中间层镜像,则计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中
。
[0021]进一步地,所述将所述第一哈希值与中间层镜像关联保存在缓存中,包括:
[0022]将所述第一哈希值作为缓存标识符,与所述第一哈希值对应的中间层镜像关联保存在缓存中
。
[0023]进一步地,保存在所述缓存的中间层镜像通过如下方式构建:
[0024]读取所述应用程序的配置文件,解析所述配置文件以获取所述应用程序的项目信息
、
所述应用程序的使用插件和所述配置文件的依赖项;
[0025]确定每个所述使用插件中容器构建过程中需执行的操作;
[0026]根据所述依赖项指示的依赖关系和所述操作,对所述应用程序的项目信息进行打包,以生成所述中间层镜像
。
[0027]第二方面,提供了一种容器镜像构建系统,所述容器镜像构建系统包括构建设备和容器镜像仓库,其中,所述构建设备用于实现如前述任一项所述的容器镜像构建方法
。
[0028]第三方面,提供了一种容器镜像构建装置,所述容器镜像构建装置包括:
[0029]计算模块,用于计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中;所述中间镜像为基于所述应用程序的项目文件所生成的中间层镜像;当需再次构建所述应用程序的容器镜像时,计算当前所述项目文件的第二哈希值,并从所述缓存中确定出所述应用程序对应的第一哈希值;
[0030]确定模块,用于确定所述第二哈希值与所述缓存中的第一哈希值的匹配结果;根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像;
[0031]推送模块,用于将所述目标容器镜像推送至容器镜像仓库
。
[0032]第四方面,提供了一种计算机设备,包括存储器
、
处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如前述任一项所述的容器镜像构建方法的步骤
。
[0033]第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如前述任一项所述的容器镜像构建方法的步骤
。
[0034]与传统的方案不同的是,本方案预先利用哈希算法将首次构建的中间层镜像先保存到缓存中,基于文件变化,采用相应的构建策略,利用所述缓存中的中间层镜像直接确定出应用程序对应的目标容器镜像,并进行后续推送,以将所述目标容器镜像推送至容器镜像仓库,无需从头到尾基于应用程序的项目文件进行重复构建,也即不需要对应用程序的项目文件进行全量打包镜像,能够极大的释放存储和带宽等容器构建资源,而且利用缓存
和哈希值关联的方式,充分的利用缓存,加快了容器镜像构建过程
。
附图说明
[0035]为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图
。
[0036]图1是传统方案中容器构建的一过程示意图;
[0037]图2是本申请一实施例中容器镜像构本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.
一种容器镜像构建方法,其特征在于,所述方法包括:计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中;当需再次构建所述应用程序的容器镜像时,计算当前所述项目文件的第二哈希值,并从所述缓存中确定出所述应用程序对应的第一哈希值;确定所述第二哈希值与所述缓存中的第一哈希值的匹配结果;根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像;将所述目标容器镜像推送至容器镜像仓库
。2.
如权利要求1所述的容器镜像构建方法,其特征在于,所述根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像,包括:当所述第二哈希值与所述缓存中的第一哈希值为相匹配时,从所述缓存提取出所述第一哈希值所关联的中间层镜像;将所述关联的中间层镜像作为所述目标容器镜像
。3.
如权利要求2所述的容器镜像构建方法,其特征在于,所述根据所述匹配结果与所述缓存中的中间层镜像,确定出待推送的目标容器镜像,还包括:当所述第二哈希值与所述缓存中的第一哈希值为不匹配时,识别出所述项目文件的变化文件;从所述缓存提取出所述第一哈希值所关联的中间层镜像;根据所述变化文件更新所述所关联的中间层镜像,将更新后的所述中间层镜像作为所述目标容器镜像
。4.
如权利要求1所述的容器镜像构建方法,其特征在于,所述计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中,包括:检查所述缓存是否存在所述应用程序的项目文件所对应的中间层镜像;当所述缓存为未否存在所述应用程序的项目文件所对应的中间层镜像,则计算应用程序对应的项目文件的第一哈希值,将所述第一哈希值与中间层镜像关联保存在缓存中
。5.
如权利要求1所述的容器镜像构建方法,其特征在于,所述将所述第一哈希值与中间层镜像关联保存在缓存中,包括:将所述第一哈希值作为缓存标...
【专利技术属性】
技术研发人员:姚夏冰,张家华,王刚峰,韩伯文,朱浩,
申请(专利权)人:深圳前海环融联易信息科技服务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。