一种镜像主体自动保存方法、装置、设备及存储介质制造方法及图纸

技术编号:33142295 阅读:10 留言:0更新日期:2022-04-22 13:52
本申请公开了一种镜像主体自动保存方法、装置、设备及存储介质,该方法包括:获取所有涉及前一次有效改动命令的索引主体;构建基于所有前一次有效改动命令的前一次有效改动信息的字典树;根据用户输入的后一次有效改动命令,获取后一次有效改动命令对应的索引主体的后一次有效改动信息;根据对应索引主体的后一次有效改动信息和前一次有效改动信息的判断结果,迭代字典树的对应节点或创建字典树的新节点;根据用户的保存容器请求将后一次有效改动命令转化为dockerfile;存储dockerfile,根据dockerfile创建新镜像。本申请可以降低镜像出现有冗余文件和无分层情况的概率,还能向用户清楚地展示所有有效改动命令。户清楚地展示所有有效改动命令。户清楚地展示所有有效改动命令。

【技术实现步骤摘要】
一种镜像主体自动保存方法、装置、设备及存储介质


[0001]本专利技术涉及自动驾驶
,尤其是涉及一种镜像主体自动保存方法、装置、设备及存储介质。

技术介绍

[0002]目前,能完好保存容器修改内容的方式是通过官方提供的容器操作指令完成保存。保存过程是将容器创建后所有在可读写层的修改作为一层新的镜像层,从而生成新的镜像。
[0003]但是,通过调用官方提供的容器操作指令作容器保存的方式存在以下缺陷:
[0004]当人们把所有的修改全部打包成一层以后,里面不光有许多用户在调试和运行任务时遗留的缓存文件,从而使新镜像冗大臃肿,而且这种保存方式无法像dockerfile的镜像构建那样展现添加了哪些工具和安装包。这就导致用户(包括保存容器的用户本人)在一段时间后重新使用时镜像,都不能清楚该镜像里的内容,不利于后续的迭代。
[0005]很多公开文献中都指出,保存容器最好的方式还是dockerfile。但是,在用户的实际工作过程中,往往是在试验了一段时间后想要对容器作保存,或者在有集群、节点迁移的需求的情况下需要临时保存容器以便重建。针对每个容器,如果要求用户在操作时每次都要手动记录下自身想要添加的工具,并改写成dockerfile,是比较难以实现的,同时也会影响用户自身项目的开发效率。
[0006]所以,目前业内能实现容器保存目的的方式,仍然是调用官方提供的容器操作指令作容器保存。

技术实现思路

[0007]为此,本申请的实施例所解决的技术问题在于提供一种镜像主体自动保存方法、装置、设备及存储介质,其能够自动识别和记录用户的有效改动命令,并对有效改动命令进行实时迭代,不但可以大大降低最终得到的镜像出现有冗余文件和无分层情况的概率,而且还可以在使用dockerfile保存容器时,能够向用户清楚地展示所有的有效改动命令。
[0008]为了解决上述技术问题,本申请采用的技术方案内容具体如下:
[0009]第一方面,本申请实施例提供一种镜像主体自动保存方法,包括:
[0010]S1:获取所有涉及前一次有效改动命令的索引主体;
[0011]S2:构建基于所有前一次有效改动命令的前一次有效改动信息的字典树,其中,所述前一次有效改动信息、索引主体、以及字典树的节点三者一一对应;
[0012]S3:根据用户输入的后一次有效改动命令,获取后一次有效改动命令对应的所述索引主体的后一次有效改动信息;
[0013]S4:根据对应所述索引主体的后一次有效改动信息和对应所述索引主体的前一次有效改动信息的判断结果,迭代字典树的对应节点或创建字典树的新节点;
[0014]S5:根据用户的保存容器请求将后一次有效改动命令转化为dockerfile;
[0015]S6:存储dockerfile,根据dockerfile创建新镜像。
[0016]进一步地,所述S4包括:
[0017]判断对应所述索引主体的后一次有效改动信息与对应所述索引主体的前一次有效改动信息是否一致:
[0018]若是,则将对应所述索引主体的前一次有效改动信息替换为对应所述索引主体的后一次有效改动信息;
[0019]若否,则在字典树上创建对应所述索引主体的后一次有效改动信息的新节点。
[0020]进一步地,所述S1包括:
[0021]S11:获取所有所述索引主体的前一次有效改动信息;
[0022]S12:识别各个前一次有效改动信息,得到各个前一次有效改动信息对应的识别结果;根据各个前一次有效改动信息对应的识别结果,创建与各个前一次有效改动信息对应的识别结果一一对应的节点;
[0023]S13:采用数据流连接各个节点,形成字典树。
[0024]优选地,所述S11与S12之间还包括S11

