一种开源容器升级方法及装置制造方法及图纸

技术编号:38816678 阅读:9 留言:0更新日期:2023-09-15 19:55
本申请提供了一种开源容器升级方法及装置,包括:将应用程序分层封装在所述开源容器的主程序运行层、开源组件容器层和私有组件容器层;获取待升级开源组件;基于所述待升级开源组件,升级所述开源组件容器层,以完成所述开源容器的升级。这样,通过对容器基础层进行分层,进一步降低应用程序和底层平台的耦合度,避免了因开源漏洞造成的频繁打包与投产,也降低了无效容器存储,减少了云计算资源的浪费,便于后续快速测试与投产。便于后续快速测试与投产。便于后续快速测试与投产。

【技术实现步骤摘要】
一种开源容器升级方法及装置


[0001]本申请涉及软件开发的
,特别是涉及一种开源容器升级方法及装置。

技术介绍

[0002]JAVA开发会大规模使用开源组件,以加快开发速度。但是开源组件会经常产生开源漏洞,需要系统进行整改及回归测试,对开源组件进行升级。但随着开源组件的增多,整改及回归测试的频率逐渐增加,需要浪费人力、物力。
[0003]现有技术中,通过提供基础编辑容器,把基础组件放在基础层,开发人员编译代码放在应用层等方式对容器镜像分层存储,使用人员通过引用此容器,在进行后续打包容器的时候,把自定义编写的代码封装在基础层的下一层,通过容器内部实现基础层解耦,以借助流水线加速容器的下载(只下载变动的容器层),减少存储空间,减轻编译及投产压力。但这样的解耦方案属于侵入性方案,没有把两个部分做到完全解耦,每一次投产还是需要重新编译代码与镜像,仅仅是降低了使用端的下载成本和略微降低了容器镜像仓库的存储成本,还需要大量的人力及精力去管控项目。同时,频繁的开源升级也会造成频繁的容器打包与编译,占据大量的云计算资源。尤其在大型容器云运行平台,会存在上千万的容器同时运行,这种方式会面临的上千万容器的重复打包与编译,极大地浪费系统资源。
[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]为更清楚地说明本实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1为本申请实施例提供的开源容器升级方法的一种方法流程图;
[0038]图2为本申请实施例提供的开源容器升级方法的另一种方法流程图;
[0039]图3为本申请实施例提供的开源容器升级装置的一种结构示意图。
具体实施方式
[0040]现有技术中,通过提供基础编辑容器,把基础组件放在基础层,开发人员编译代码放在应用层等方式对容器镜像分层存储,使用人员通过引用此容器,在进行后续打包容器的时候,把自定义编写的代码封装在基础层的下一层,通过容器内部实现基础层解耦,以借助流水线加速容器的下载(只下载变动的容器层),减少存储空间,减轻编译及投产压力。但这样的解耦方案属于侵入性方案,没有把两个部分做到完全解耦,每一次投产还是需要重新编译代码与镜像,仅仅是降低了使用端的下载成本和略微降低了容器镜像仓库的存储成本,还需要大量的人力及精力去管控项目。同时,频繁的开源升级也会造成频繁的容器打包与编译,占据大量的云计算资源。尤其在大型容器云运行平台,会存在上千万的容器同时运行,这种方式会面临的上千万容器的重复打包与编译,极大地浪费系统资源。
[0041]本申请实施例提供的方法由计算机设备执行,用于减少开源升级造成本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种开源容器升级方法,其特征在于,开源容器包括主程序运行层、开源组件容器层和私有组件容器层,所述方法包括:将应用程序分层封装在所述开源容器的主程序运行层、开源组件容器层和私有组件容器层;获取待升级开源组件;基于所述待升级开源组件,升级所述开源组件容器层,以完成所述开源容器的升级。2.根据权利要求1所述的方法,其特征在于,所述将应用程序分层封装在所述开源容器的主程序运行层、开源组件容器层和私有组件容器层,包括:将所述应用程序中的运行代码封装在所述主程序运行层;将所述应用程序中的开源组件封装在所述开源组件容器层;将所述应用程序中的私有编程语言库封装在所述私有组件容器层。3.根据权利要求1所述的方法,其特征在于,所述获取待升级开源组件,包括:获取第一待升级开源组件和第二待升级开源组件;所述基于所述待升级开源组件,升级所述开源组件容器层,包括:基于所述第一待升级开源组件和第二待升级开源组件,升级所述开源组件容器层。4.根据权利要求1所述的方法,其特征在于,在所述基于所述待升级开源组件,升级所述开源组件容器层之后,所述方法还包括:拷贝所述开源组件容器层和所述私有组件容器层的程序至共享目录,所述共享目录由所述主程序运行层、所述开源组件容器层和所述私有组件容器层共享;拷贝所述主程序运行层的程序至所述共享目录,生成合并程序。5.根据权利要求4所述的方法,其特征在于,在所述拷贝所述主程序运行层的程序至所述共享目录之...

【专利技术属性】
技术研发人员:刘梦龙
申请(专利权)人:中国建设银行股份有限公司内蒙古自治区分行
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1