基于模板表示的容器镜像配置文件自动化生成方法及装置
未命名
08-15
阅读:67
评论:0

1.本发明属于网络安全和人工智能技术领域,具体涉及一种基于模板表示的容器镜像配置文件自动化生成方法及装置。
背景技术:
2.容器技术的出现为软件的开发运维模式提供了新的思路。容器技术将软件连同其运行环境与执行命令封装为镜像文件(image),运行时将镜像文件实例化为容器实例(container),确保在不同环境下运行结果的一致性。此外,镜像文件可被共享复用,极大提高了软件开发、部署、运维效率。编写容器镜像配置文件(例如singularity容器的singularity定义文件或docker容器的dockerfile)是常用的构建镜像的方法。然而,由于需要详细定义软件运行环境及其依赖关系,编写容器镜像配置文件往往要求用户拥有相关领域知识(domain knowledge),提高了容器技术的使用门槛。
3.为优化人工编写容器镜像配置文件流程,自动化生成配置文件是一种较好的解决思路。然而,现有容器镜像配置文件的自动化生成方法往往将容器镜像配置文件视作文本处理,并未详细考虑运行环境变量、依赖关系、组件版本号等对精确程度要求较高的内容,容易导致生成的容器镜像配置文件因依赖缺失而构建失败。此外,对于生成后的容器镜像配置文件没有进行后验测试,无法确保生成的容器镜像配置文件的使用成功率。
技术实现要素:
4.本发明的目的之一在于提供一种基于模板表示的容器镜像配置文件自动化生成方法,完成容器镜像配置文件的自动化生成,并且提高生成容器镜像配置文件的成功率。
5.为实现上述目的,本发明所采取的技术方案为:
6.一种基于模板表示的容器镜像配置文件自动化生成方法,所述基于模板表示的容器镜像配置文件自动化生成方法,包括:
7.步骤1、构建知识图谱,训练模型;
8.步骤1.1、获取容器镜像配置文件语料库,构建知识图谱,所述知识图谱包括由容器镜像配置文件提取的基础设施层信息和应用程序层信息,所述应用程序层信息包括多个应用程序信息;
9.步骤1.2、基于容器镜像配置文件,得到训练模型所需的训练集;
10.步骤1.3、利用所述训练集,训练得到一个用于生成基础模板的textcnn分类模型和一个用于填充基础模板的bert模型;
11.步骤2、根据用户需求生成容器镜像配置文件;
12.步骤2.1、获取输入的用户需求,解析生成需求向量;
13.步骤2.2、基于所述需求向量中每一个应用程序信息匹配最符合需求向量的基础镜像,并根据基础镜像从知识图谱中查询出对应的基础设施层信息;
14.步骤2.3、根据知识图谱以及从知识图谱中查询得到的基础设施层信息,得到需求
向量中每一个应用程序信息对应的应用程序的类型信息,并将得到的应用程序的类型信息补充到需求向量中对应的应用程序信息中;
15.步骤2.4、根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息,将需求向量中的每一个应用程序信息以及对应的基础设施信息输入到训练好的textcnn分类模型中,得到该应用程序信息对应的应用程序安装步骤的基础模板;
16.步骤2.5、将每一个应用程序信息以及对应的基础模板和基础设施信息输入到训练好的bert模型中,得到该应用程序信息对应的应用程序安装步骤,完成基础模板填充;
17.步骤2.6、将每一个应用程序安装步骤按序组合得到应用程序层信息,并组合应用程序层信息和基础设施层信息生成容器镜像配置文件;
18.步骤3、对生成的容器镜像配置文件进行检测与修复,输出检测与修复后的容器镜像配置文件,完成自动化生成步骤。
19.以下还提供了若干可选方式,但并不作为对上述总体方案的额外限定,仅仅是进一步的增补或优选,在没有技术或逻辑矛盾的前提下,各可选方式可单独针对上述总体方案进行组合,还可以是多个可选方式之间进行组合。
20.作为优选,所述获取容器镜像配置文件语料库,构建知识图谱,包括:
21.解析容器镜像配置文件得到基础设施层信息和应用程序层信息;
22.验证属于同一容器镜像配置文件的基础设施层信息和应用程序层信息的正确性,若验证不通过则丢弃;若验证通过则保留;
23.对所有验证通过的基础设施层信息和应用程序层信息执行融合处理,取融合处理后的数据存入知识图谱中。
24.作为优选,所述解析容器镜像配置文件得到基础设施层信息和应用程序层信息,包括:
25.判断当前的容器镜像配置文件的基础镜像标签是否存在于知识图谱中,若存在,则直接根据基础镜像标签从知识图谱中获取基础设施层信息;若不存在,则判断基础镜像是否为操作系统镜像,若是,则解析操作系统镜像得到基础设施层信息,若不是,则根据基础镜像重新生成容器镜像配置文件,直至基础镜像是操作系统镜像;
26.获取容器镜像配置文件的环境变量中的键值对,根据键值对将容器镜像配置文件中的环境变量名替换为值,根据基础设施层信息中的下载命令对容器镜像配置文件进行切片,将切片后的片段作为一个应用程序信息,组合所有应用程序信息得到应用程序层信息。
27.作为优选,所述基于容器镜像配置文件,得到训练模型所需的训练集,包括:
28.对于验证通过的容器镜像配置文件,分解应用程序层信息得到每一个应用程序信息,根据知识图谱得到第一个应用程序信息的基础设施信息,并将第一个应用程序信息的基础设施信息与前m-1个应用程序信息的名称和类型信息汇总作为第m个应用程序信息的基础设施信息,m》1;
29.根据每一个应用程序信息和基础设施信息,得到每一个应用程序信息对应的基础模板和答案向量;
30.将应用程序信息的类型信息相同的基础模板聚类得到综合模板,将每一应用程序信息对应的基础设施信息聚合得到基础设施信息集合,将每一容器镜像配置文件对应的基础设施信息集合、综合模板和答案向量作为训练数据保存至训练集。
31.作为优选,所述基于所述需求向量中每一应用程序信息匹配最符合需求向量的基础镜像,包括:
32.a、计算需求向量中第j个应用程序的名称aj选择基础镜像标签i的权重,权重计算公式如下:
[0033][0034][0035]
w(aj,i)=tf(aj,i)*idf(aj,i)
[0036]
式中,tf(aj,i)表示名称aj在基础镜像标签i下出现的频率,n(aj,i)表示名称aj在基础镜像标签i中出现的次数,n(pkg
all
,i)表示基础镜像标签i中所有应用程序的数目,idf(aj,i)表示名称aj在基础镜像标签i中出现的比重,n(aj,label
all
)表示名称aj在所有基础镜像标签中出现的次数,w(aj,i)表示名称ai选择基础镜像标签i的权重;
[0037]
取名称ai选择基础镜像标签的权重最大的前五个基础镜像标签,整合需求向量中所有应用程序的前五个基础镜像标签,统计所有选取的基础镜像标签;
[0038]
b、计算步骤a所有统计的基础镜像标签的相似度,相似度计算公式如下:
[0039][0040]
式中,si表示基础镜像标签i的相似度,n为需求向量中所有应用程序的个数,αj为名称aj的初始权重;
[0041]
c、取所有统计的相似度最大的基础镜像标签作为最符合用户要求的基础镜像。
[0042]
作为优选,所述根据知识图谱以及从知识图谱中查询得到的基础设施信息,得到需求向量中每一个应用程序信息对应的应用程序的类型信息,并将得到的应用程序的类型信息补充到需求向量中对应的应用程序信息中,包括:
[0043]
若需求向量中没有指定应用程序的类型信息,则针对每一个应用程序的名称和版本,按以下顺序完成应用程序的类型信息的查找及填充,顺序如下:
[0044]
1)从基础设施层信息中的默认源应用程序物料清单中搜索应用程序的名称和版本,若找到,则类型信息为默认应用程序库类型,将类型信息填充至对应的应用程序信息中,并退出,否则执行下一步;
[0045]
2)从本地源应用程序物料清单中搜索应用程序的名称和版本,若找到,则类型信息为本地应用程序库类型,并查询知识图谱得到本地源应用程序库的地址信息,将类型信息和本地源应用程序库的地址信息填充至对应的应用程序信息中,并退出,否则执行下一步;
[0046]
3)从知识图谱中搜索应用程序的名称和版本,若找到,则类型信息为外部网站类型,同时根据需求向量中有无端口号信息,判断应用程序是否为服务类型应用程序,如果需求向量中有端口号信息,则应用程序为服务类型应用程序,查询知识图谱得到网站地址信
息,并从需求向量中找到端口号信息,将类型信息、网站地址信息和端口号信息填充至对应的应用程序信息中,并退出;如果需求向量中无端口号信息,则应用程序不为服务类型应用程序,则查询知识图谱得到网站地址信息,将类型信息以及网站地址信息填充至对应的应用程序信息中,并退出;若没有找到,则执行下一步;
[0047]
4)输出含有该应用程序的名称未识别的错误信息,结束容器镜像配置文件生成过程。
[0048]
作为优选,所述对生成的容器镜像配置文件进行检测与修复,包括:
[0049]
根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息;
[0050]
查询知识图谱,得到每一应用程序信息的依赖信息,并将依赖信息转化为依赖向量;
[0051]
提取每一应用程序信息对应的基础设施信息中的软件包名,并将软件包名转化为包名向量;
[0052]
计算归属于一对应用程序信息和基础设施信息的依赖向量和包名向量的相似度;
[0053]
综合容器镜像配置文件中所有计算得到的依赖向量和包名向量的相似度,输出容器镜像配置文件的检测结果;
[0054]
根据所述检测结果进行预执行,若预执行成功,则直接输出所构建的容器镜像配置文件并结束,若预执行失败,则进行修复,输出修复后的容器镜像配置文件和/或描述并结束。
[0055]
作为优选,所述相似度计算公式如下:
[0056][0057]
式中,pj为需求向量中第j个应用程序的名称aj的依赖向量与其对应的基础设施信息的包名向量的相似度,x为依赖向量,y为包名向量;
[0058]
则得到综合相似度如下:
[0059][0060]
式中,f为综合相似度,n为需求向量中所有应用程序的个数,αj为名称aj的初始权重。
[0061]
作为优选,所述修复包括以下步骤:
[0062]
1)根据错误日志信息截取得到错误信息,解析错误信息,得到错误码、错误位置和错误描述,生成错误向量;
[0063]
2)根据错误向量判断错误类型,所述错误类型包括基础镜像版本不一致,容器镜像配置文件缺少命令,应用程序依赖信息缺失,配置信息不正确以及外部环境的更改;
[0064]
3)若错误类型为基础镜像版本不一致或配置信息不正确,则根据预定义的错误类型与修复建议的正则匹配键值对字典进行修复;
[0065]
或者,若错误类型为容器镜像配置文件缺少命令,则更换容器镜像配置文件中的基础镜像;
[0066]
或者,若错误类型为应用程序依赖信息缺失,则依次查询默认源应用程序物料清单、本地源应用程序物料清单以及知识图谱,若找到,则添加依赖信息至容器镜像配置文件中,若没找到,则输出预定义的建议描述;
[0067]
或者,若错误类型为外部环境的更改,则输出预定义的建议描述。
[0068]
本发明提供了一种基于模板表示的容器镜像配置文件自动化生成方法,其中模板表示按功能组成划分为基础设施层和应用程序层,基础设施层表示应用程序构建的基础环境,应用程序层由一个或多个应用程序组成,每个应用程序有其基本信息。通过模板表示方法,可以有效地提取容器镜像配置文件特征用于模型训练,完成容器镜像配置文件的自动生成,此外,对于预构建失败的容器镜像配置文件,通过结合容器镜像配置文件的模板表示信息,可以有效地修复失败的容器镜像配置文件,对于再构建失败的容器镜像配置文件,通过预构建修复结果,可以改善知识图谱信息,进而改进容器镜像配置文件的模板表示信息,不断提高生成容器镜像配置文件的成功率。
[0069]
本发明的目的之二在于提供一种基于模板表示的容器镜像配置文件自动化生成装置,包括处理器以及存储有若干计算机指令的存储器,所述计算机指令被处理器执行时实现所述基于模板表示的容器镜像配置文件自动化生成方法的步骤。
附图说明
[0070]
图1为本发明的一种基于模板表示的容器镜像配置文件自动化生成方法的流程图;
[0071]
图2为本发明的知识图谱构建流程图;
[0072]
图3为本发明的训练集生成流程图;
[0073]
图4为本发明的模型训练流程图。
具体实施方式
[0074]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0075]
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本发明。
[0076]
本发明从语义层面对容器镜像配置文件的内容进行逻辑切分,根据功能组成划分为两层,即基础设施层和应用程序层。针对环境变量、依赖关系、组件版本号等要求精确程度较高的内容,本发明通过结合知识库信息,对此类内容精准定义。此外,对于最终生成的容器镜像配置文件,本发明提出了一种检测分析修复方法,在将生成结果返回给用户之前,对其进行预执行测试,若测试失败则根据错误信息进行修复。本发明有助于优化当前容器技术在实践中的工作流程,提高自动化生成容器镜像配置文件成功率。
[0077]
如图1所示,本实施例提供一种基于模板表示的容器镜像配置文件自动化生成方法,包括以下步骤:
[0078]
步骤1、构建知识图谱,训练模型。基于容器镜像配置文件语料库的知识提取与模型训练,得到自动生成容器镜像配置文件所需的知识库和模型。
[0079]
步骤1.1、获取容器镜像配置文件语料库,构建知识图谱,其中基础设施层实体有操作系统镜像名和版本以及所获取的目录结构,应用程序层实体有软件包或应用程序,类型和网站地址为其属性,软件包间调用或依赖关系作为实体间关系。如图2所示,具体包括以下步骤。
[0080]
步骤1.1.1、解析容器镜像配置文件得到基础设施层信息和应用程序层信息,具体包含以下步骤:
[0081]
a、判断当前的容器镜像配置文件的基础镜像标签是否存在于知识图谱中,若存在,则直接根据基础镜像标签从知识图谱中获取基础设施层信息;若不存在,则判断基础镜像是否为操作系统镜像(如ubuntu、centos等),若是,则解析操作系统镜像得到基础设施层信息,若不是,则根据基础镜像重新生成容器镜像配置文件,直至基础镜像是操作系统镜像。
[0082]
其中,解析操作系统镜像得到基础设施层信息,包括:
[0083]
1)拉取操作系统镜像。
[0084]
2)通过镜像id,获取image config文件(以docker容器为例,对于linux amd64架构系统,位于/var/lib/docker/image/overlay2/imagedb/content/sha256/{iamgeid})中的path环境变量。
[0085]
3、通过image config文件,得到镜像每一层本地数据存储位置,获取path环境变量下的所有可执行文件名和根目录向下五层的目录结构(根据大多数操作系统的目录结构,五层能覆盖分析所需的目录结构);通过包管理命令(如apt list)得到默认源应用程序物料清单作为基础设施层信息。
[0086]
另外,根据基础镜像重新生成容器镜像配置文件,直至基础镜像是操作系统镜像,包括:
[0087]
若基础镜像不是操作系统镜像,则拉取基础镜像,通过对应容器提供的命令(例如以docker容器为例,通过docker history获取镜像的创建历史,再逆序组合历史信息可得到镜像的容器镜像配置文件)得到基础镜像的容器镜像配置文件,对于新得到的容器镜像配置文件,重复判断容器镜像配置文件的基础镜像标签和相应判断结果的处理过程,直至当前容器镜像配置文件的基础镜像是操作系统镜像为止,之后通过解析操作系统镜像得到基础设施层信息。
[0088]
b、获取容器镜像配置文件的环境变量中的键值对,根据键值对将容器镜像配置文件中的环境变量名替换为值,根据基础设施层信息中的下载命令对容器镜像配置文件进行切片,将切片后的片段作为一个应用程序信息,组合所有应用程序信息得到应用程序层信息。本实施例同时在切片后对每一个应用程序信息通过静态分析得到该应用程序的类型信息和依赖信息。
[0089]
本实施例对容器镜像配置文件进行预处理,通过python脚本获取环境变量(这里的环境变量是指容器镜像配置文件本身用于构建镜像环境所需的变量,例如以dockerfile为例,环境变量指env关键字后的参数)的键值对关系,并将容器镜像配置文件中随后出现的环境变量名替换为具体的值。然后,考虑基础设施信息中的下载命令(解析基础镜像时得
到),根据不同的下载命令(如包管理工具apt、网络文件下载工具wget等),结合该命令的使用模式(例如以apt为例,通过总结大量实例后发现,一般以apt update开头,以apt install-y
–
no-install-recommends xxx结尾),以此为划分依据,对容器镜像配置文件进行切片,切分后的片段为一个应用程序的安装步骤,即应用程序信息,组合得到应用程序层信息。
[0090]
通过应用程序信息中的不同下载命令得到该应用程序的类型信息,类型信息包括应用程序库类型和外部网站类型(如apt、yum表示应用程序库类型,wget、curl表示外部网站类型),如果是应用程序库类型,不需要获取依赖信息;如果是外部网站类型,先通过正则表达式匹配下载命令所在行后面的网站地址,再通过静态分析得到应用程序的依赖信息(如wget应用程序库类型,其依赖信息为install指令后紧跟着出现的软件包名,其中install指令出现在wget命令前一行)。
[0091]
步骤1.1.2、验证属于同一容器镜像配置文件的基础设施层信息和应用程序层信息的正确性,若验证不通过则丢弃;若验证通过则保留。本实施例的验证过程主要为检查应用程序安装步骤命令是否在基础设施层信息中以及检查命令使用是否正确。
[0092]
步骤1.1.3、对所有验证通过的基础设施层信息和应用程序层信息执行融合处理,取融合处理后的数据存入知识图谱中,完成知识图谱构建。
[0093]
对验证通过的基础设施层信息和应用程序层信息进行实体识别、属性识别、关系识别获取节点、属性和关系信息,其中基础设施层信息中操作系统镜像名和版本为实体,步骤1.1.1中获取的所有可执行文件名为其属性,获取的目录结构为实体,且不同层目录结构间存在包含和被包含关系,根目录结构与操作系统镜像名和版本存在所属关系;应用程序层信息以软件包或应用程序为节点,类型信息为其属性,软件包间调用或依赖关系作为节点间关系,对于外部网站类型,属性还包括网站地址。
[0094]
在融合处理中,若两条数据之间(两条基础设施层信息之间,或者两条应用程序层信息之间)的实体或属性的相似度(例如余弦相似度、欧式距离等)超过一定的阈值,则对知识进行融合,融合时完全相同的知识只保留一份,否则记录两条数据之间的等价关系,最后将所有得到的知识存入知识图谱中。此外,可以导入本地源应用程序物料清单(标有地址信息)到知识图谱作为补充。
[0095]
步骤1.2、基于容器镜像配置文件,得到训练模型所需的训练集。如图3所示,包括以下步骤。
[0096]
步骤1.2.1、对于验证通过的容器镜像配置文件,输入应用程序分解模块分解应用程序层信息中每一个应用程序信息,依次处理,得到每一个应用程序的基础设施信息、基础模板和答案向量,具体步骤包括:
[0097]
1)按序识别每一个应用程序信息(即步骤1.1中切片得到的容器镜像配置文件的片段)的类型信息,分为应用程序库类型和外部网站类型。
[0098]
2)根据类型信息,结合基础设施信息中的命令对安装步骤进行分块。
[0099]
3)利用知识图谱获取该应用程序的应用程序名称、依赖信息,把应用程序信息中所有与应用程序名称相关的文件名和依赖项去除;把所有涉及流程控制,变量操作的步骤去除;把所有涉及文件操作的步骤去除,将去除的信息存入缓存区。
[0100]
4)最后,将步骤3)得到的内容中空缺的位置用序号替代得到基础模板,将缓存区
信息按序存储得到答案向量。
[0101]
5)根据知识图谱得到第一个应用程序信息的基础设施信息,并将第一个应用程序信息的基础设施信息与前m-1个应用程序信息的名称和类型信息汇总作为第m个应用程序信息的基础设施信息,m》1。
[0102]
对于一个容器镜像配置文件,包含许多应用程序信息,第一个应用程序信息的基础设施信息为步骤1.1中得到的基础设施层信息,第二个应用程序信息的基础设施信息为第一个应用程序信息的基础设施信息加上第一个应用程序信息的类型信息和名称,第m个应用程序信息的基础设施信息为第一个应用程序信息的基础设施信息加上前n-1个应用程序的类型信息和名称。
[0103]
步骤1.2.2、相同类型信息的基础模板通过hdbscan算法聚类得到综合模板,将每一应用程序信息对应的基础设施信息聚合得到基础设施信息集合,将每一容器镜像配置文件对应的基础设施信息集合、综合模板和答案向量作为训练数据保存至训练集。
[0104]
步骤1.3、利用训练集,训练得到一个用于生成应用程序基础模板的textcnn分类模型和一个用于填充基础模板的bert模型。如图4所示,包括以下步骤。
[0105]
步骤1.3.1、拆分训练集中的基础设施信息集合,得到每一个应用程序信息和其对应的基础设施信息。
[0106]
步骤1.3.2、将每一个应用程序基本信息和其对应的基础设施信息作为特征,将综合模板作为标签输入到textcnn分类模型中训练,利用textcnn分类模型完成对应用程序基础模板的生成。
[0107]
步骤1.3.3、将每一个应用程序基本信息和其对应的基础设施信息以及综合模板作为特征,将答案向量作为标签输入到bert模型中训练,利用bert模型完成对基础模板的填充。
[0108]
需要说明的是,本实施例中模型训练采用常规的优化器、损失函数等,因此训练过程不进行详述。
[0109]
步骤2、根据用户需求自动生成容器镜像配置文件。
[0110]
步骤2.1、获取输入的用户需求,解析生成需求向量。
[0111]
步骤2.1.1、利用表单形式按一定的格式获取输入信息,如应用程序名称,应用程序版本,应用程序的类型信息。
[0112]
步骤2.1.2、将获取到的输入信息转化为需求向量。
[0113]
其中需求向量v={t,srt,s},其中t表示操作系统类型和版本,srt表示需要安装的应用程序,s表示需要安装的服务类型应用程序。本实施例中服务类型应用程序实质上属于应用程序中的一种,区分标准为是否提供端口号信息。若含有端口号信息则为服务类型应用程序,反之则为应用程序,即本实施例将应用程序与服务类型应用程序作为两个独立概念进行讨论。
[0114]
其中srt={(a1,[v1,t1,a1]),...,(an,[vn,t,an])},a表示应用程序名称,[v,t,a]为可选参数,v表示应用程序版本,t表示应用程序的类型信息,其值为x:[y],其中x为应用程序的来源,可来自应用程序库和外部网站,其中应用程序库可分为官方应用程序库和本地应用程序库,y为应用程序的安装形式,可分为下载二进制程序和编译程序源码两种形式,对于来自应用程序库的应用程序y参数可选,a表示外部网站的地址,n为需求向量中所
有应用程序的个数。
[0115]
对于一个服务类型应用程序,包含应用程序的所有属性,其中s={((a1,[v1,t1,a1]),[p1,i1,t1,c1]),...,((an,[vn,t,an]),[pn,in,tn,cn])},其中前四个参数对应于一个应用程序,含义同上述srt中的表述一致,p表示开放的端口号,i表示配置信息,t表示服务启动类型,可为自动启动和手动启动,c表示启动命令。
[0116]
步骤2.2、基于需求向量中每一应用程序信息匹配最符合需求向量的基础镜像,并从知识图谱中查询出对应的基础设施信息。
[0117]
a、计算需求向量中第j个应用程序的名称aj选择基础镜像标签i的权重,权重计算公式如下:
[0118][0119][0120]
w(aj,i)=tf(aj,i)*idf(aj,i)(3)
[0121]
式中,tf(aj,i)表示名称aj在基础镜像标签i下出现的频率,n(aj,i)表示名称aj在基础镜像标签i中出现的次数,n(pkg
all
,i)表示基础镜像标签i中所有应用程序的数目,idf(aj,i)表示名称aj在基础镜像标签i中出现的比重,n(aj,labelall)表示名称aj在所有基础镜像标签中出现的次数,w(aj,i)表示名称aj选择基础镜像标签i的权重。
[0122]
取aj选择基础镜像标签的权重最大的前五个基础镜像标签,整合需求向量中所有应用程序的前五个基础镜像标签,统计所有选取的基础镜像标签。
[0123]
b、计算步骤a所有统计的基础镜像标签的相似度,相似度计算公式如下:
[0124][0125]
式中,si表示基础镜像标签i的相似度,n为需求向量中所有应用程序的个数,αj为aj的初始权重。
[0126]
c、取所有统计的相似度最大的基础镜像标签作为最符合用户要求的基础镜像。
[0127]
d、通过知识图谱查询得到最符合用户要求基础镜像中的基础设施信息。
[0128]
步骤2.3、根据知识图谱以及从知识图谱中查询得到的基础设施层信息,得到需求向量中每一个应用程序信息对应的应用程序的类型信息,并将得到的应用程序的类型信息补充到需求向量中对应的应用程序信息中。
[0129]
若需求向量中指定了应用程序的类型信息,则无需执行类型信息的查找过程;若需求向量中没有指定应用程序的类型,则针对每一个应用程序或者服务类型应用程序的应用程序名称,按以下顺序完成应用程序的类型信息的填充,顺序如下:
[0130]
1)从基础设施结构中的默认源应用程序物料清单中搜索应用程序名称和版本,若找到,类型为默认应用程序库类型,完成类型信息的填充并退出,否则执行下一步。
[0131]
2)从本地源应用程序物料清单中搜索应用程序名称和版本,若找到,类型为本地
应用程序库类型,并查询知识图谱得到本地源应用程序库的地址信息,完成类型信息和本地源应用程序库的地址信息的填充并退出,否则执行下一步。
[0132]
3)从知识图谱中搜索应用程序的名称和版本,若找到,则类型信息为外部网站类型,同时根据需求向量中有无端口号信息,判断应用程序是否为服务类型应用程序,如果需求向量中有端口号信息,则应用程序为服务类型应用程序,查询知识图谱得到网站地址信息,并从需求向量中找到端口号信息,将类型信息、网站地址信息和端口号信息填充至对应的应用程序信息中,并退出;如果需求向量中无端口号信息,则应用程序不为服务类型应用程序,则查询知识图谱得到网站地址信息,将类型信息以及网站地址信息填充至对应的应用程序信息中,并退出;若没有找到,则执行下一步。
[0133]
4)输出含有该应用程序名称未识别的错误信息,结束容器镜像配置文件生成过程。
[0134]
步骤2.4、根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息,将需求向量中的每一个应用程序信息以及对应的基础设施信息输入到训练好的textcnn分类模型中,得到该应用程序信息对应的应用程序安装步骤的基础模板。
[0135]
在根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息时,将基础设施层信息作为第一个应用程序信息的基础设施信息,并将第一个应用程序信息的基础设施信息与前m-1个应用程序信息的名称和类型信息汇总作为第m个应用程序信息的基础设施信息,m》1。
[0136]
步骤2.5、将每一个应用程序信息以及对应的基础模板和基础设施信息输入到训练好的bert模型中,得到该应用程序信息对应的应用程序安装步骤,完成基础模板填充。
[0137]
步骤2.6、将每一个应用程序安装步骤按序组合得到应用程序层信息,并组合应用程序层信息和基础设施层信息生成容器镜像配置文件。
[0138]
步骤3、对生成的容器镜像配置文件进行检测与修复,输出检测与修复后的容器镜像配置文件,完成自动化生成步骤。本技术通过对生成的容器镜像配置文件的检测与修复来提高最终自动化生成容器镜像配置文件的准确度。
[0139]
步骤3.1、根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息。这里同样通过组合基础设施层信息和应用程序信息的名称和类型信息得到每一个应用程序信息对应的基础设施层信息。
[0140]
步骤3.2、查询知识图谱,得到每一应用程序的依赖信息,并将依赖信息转化为依赖向量。
[0141]
步骤3.3、提取每一应用程序基本信息对应的基础设施信息中的软件包名,并将软件包名转化为包名向量。
[0142]
步骤3.4、计算归属于一对应用程序基本信息和基础设施信息的依赖向量和包名向量的相似度,相似度用来衡量每一个应用程序与其对应基础设施之间的联系程度。本实施例提供每一对应用程序基本信息和基础设施信息之间的相似度如下:
[0143][0144]
式中,pj为需求向量中第j个应用程序名称aj的依赖向量与其对应的基础设施信息的包名向量的相似度,x为依赖向量,y为包名向量。
[0145]
步骤3.5、综合容器镜像配置文件中所有计算得到的依赖向量和包名向量的相似度,输出容器镜像配置文件的检测结果。
[0146]
得到一个相似度后,综合所有应用程序与其对应基础设施之间的联系程度,对整个容器镜像配置文件进行评估,则得到综合相似度如下:
[0147][0148]
式中,f为综合相似度,n为需求向量中所有应用程序的个数,αj为aj的初始权重。在根据综合相似度得到检测结果时,可以是直接根据预定义的阈值得到检测结果,例如综合相似度小于合格阈值,则表示容器镜像配置文件的检测结果为不合格,为了保证容器镜像配置文件构建准确度,可将不合格的容器镜像配置文件舍弃,否则检测结果为合格。另外在根据综合相似度得到检测结果时,也可以采用深度神经网络进行检测,得到检测结果。
[0149]
步骤3.6、根据所述检测结果进行预执行,若预执行成功,则直接输出所构建的容器镜像配置文件并结束,若预执行失败,则进行修复,输出修复后的容器镜像配置文件或建议描述并结束。
[0150]
修复时根据错误信息并结合该容器镜像配置文件的基础设施层和应用程序层中的信息进行处理,具体包含以下步骤:
[0151]
1)根据错误日志信息找到error位置,截取得到错误信息,解析错误信息,得到错误码,错误位置,错误描述,生成错误向量。
[0152]
2)根据错误向量判断错误类型,错误类型包括基础镜像版本不一致,容器镜像配置文件缺少命令,应用程序依赖信息缺失,配置信息不正确以及外部环境的更改。
[0153]
3)若错误类型为基础镜像版本不一致或配置信息不正确,则预定义的错误类型与修复方案的正则匹配键值对字典进行修复,如表1所示。
[0154]
或者,若错误类型为容器镜像配置文件缺少命令,则更换容器镜像配置文件中的基础镜像。通过知识图谱查询覆盖原有基础镜像的所有功能,且包含缺少命令的新基础镜像,然后,用新基础镜像标签替换原容器镜像配置文件的基础镜像标签。
[0155]
或者,若错误类型为应用程序依赖信息缺失,则依次查询默认源应用程序物料清单、本地源应用程序物料清单以及知识图谱(依次查询中首先查询默认源应用程序物料清单,其次查询本地源应用程序物料清单,最后查询知识图谱,在任意一处查询到即结束,不需要依次查询三处),若找到,则添加依赖信息至容器镜像配置文件中,若没找到,则输出预定义的建议描述,如表2所示,根据错误类型与建议方案的正则匹配键值对字典输出建议描述。
[0156]
或者,若错误类型为外部环境的更改,例如url缺失、域名不存在等,则输出预定义的建议描述,如表2所示,根据错误类型与建议方案的正则匹配键值对字典输出建议描述。
[0157]
表1错误类型与修复方案的正则匹配键值对字典
[0158][0159][0160]
其中$0表示正则表达式匹配的值。
[0161]
表2错误类型与建议方案的正则匹配键值对字典
[0162][0163]
对于给出建议方案的错误类型,输出容器镜像配置文件和建议方案的描述;对于给出修复方案的错误类型,进行再执行。若再执行成功,将容器镜像配置文件和修复方案的描述输出并添加到知识图谱中,若再执行失败,判断错误信息是否与上一次一致,若不一致,查询正则匹配键值对字典,若查询成功,输出容器镜像配置文件和修复或建议方案的描述,若上述出现未查询成功或者利用修复方案进行修复后仍错误信息相同,则上报管理员,输出错误描述,管理员通过调整键值对字典改进修复过程。
[0164]
在另一个实施例中,本技术还提供了一种基于模板表示的容器镜像配置文件自动化生成装置,包括处理器以及存储有若干计算机指令的存储器,所述计算机指令被处理器执行时实现所述基于模板表示的容器镜像配置文件自动化生成方法的步骤。
[0165]
关于一种基于模板表示的容器镜像配置文件自动化生成装置的具体限定可以参见上文中对于一种基于模板表示的容器镜像配置文件自动化生成方法的限定,在此不再赘述。
[0166]
存储器和处理器之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件互相之间可以通过一条或多条通讯总线或信号线实现电性连接。存储器中存储有可在处理器上运行的计算机程序,所述处理器通过运行存储在存储器内的计算机程序,从而实现本发明实施例中的方法。
[0167]
其中,所述存储器可以是,但不限于,随机存取存储器(random access memory,ram),只读存储器(read only memory,rom),可编程只读存储器(programmable read-only memory,prom),可擦除只读存储器(erasable programmable read-only memory,eprom),电可擦除只读存储器(electric erasable programmable read-only memory,eeprom)等。其中,存储器用于存储程序,所述处理器在接收到执行指令后,执行所述程序。
[0168]
所述处理器可能是一种集成电路芯片,具有数据的处理能力。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等。可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0169]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0170]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
技术特征:
1.一种基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述基于模板表示的容器镜像配置文件自动化生成方法,包括:步骤1、构建知识图谱,训练模型;步骤1.1、获取容器镜像配置文件语料库,构建知识图谱,所述知识图谱包括由容器镜像配置文件提取的基础设施层信息和应用程序层信息,所述应用程序层信息包括多个应用程序信息;步骤1.2、基于容器镜像配置文件,得到训练模型所需的训练集;步骤1.3、利用所述训练集,训练得到一个用于生成基础模板的textcnn分类模型和一个用于填充基础模板的bert模型;步骤2、根据用户需求生成容器镜像配置文件;步骤2.1、获取输入的用户需求,解析生成需求向量;步骤2.2、基于所述需求向量中每一个应用程序信息匹配最符合需求向量的基础镜像,并根据基础镜像从知识图谱中查询出对应的基础设施层信息;步骤2.3、根据知识图谱以及从知识图谱中查询得到的基础设施层信息,得到需求向量中每一个应用程序信息对应的应用程序的类型信息,并将得到的应用程序的类型信息补充到需求向量中对应的应用程序信息中;步骤2.4、根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息,将需求向量中的每一个应用程序信息以及对应的基础设施信息输入到训练好的textcnn分类模型中,得到该应用程序信息对应的应用程序安装步骤的基础模板;步骤2.5、将每一个应用程序信息以及对应的基础模板和基础设施信息输入到训练好的bert模型中,得到该应用程序信息对应的应用程序安装步骤,完成基础模板填充;步骤2.6、将每一个应用程序安装步骤按序组合得到应用程序层信息,并组合应用程序层信息和基础设施层信息生成容器镜像配置文件;步骤3、对生成的容器镜像配置文件进行检测与修复,输出检测与修复后的容器镜像配置文件,完成自动化生成步骤。2.如权利要求1所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述获取容器镜像配置文件语料库,构建知识图谱,包括:解析容器镜像配置文件得到基础设施层信息和应用程序层信息;验证属于同一容器镜像配置文件的基础设施层信息和应用程序层信息的正确性,若验证不通过则丢弃;若验证通过则保留;对所有验证通过的基础设施层信息和应用程序层信息执行融合处理,取融合处理后的数据存入知识图谱中。3.如权利要求2所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述解析容器镜像配置文件得到基础设施层信息和应用程序层信息,包括:判断当前的容器镜像配置文件的基础镜像标签是否存在于知识图谱中,若存在,则直接根据基础镜像标签从知识图谱中获取基础设施层信息;若不存在,则判断基础镜像是否为操作系统镜像,若是,则解析操作系统镜像得到基础设施层信息,若不是,则根据基础镜像重新生成容器镜像配置文件,直至基础镜像是操作系统镜像;获取容器镜像配置文件的环境变量中的键值对,根据键值对将容器镜像配置文件中的
环境变量名替换为值,根据基础设施层信息中的下载命令对容器镜像配置文件进行切片,将切片后的片段作为一个应用程序信息,组合所有应用程序信息得到应用程序层信息。4.如权利要求2所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述基于容器镜像配置文件,得到训练模型所需的训练集,包括:对于验证通过的容器镜像配置文件,分解应用程序层信息得到每一个应用程序信息,根据知识图谱得到第一个应用程序信息的基础设施信息,并将第一个应用程序信息的基础设施信息与前m-1个应用程序信息的名称和类型信息汇总作为第m个应用程序信息的基础设施信息,m>1;根据每一个应用程序信息和基础设施信息,得到每一个应用程序信息对应的基础模板和答案向量;将应用程序信息的类型信息相同的基础模板聚类得到综合模板,将每一应用程序信息对应的基础设施信息聚合得到基础设施信息集合,将每一容器镜像配置文件对应的基础设施信息集合、综合模板和答案向量作为训练数据保存至训练集。5.如权利要求1所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述基于所述需求向量中每一应用程序信息匹配最符合需求向量的基础镜像,包括:a、计算需求向量中第j个应用程序的名称a
j
选择基础镜像标签i的权重,权重计算公式如下:如下:w(a
j
,i)=tf(a
j
,i)*idf(a
j
,i)式中,tf(a
j
,i)表示名称a
j
在基础镜像标签i下出现的频率,n(a
j
,i)表示名称a
j
在基础镜像标签i中出现的次数,n(pkg
all
,i)表示基础镜像标签i中所有应用程序的数目,idf(a
j
,i)表示名称a
j
在基础镜像标签i中出现的比重,n(a
j
,label
all
)表示名称a
j
在所有基础镜像标签中出现的次数,w(a
j
,i)表示名称a
j
选择基础镜像标签i的权重;取名称a
j
选择基础镜像标签的权重最大的前五个基础镜像标签,整合需求向量中所有应用程序的前五个基础镜像标签,统计所有选取的基础镜像标签;b、计算步骤a所有统计的基础镜像标签的相似度,相似度计算公式如下:式中,s
i
表示基础镜像标签i的相似度,n为需求向量中所有应用程序的个数,α
j
为名称a
j
的初始权重;c、取所有统计的相似度最大的基础镜像标签作为最符合用户要求的基础镜像。6.如权利要求1所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述根据知识图谱以及从知识图谱中查询得到的基础设施信息,得到需求向量中每一个应用程序信息对应的应用程序的类型信息,并将得到的应用程序的类型信息补充到需求
向量中对应的应用程序信息中,包括:若需求向量中没有指定应用程序的类型信息,则针对每一个应用程序的名称和版本,按以下顺序完成应用程序的类型信息的查找及填充,顺序如下:1)从基础设施层信息中的默认源应用程序物料清单中搜索应用程序的名称和版本,若找到,则类型信息为默认应用程序库类型,将类型信息填充至对应的应用程序信息中,并退出,否则执行下一步;2)从本地源应用程序物料清单中搜索应用程序的名称和版本,若找到,则类型信息为本地应用程序库类型,并查询知识图谱得到本地源应用程序库的地址信息,将类型信息和本地源应用程序库的地址信息填充至对应的应用程序信息中,并退出,否则执行下一步;3)从知识图谱中搜索应用程序的名称和版本,若找到,则类型信息为外部网站类型,同时根据需求向量中有无端口号信息,判断应用程序是否为服务类型应用程序,如果需求向量中有端口号信息,则应用程序为服务类型应用程序,查询知识图谱得到网站地址信息,并从需求向量中找到端口号信息,将类型信息、网站地址信息和端口号信息填充至对应的应用程序信息中,并退出;如果需求向量中无端口号信息,则应用程序不为服务类型应用程序,则查询知识图谱得到网站地址信息,将类型信息以及网站地址信息填充至对应的应用程序信息中,并退出;若没有找到,则执行下一步;4)输出含有该应用程序的名称未识别的错误信息,结束容器镜像配置文件生成过程。7.如权利要求1所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述对生成的容器镜像配置文件进行检测与修复,包括:根据应用程序信息和基础设施层信息得到每一个应用程序信息的基础设施信息;查询知识图谱,得到每一应用程序信息的依赖信息,并将依赖信息转化为依赖向量;提取每一应用程序信息对应的基础设施信息中的软件包名,并将软件包名转化为包名向量;计算归属于一对应用程序信息和基础设施信息的依赖向量和包名向量的相似度;综合容器镜像配置文件中所有计算得到的依赖向量和包名向量的相似度,输出容器镜像配置文件的检测结果;根据所述检测结果进行预执行,若预执行成功,则直接输出所构建的容器镜像配置文件并结束,若预执行失败,则进行修复,输出修复后的容器镜像配置文件和/或描述并结束。8.如权利要求7所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述相似度计算公式如下:式中,p
j
为需求向量中第j个应用程序的名称a
j
的依赖向量与其对应的基础设施信息的包名向量的相似度,x为依赖向量,y为包名向量;则得到综合相似度如下:
式中,f为综合相似度,n为需求向量中所有应用程序的个数,α
j
为名称a
j
的初始权重。9.如权利要求7所述的基于模板表示的容器镜像配置文件自动化生成方法,其特征在于,所述修复包括以下步骤:1)根据错误日志信息截取得到错误信息,解析错误信息,得到错误码、错误位置和错误描述,生成错误向量;2)根据错误向量判断错误类型,所述错误类型包括基础镜像版本不一致,容器镜像配置文件缺少命令,应用程序依赖信息缺失,配置信息不正确以及外部环境的更改;3)若错误类型为基础镜像版本不一致或配置信息不正确,则根据预定义的错误类型与修复建议的正则匹配键值对字典进行修复;或者,若错误类型为容器镜像配置文件缺少命令,则更换容器镜像配置文件中的基础镜像;或者,若错误类型为应用程序依赖信息缺失,则依次查询默认源应用程序物料清单、本地源应用程序物料清单以及知识图谱,若找到,则添加依赖信息至容器镜像配置文件中,若没找到,则输出预定义的建议描述;或者,若错误类型为外部环境的更改,则输出预定义的建议描述。10.一种基于模板表示的容器镜像配置文件自动化生成装置,包括处理器以及存储有若干计算机指令的存储器,其特征在于,所述计算机指令被处理器执行时实现权利要求1至权利要求9中任意一项所述基于模板表示的容器镜像配置文件自动化生成方法的步骤。
技术总结
本发明公开了一种基于模板表示的容器镜像配置文件自动化生成方法及装置,方法包括:构建知识图谱,训练模型;根据用户需求生成容器镜像配置文件;对生成的容器镜像配置文件进行检测与修复,输出检测与修复后的容器镜像配置文件,完成自动化生成步骤。本发明完成容器镜像配置文件的自动化生成,并且提高生成容器镜像配置文件的成功率。镜像配置文件的成功率。镜像配置文件的成功率。
技术研发人员:陈铁明 钟云锦 朱志凌 王婷 孔浩彬 宋琪杰 吕明琪 朱添田 季白杨 顾国民 刘承威
受保护的技术使用者:浙江工业大学
技术研发日:2023.05.29
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/