,所述S11

包括:
[0025]采用字典序对所有前一次有效改动信息进行排序,得到前一次有效改动信息的层级关系;
[0026]所述S13包括:
[0027]根据层级关系采用数据流连接各个节点,形成字典树。
[0028]更优选地,所述S11与S12之间还包括S11”,所述S11”包括:
[0029]定义一个起始节点。
[0030]优选地,所述前一次有效改动信息包括索引主体的前一次路径、索引主体的前一次修改时间、子索引主体的前一次节点;所述S12包括:
[0031]S121:将索引主体的前一次路径转换为由若干个第一字符串组成的第一字符串组,所述第一字符串用于对应当前层的索引主体名称;
[0032]S122:设置当前下标指向第一字符串组中的第一个第一字符串,并按照第一字符串在第一字符串组中的排列顺序依次遍历各个第一字符串;
[0033]S123:针对当前下标所指向的第一字符串,判断当前字典树指针的子节点映射键中是否存在所述所指向的第一字符串:
[0034]若是,则将当前字典树指针指向对应的子节点映射键所对应的子节点指针,然后继续移动第一字符串组的下标至第一字符串组的下一个第一字符串;
[0035]若否,则以当前字典树指针为父节点,新建子节点。
[0036]更优选地,所述以当前字典树指针为父节点,新建子节点,包括:
[0037]创建一个新子节点,赋值新子节点的索引主体的路径为当前字典树指针指向的节点所记录的路径与当前第一字符串的合并路径,赋值新子节点的索引主体的前一次修改时间为在容器中查询到的合并路径的最近修改时间,赋值新子节点的子索引主体为空集;
[0038]在当前节点的映射键值表中添加<第一字符串,新子节点指针地址>的映射关系,然后重置当前字典树指针到字典树的起始节点,并继续遍历下一行的有效改动信息。
[0039]进一步地,所述后一次有效改动信息包括索引主体的后一次路径、索引主体的后一次修改时间、子索引主体的后一次节点;所述S3包括:
[0040]S31:采用字典序对所有后一次有效改动信息进行排序,得到后一次有效改动信息;的层级关系;
[0041]S32:设置记录后一次有效改动信息更改状态的布尔变量;赋值布尔变量的取值,所述取值为true或false,其中,true表示后一次有效改动信息已更改,false表示后一次有效改动信息未更改,并且布尔变量的初始取值为false。
[0042]优选地,所述S4包括:
[0043]S41:将索引主体的后一次路径转换为由若干个字符串组成的第二字符串组,所述第二字符串用于对应当前层的索引主体名称;
[0044]S42:设置当前下标到第二字符串组中的第一个第二字符串,并按照第二字符串在第二字符串组中的排列顺序遍历各个第二字符串;
[0045]S43:针对当前下标所指向的第二字符串,判断当前字典树指针的子节点映射键中是否存在所述所指向的第二字符串:
[0046]若是,则执行S44;
[0047本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种镜像主体自动保存方法,其特征在于,包括:S1:获取所有涉及前一次有效改动命令的索引主体;S2:构建基于所有前一次有效改动命令的前一次有效改动信息的字典树,其中,所述前一次有效改动信息、索引主体、以及字典树的节点三者一一对应;S3:根据用户输入的后一次有效改动命令,获取后一次有效改动命令对应的所述索引主体的后一次有效改动信息;S4:根据对应所述索引主体的后一次有效改动信息和对应所述索引主体的前一次有效改动信息的判断结果,迭代字典树的对应节点或创建字典树的新节点;S5:根据用户的保存容器请求将后一次有效改动命令转化为dockerfile;S6:存储dockerfile,根据dockerfile创建新镜像。2.根据权利要求1所述的镜像主体自动保存方法,其特征在于,所述S4包括:判断对应所述索引主体的后一次有效改动信息与对应所述索引主体的前一次有效改动信息是否一致:若是,则将对应所述索引主体的前一次有效改动信息替换为对应所述索引主体的后一次有效改动信息;若否,则在字典树上创建对应所述索引主体的后一次有效改动信息的新节点。3.根据权利要求2所述的镜像主体自动保存方法,其特征在于,所述S1包括:S11:获取所有所述索引主体的前一次有效改动信息;S12:识别各个前一次有效改动信息,得到各个前一次有效改动信息对应的识别结果;根据各个前一次有效改动信息对应的识别结果,创建与各个前一次有效改动信息对应的识别结果一一对应的节点;S13:采用数据流连接各个节点,形成字典树。4.根据权利要求3所述的镜像主体自动保存方法,其特征在于,所述S11与S12之间还包括S11

,所述S11

包括:采用字典序对所有前一次有效改动信息进行排序,得到前一次有效改动信息的层级关系;所述S13包括:根据层级关系采用数据流连接各个节点,形成字典树。5.根据权利要求4所述的镜像主体自动保存方法,其特征在于,所述S11与S12之间还包括S11”,所述S11”包括:定义一个起始节点。6.根据权利要求3所述的镜像主体自动保存方法,其特征在于,所述前一次有效改动信息包括索引主体的前一次路径、索引主体的前一次修改时间、子索引主体的前一次节点;所述S12包括:S121:将索引主体的前一次路径转换为由若干个第一字符串组成的第一字符串组,所述第一字符串用于对应当前层的索引主体名称;S122:设置当前下标指向第一字符串组中的第一个第一字符串,并按照第一字符串在第一字符串组中的排列顺序依次遍历各个第一字符串;S123:针对当前下标所指向的第一字符串,判断当前字典树指针的子节点映射键中是
否存在所述所指向的第一字符串:若是,则将当前字典树指针指向对应的子节点映射键所对应的子节点指针,然后继续移动第一字符串组的下标至第一字符串组的下一个第一字符串;若否,则以当前字典树指针为父节点,新建子节点。7.根据权利要求6所述的镜像主体自动保存方法,其特征在于,所述以当前字典树指针为父节点,新建子节点,包括:创建一个新子节点,赋值新子节点的索引主体的路径为当前字典树指针指向的节点所记录的路径与当前第一字符串的合并路径,赋值新子节点的索引主体的前一次修改时间为在容器中查询到的合并路径的最近修改时间,赋值新子节点的子索引主体为空集;在当前节点的映射键值表中添加<第一字符串,新子节点指针地址>的映射关系,然后重置当前字典树指针到字典树的起始节点,并继续遍历下一行的有效改动信息。8.根据权利要求2所述的镜像主体自动保存方法,其特征在于,所述后一次有效改动信息包括索引主体的后一次路径、索引主体的后一次修改时间、子索引主体的后一次节点;所述S3包括:S31:采用字典序对所有后一次有效改动信息进行排序,得到后一次有效改动信息;的层级关系;S32:设置记录后一次有效改动信息更改状态的布尔变量;赋值布尔变量的取值,所述取值为true或false,其中,true表示后一次有效改动信息已更改,false表示后一次有效改动信息未更改,并且布尔变量的初始取值为false。9.根据权利要求8所述的镜像主体自动保存方法,其特征在于,所述S4包括:...

【专利技术属性】
技术研发人员:杨逸飞陈飞韩旭
申请(专利权)人:广州文远知行科技有限公司
类型:发明
国别省市:

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

1