CN114756333B - 镜像处理方法、装置、电子设备及可读介质 - Google Patents
镜像处理方法、装置、电子设备及可读介质 Download PDFInfo
- Publication number
- CN114756333B CN114756333B CN202210561078.5A CN202210561078A CN114756333B CN 114756333 B CN114756333 B CN 114756333B CN 202210561078 A CN202210561078 A CN 202210561078A CN 114756333 B CN114756333 B CN 114756333B
- Authority
- CN
- China
- Prior art keywords
- compressed
- mirror image
- image
- identifier
- compression
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Library & Information Science (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提供了一种镜像处理方法、装置、电子设备及可读介质,涉及电子设备技术领域。该方法中,获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识;指定文件是在镜像压缩过程中不被压缩的文件,压缩前标识是已压缩镜像在被压缩之前对应的标识。基于原始标识以及压缩前标识进行匹配,以确定与基础镜像相匹配的已压缩镜像;相匹配的已压缩镜像的镜像内容至少包括基础镜像的镜像内容。基于相匹配的已压缩镜像以及应用层,创建组合镜像。这样,通过预先在指定文件中存储镜像压缩之前对应的标识,可以基于指定文件的压缩前标识与原始标识进行匹配,实现准确查找与该基础镜像对应的已压缩镜像。
Description
技术领域
本发明实施例涉及电子设备技术领域,尤其涉及一种镜像处理方法、装置、电子设备及可读介质。
背景技术
随着网络技术的不断发展,镜像的应用越来越广泛。例如,可以以一个镜像作为基础镜像,依赖于该基础镜像构建新的镜像。
为了丰富镜像所能提供的功能,有时会对镜像进行升级。随着不断升级,镜像中包括的镜像层(layer)数量会不断增加,而为了避免数量过多导致数据量过大的问题,会对该镜像进行压缩。如何准确查找到该镜像对应的已压缩镜像成为亟需解决的问题。
发明内容
本发明实施例提供一种镜像处理方法、装置、电子设备及可读介质,以解决如何准确查找到镜像对应的已压缩镜像的问题。
第一方面,提供了一种镜像处理方法,应用于电子设备,所述方法包括:
获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;
基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述基础镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述基础镜像的镜像内容;
基于所述相匹配的已压缩镜像以及所述应用层,创建组合镜像。
第二方面,提供了另一种镜像处理方法,应用于电子设备,所述方法包括:
获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;
基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述原始镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述原始镜像的镜像内容。
第三方面,提供了一种镜像处理装置,应用于电子设备,所述装置包括:
第一获取模块,用于获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;
第一匹配模块,用于基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述基础镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述基础镜像的镜像内容;
创建模块,用于基于所述相匹配的已压缩镜像以及所述应用层,创建组合镜像。
第四方面,提供了另一种镜像处理装置,应用于电子设备,所述装置包括:
第二获取模块,用于获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;
第二匹配模块,用于基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述原始镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述原始镜像的镜像内容。
第五方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行任一方面所述的镜像处理方法。
第六方面,提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行任一方面所述的镜像处理方法。
本发明实施例中,获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识;指定文件是在镜像压缩过程中不被压缩的文件,压缩前标识是已压缩镜像在被压缩之前对应的标识。基于原始标识以及压缩前标识进行匹配,以确定与基础镜像相匹配的已压缩镜像;相匹配的已压缩镜像的镜像内容至少包括基础镜像的镜像内容。基于相匹配的已压缩镜像以及应用层,创建组合镜像。这样,通过预先在指定文件中存储镜像压缩之前对应的标识,使得在压缩之后,可以基于指定文件的压缩前标识与原始标识进行匹配,判断被压缩后的镜像是否与所依赖的基础镜像相匹配,从而实现准确查找与该基础镜像对应的已压缩镜像。进一步地,在准确查找到与该基础镜像对应的已压缩镜像的基础上,可以实现基于已压缩镜像创建新的组合镜像。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例提供的一种镜像处理方法的步骤流程图;
图2是本发明实施例提供的一种组合示意图;
图3是本发明实施例提供的另一种镜像处理方法的步骤流程图;
图4是本发明实施例提供的一种镜像处理装置的结构框图;
图5是本发明实施例提供的另一种镜像处理装置的结构框图;
图6是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1是本发明实施例提供的一种镜像处理方法的步骤流程图,应用于电子设备,如图1所示,该方法可以包括:
步骤101、获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识。
本发明实施例中,随着功能的不断完善,基础(base)镜像会被升级,例如,在基础镜像中增加实现通用漏洞披露(Common Vulnerabilities and Exposures,CVE)修复和/或故障(bug)修复等功能的镜像层。相应地,升级后的基础镜像可以被压缩。或者,为了节省镜像所占据的空间,对基础镜像进行压缩。也就是说,已压缩镜像中可以包括压缩后的基础镜像。其中,对镜像进行压缩可以是将多个镜像层进行压缩合并。
需要说明的是,实际应用场景中可能对基础镜像进行多次升级、多次压缩,得到多个压缩后的基础镜像。应用层(app-layer)所依赖的基础镜像对应的原始标识,可以是未经过压缩的原始版本的基础镜像中各镜像层的标识。
本发明实施例中,最新版本的基础镜像可以是最近一次压缩得到的,中间版本的基础镜像可以是之前某次压缩得到的,每次压缩可以是在当前的最新版本的基础上进行的。
原始标识可以是在制作应用层时,记录在应用层的配置文件中。示例性地,可以将一个镜像的顶层抽取出来作为应用层(app-layer),并将该app-layer所依赖的基础镜像在未被压缩时各镜像层的标识(ID),记录在app-layer的配置文件中。需要说明的是,制作app-layer时,会存在app-layer所在镜像中的基础镜像未经压缩的情况以及经过压缩的情况,本发明实施例中,在这两种情况下,在app-layer的配置文件中记录的均为未经压缩过的基础镜像中各镜像层的ID。
需要说明的是,制作app-layer时,app-layer所在镜像中的基础镜像可能未经过压缩,相应地,在这种情况下,可以直接获取基础镜像中各镜像层的ID,并记录在app-layer的配置文件中。当然,制作app-layer时,app-layer所在镜像中的基础镜像也可能经过压缩,相应地,在这种情况下,可以从该经过压缩的基础镜像的指定文件中,获取压缩之前的原始版本中各镜像层的ID。或者,也可以由制作方将原始版本的基础镜像中各镜像层的ID,记录在app-layer的配置文件中,本发明实施例对此不作限制。
获取已压缩镜像的指定文件中记录的压缩前标识,可以具体是从已压缩镜像的对应的指定文件中读取记录的压缩前标识。指定文件中可以存储有每一次压缩之前镜像对应的标识,由于压缩之后镜像对应的标识会发生变化,因此,通过记录镜像在压缩之前对应的标识,并确保记录的标识不会被压缩,避免记录的标识变化,使得后续可以基于压缩之前记录的标识判断压缩后的镜像是否与应用层目前所依赖的基础镜像相匹配。
进一步地,需要说明的是,本发明实施例中,对于已压缩镜像而言,除了包括记录的压缩之前的标识,还可以包括压缩之后得到的各个镜像层的标识。
步骤102、基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述基础镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述基础镜像的镜像内容。
示例性地,如果原始标识命中记录的压缩前标识,即,压缩前标识包括原始标识,则可以确定该压缩前标识表征的已压缩镜像与所依赖的基础镜像相匹配。其中,已压缩镜像与该所依赖的基础镜像相匹配,可以指的是该相匹配的已压缩镜像是在所依赖的基础镜像的基础上进行压缩得到的。示例性地,假设所依赖的基础镜像包括5个镜像层,该相匹配的已压缩镜像可以是对这5个镜像层进行压缩后得到的镜像。或者,该相匹配的已压缩镜像也可以是在这5个镜像层的基础上,增加了3个镜像层,得到升级后的基础镜像,并对升级后的基础镜像进行压缩后得到的镜像。因此,相匹配的已压缩镜像内容至少包括当前所依赖的基础镜像的镜像内容。
由于指定文件中包括镜像在压缩之前对应的标识,也就是说,每次压缩之前都会记录镜像目前对应的标识。这样,如果已压缩镜像中存在比所依赖的基础镜像更高版本的基础镜像,即,存在在应用层所依赖的基础镜像的基础上压缩得到的基础镜像的情况下,可以在已压缩镜像中找到相匹配的已压缩镜像。
步骤103、基于所述相匹配的已压缩镜像以及所述应用层,创建组合镜像。
示例性地,可以使用相匹配的已压缩镜像以及应用层形成新的镜像,进而得到组合镜像,以实现调整。
综上所述,本发明实施例提供的镜像处理方法,获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识;指定文件是在镜像压缩过程中不被压缩的文件,压缩前标识是已压缩镜像在被压缩之前对应的标识。基于原始标识以及压缩前标识进行匹配,以确定与基础镜像相匹配的已压缩镜像;相匹配的已压缩镜像的镜像内容至少包括基础镜像的镜像内容。基于相匹配的已压缩镜像以及应用层,创建组合镜像。这样,通过预先在指定文件中存储镜像压缩之前对应的标识,使得在压缩之后,可以基于指定文件的压缩前标识与原始标识进行匹配,判断被压缩后的镜像是否与所依赖的基础镜像相匹配,从而实现准确查找与该基础镜像对应的已压缩镜像。
同时,在准确查找到与该基础镜像对应的已压缩镜像的基础上,可以实现基于已压缩镜像创建新的组合镜像。
可选地,上述步骤103基于所述相匹配的已压缩镜像以及所述应用层,创建组合镜像,具体可以包括:
步骤S21、将所述应用层与所述相匹配的已压缩镜像进行合并,以创建所述组合镜像。
本发明实施例中,可以将相匹配的已压缩镜像包含的镜像层作为应用层的下层依赖,在相匹配的已压缩镜像包含的镜像层之上添加应用层,得到新创建的组合镜像。其中,组合镜像实际采用的基础镜像是在原始版本或者中间版本的基础镜像的基础上压缩得到的。具体的,可以是直接压缩,也可以是新增了镜像层之后压缩的。示例性地,在一种应用场景中,压缩后的镜像可以视为升级后的镜像。
可以将一个镜像的顶层抽取出来作为应用层,在基础(base)镜像升级之后,得到升级后的base1镜像。那么可以将base1镜像与应用层生成新的组合镜像。需要说明的是,本发明实施例中还可以抽取应用层所在镜像的配置文件。相应地,在基于应用层与base镜像创建新的镜像时,可以基于抽取的配置文件以及base镜像的配置文件,生成新的配置文件。这样,可以确保信息的完整性。例如,配置文件中可能包括应用程序执行的时候所需满足的参数,这样,可以保证之后能够基于镜像正常运行应用程序。
本发明实施例中,由于相匹配的已压缩镜像是经过压缩后的镜像,因此,基于相匹配的已压缩镜像创建组合镜像,一定程度上可以降低组合镜像所占据的空间。进一步地,在相匹配的已压缩镜像是在新增镜像层之后经过压缩得到的情况下,还可以使得新创建的组合镜像的功能更加丰富。
可选地,所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述基础镜像中各镜像层的校验标识和/或索引标识。
本发明实施例中,校验标识可以为镜像层的diffID,校验标识可以根据镜像层的打包文件校验获得。索引标识可以为chainID,索引标识可以根据镜像层的diffID计算得到。示例性地,对于最底层的镜像层,该镜像层的chainID可以等于该镜像层的diffID。对于非最底层的镜像层n,该镜像层n的chainID(n)可以是基于镜像层n的下层镜像层的chainID以及镜像层n的diffID进行哈希运算得到的。
上述步骤102基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述基础镜像相匹配的已压缩镜像,具体可以包括:
步骤S31、对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识。
步骤S32、若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述基础镜像相匹配的已压缩镜像。
本发明实施例中,可以基于原始标识以及压缩前标识进行比对,如果原始标识中的校验标识命中压缩前标识中的校验标识,和/或,原始标识中的索引标识命中压缩前标识中的索引标识,则可以说明两者相匹配,该已压缩镜像是在应用层当前所依赖的基础镜像的基础上压缩得到的。
示例性地,以原始标识以及压缩前标识均包括一种标识为例,例如,原始标识以及压缩前标识均仅包括索引标识或校验标识。相关技术中,镜像被压缩后,多个镜像层被合并为一个镜像层,由于容器镜像的镜像ID是所包含的镜像层的diffID计算得到的,因此,压缩后的镜像的镜像ID值必然会改变。即使压缩后的镜像的内容至少包括压缩前的镜像的内容,却无法判定两个镜像是否相等。本发明实施例中,无论制作应用层时,所使用的镜像中采用的是哪个版本的基础镜像,原始标识均会命中指定文件中记录的标识,从而准确的判断出,与当前所依赖的基础镜像实质相匹配的压缩后的基础镜像。其中,原始标识命中指定文件中记录的标识,可以指的是指定文件中记录的标识中存在当前原始标识。
本发明实施例中,在原始标识中的校验标识命中压缩前标识中的校验标识,和/或,原始标识中的索引标识命中压缩前标识中的索引标识的情况下,将压缩前标识所指示的已压缩镜像确定为与基础镜像相匹配的已压缩镜像。一定程度上可以确保匹配对比的准确性。
需要说明的是,本发明实施例中,假设原始版本的基础镜像包括3个镜像层,假设该基础镜像对应的标识包括:01、02、03。直接对这三个镜像层压缩,得到一个仅包括一层的镜像,作为中间版本1的基础镜像。此时指定文件中记录的标识包括:01、02、03。
进一步地,假设在中间版本1的基础镜像的基础上添加了一个镜像层04,并进行压缩得到只包括一个镜像层的中间版本2的基础镜像。其中,此时指定文件中记录的标识包括:01、02、03;04。也就是说,在已压缩的中间版本1的基础上继续进行升级压缩时,可以记录压缩之前,在镜像中新添加的镜像层的标识,即,上述标识04。
可选地,本发明实施例中的已压缩镜像可以通过下述步骤获得:
步骤S41、响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于所述待压缩镜像中各镜像层的校验标识,生成所述待压缩镜像中各镜像层的索引标识。
其中,待压缩镜像可以是镜像压缩指令指示的镜像。示例性地,用户可以根据实际需求选择镜像库中的镜像,以作为待压缩镜像。示例性地,对于待压缩镜像中的任一镜像层,可以拉取该镜像层的打包文件,对打包文件的内容进行哈希处理,将得到的哈希值作为该镜像层的diffID。在一种实现方式中,对于底层镜像层(layer0),chainID(layer0)==diffID(layer0);对于非底层镜像层(layerN),chainID(layerN)==SHA256hex(chainID(layerN-1)+diffID(layerN)),即,非底层镜像层的chainID是基于该非底层镜像层的下层镜像层(layerN-1)的chainID以及该层的diffID计算得到。其中,“SHA256hex”表示哈希算法。
步骤S42、将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,并对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,所述待压缩镜像的指定文件与得到的所述已压缩镜像的指定文件为同一文件。
本发明实施例中,通过在进行压缩操作之前,获取压缩之前各层的校验标识以及索引标识,可以避免由于进行压缩操作,导致无法准确获取校验标识以及索引标识。进一步地,可以在完成将校验标识以及索引标识写入指定文件之后,再执行压缩操作。或者,也可以在获取到校验标识以及索引标识之后,就执行压缩操作,本发明实施例对此不作限制。指定文件可以为镜像配置文件。其中,待压缩镜像可以为一个或多个。一个待压缩镜像被压缩之后,可以得到一个已压缩镜像。对于任一待压缩镜像而言,该待压缩镜像被压缩之后所得到的已压缩镜像的指定文件,即为该待压缩镜像的指定文件。
其中,进行压缩操作可以是将待压缩镜像中被选中的多个镜像层合并为一个镜像层。示例性地,可以将第0层与第1层合并为一个层,将第2层与第3层合并为一个层。或者,将所有层合并为一个层。
本发明实施例中,在对镜像进行压缩时,响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于待压缩镜像中各镜像层的校验标识,生成待压缩镜像中各镜像层的索引标识。将待压缩镜像中各镜像层的校验标识和/或待压缩镜像中各镜像层的索引标识记录至待压缩镜像的指定文件中,并对待压缩镜像进行压缩操作。这样,使得压缩之后还留存有能够进行判断匹配的依据,从而使得后续可以基于记录的标识判断已压缩镜像中是否存在与当前所依赖的基础镜像相匹配的已压缩镜像。
作为一种可选方式,本发明实施例在仅记录校验标识,或者仅记录索引标识的情况下,可以确保能够基于记录的标识查询已压缩镜像。作为另一种可选方式,本发明实施例获取并记录多种标识,即,记录校验标识以及索引标识,这样,通过提供多种维度的标识,可以为后续提供更多的判断依据,从而一定程度上可以提高判断效果。需要说明的是,上述步骤S41-步骤S42的执行主体可以为上述电子设备,也可以为其他设备,本发明实施例对此不作限制。
可选的,在一种实现方式中,对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,可以具体包括:
步骤S51、响应于函数调用指令,调用预设压缩函数,并基于所调用的所述预设压缩函数获取所述待压缩镜像中所有镜像层的数据。
其中,所述函数调用指令中包括所述待压缩镜像的镜像指示信息。
其中,函数调用指令可以是用户触发的,示例性地,函数调用指令可以为:dockercompress(*)。其中,“*”表示待压缩镜像的镜像指示信息,镜像指示信息可以为镜像标识(ID)或者镜像名称。
具体调用时,可以基于函数调用指令中携带的待压缩镜像的镜像标识查找待压缩镜像的配置文件,然后基于配置文件确定待压缩镜像中顶层镜像层的chainID,接着,基于顶层镜像层的chainID,调用预设获取函数,以获取顶层镜像层的指针。相应地,可以在预设压缩函数中定义顶层镜像层的指针以及定义预设压缩函数中的“parent参数”。其中,“parent参数”表示父镜像层参数。
示例性地,预设压缩函数可以表示为:(rl *roLayer) TarStreamFrom(parentChainID) (io.ReadCloser, error)。其中,“(rl *roLayer)”表示顶层镜像层的指针,“parent ChainID”表示parent参数。具体的,可以将parent参数指定为ChainID(""),即,将parent参数定义为空,以指示预设获取函数从顶层开始,获取顶层以下所有层的数据。
具体的,预设压缩函数可以是获取所有层的文件数据信息的并集,即,预设压缩函数返回的结果中不存在冗余内容,这样,可以彻底删除冗余文件,使得后续生成的压缩后的镜像中不包括冗余文件。需要说明的是,“io.ReadCloser”可以表示返回的数据,“TarStreamFrom”可以表示函数名。在出现错误时,预设压缩函数可以返回“error”字段,以表示当前压缩出现错误。
步骤S52、基于所述所有镜像层的数据生成新的镜像层,并基于所生成的所述新的镜像层生成所述已压缩镜像,以完成所述压缩操作。
具体的,可以将所有镜像层的数据注入到一个新的对象中,形成一个新的镜像层。其中,该对象可以表示为“ro_layer”。接着,可以更新待压缩镜像的配置文件中的相关信息,例如,镜像层数、镜像层ID等等。并且在镜像创建命令中引用该新的镜像层,以生成一个包含该新的镜像层的镜像。其中,新生成的这个镜像即为压缩后的镜像,即,已压缩镜像。压缩后的镜像的配置文件为更新后的配置文件。
在一种实现方式中,是通过编写Dockerfile文件,通过From指令在已经存在的镜像的基础上进行修改,形成新的镜像层。这种方式不能删除已有镜像中的冗余文件,更不能减少容器镜像中的镜像层。在另一种实现方式中,是通过执行docker commit命令保存容器,在容器的父镜像的基础上形成新的镜像,形成新的镜像层。这种方式也不能删除已有镜像中的冗余文件,更不能减少容器镜像中的镜像层。由于这两种实现方式,均在已有的父镜像的基础上形成新的镜像层,因此,均会导致镜像体积的增加和镜像层的增加。本发明实施例中,通过调用预设压缩函数,可以得到压缩后的层数为1且无冗余文件的镜像。在后续该镜像作为容器启动后可以保证与压缩之前的镜像作为容器启动后的内容一致,同时可以减少镜像的体积。
且本发明实施例中,通过减少镜像层数量,可以避免由于镜像层过多,影响文件系统的性能的问题,从而提高文件系统的性能。
需要说明的是,本发明实施例中还可以检测待压缩镜像包含的层数,在层数为多个的情况下,执行压缩操作,以将这多个镜像层合并为一个镜像层,得到一个包含一个镜像层的压缩后的镜像。
可选地,上述步骤S42中的将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,具体可以包括:
步骤S61、将压缩之前的所述待压缩镜像中各镜像层的层标识作为键名,将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识作为键值,以键值对的方式存储至所述镜像配置文件的指定字段,其中,所述指定字段是所述镜像配置文件中提供的可扩展字段。
本发明实施例中,所述待压缩镜像的指定文件可以为所述待压缩镜像的镜像配置文件。指定字段可以为镜像配置文件中提供的可供扩展的字段,示例性地,指定字段可以为Labels字段。相应地,指定字段在镜像压缩过程中不会被压缩。层标识可以用于唯一指示待压缩镜像中的一个镜像层,层标识可以根据实际需求设置,示例性地,层标识可以为镜像层的编号,例如,层0、层1、层2、……、层N,等等。具体在记录校验标识以及索引标识的情况下,可以具体包括将该镜像层的层标识作为键名(key),以该镜像层的校验标识以及所述索引标识作为键值(value),以键值对(key-value)的形式存储。其中,待压缩镜像中存在多少个镜像层,可以对应存储多少个key-value。
由于指定字段是镜像配置文件中提供的可供扩展的字段,因此,在指定字段中以键值对的方式记录校验标识以及索引标识,可以避免因为增加标识导致镜像文件不符合所需遵循的协议的问题。示例性地,以镜像遵循开放容器标准协议(OCI协议)为例,即使创建压缩镜像时在镜像配置文件的指定字段中记录标识,也可以确保压缩后得到的镜像符合OCI协议,从而使得压缩后得到的镜像可以在支持OCI协议的容器引擎上运行。
在一种应用场景中,镜像被压缩之后,由于镜像中包括的镜像层发生改变,即,镜像的镜像层的diffID会发生变化,因此基于diffID确定的镜像ID也会发生改变。然而压缩后,镜像文件系统的实质内容并未发生改变,即,压缩前与压缩后的镜像实质上可以视为相等。由于压缩后镜像ID被改变,因此无法找到被压缩镜像与原有镜像之间的关联,无法判断被压缩的容器镜像与未被压缩容器镜像是否相等。本发明实施例中,在创建压缩镜像时,在镜像配置文件的Labels字段中增加可选地key-value字段,即,将这个镜像中每个镜像层(layer)的diffID以及chainID保存到镜像配置文件的Labels字段中。在创建压缩镜像时,镜像配置文件中的Labels字段保持不变。这样,每次可以基于Labels字段比较镜像内容是否相同。
本发明实施例中,以镜像配置文件中提供的可供扩展且在镜像压缩过程中不会被压缩的字段作为指定字段,将压缩之前的待压缩镜像中各镜像层的层标识作为键名,将校验标识以及索引标识作为键值,以键值对的方式存储至镜像配置文件的指定字段。这样,可以确保记录的标识不会因为压缩操作被改变,后续可以判断已压缩镜像中是否存在相匹配镜像的同时,避免因为增加标识导致镜像文件不符合所需遵循的协议的问题,从而确保镜像的可适配性。同时,以键值对的方式进行存储,一定程度上可以方便后续进行查找对比。
可选地,上述步骤S21将所述应用层与所述相匹配的已压缩镜像进行合并之前,本发明实施例中还可以执行下述操作:
步骤S71、检测所述相匹配的已压缩镜像的数量。
本发明实施例中,由于基础镜像可能经过多次压缩,存在多个版本压缩后的基础镜像,因此,查找到的相匹配的已压缩镜像可能为多个。示例性地,假设当前所依赖的基础镜像对应的原始标识为:01、02、03。由于中间版本1的基础镜像的指定文件中记录的压缩前标识为:01、02、03,中间版本2的基础镜像的指定文件中记录的压缩前标识为: 01、02、03;04,那么从已压缩镜像中可以查找到2个相匹配的已压缩镜像:中间版本1的基础镜像以及中间版本2的基础镜像。
步骤S72、在所述数量不小于2的情况下,从所述相匹配的已压缩镜像中选择最近一次压缩得到的镜像。
具体的,可以获取每个相匹配的已压缩镜像的压缩时间,然后将压缩时间距离当前时间最近的相匹配的已压缩镜像,作为最近一次压缩得到的镜像。其中,各个已压缩镜像的压缩时间可以是在执行压缩操作时预先记录的。
相应地,上述步骤S21将所述应用层与所述相匹配的已压缩镜像进行合并的步骤,具体可以包括:
步骤S81、将所述应用层与所述最近一次压缩得到的镜像进行合并。
由于每次压缩往往是在上一次压缩的镜像上升级后进行的,因此最近一次压缩得到的镜像往往功能更丰富。相应地,可以选择最近一次压缩得到的镜像参与合并,可以更大程度的确保调整效果。
图2是本发明实施例提供的一种组合示意图,如图2所示,图中的应用层1、应用层2以及应用层3可以表示不同的应用层,应用层下边的部分可以表示升级后的基础镜像(即,图2中虚线框中的部分)。示例性地,可以通过在图2中的“原始基础镜像”的基础上添加新的镜像层,以得到该升级后的基础镜像。其中,所添加的新的镜像层可以为图2中的“升级层1”以及“升级层2”。其中,升级层可以表示为“upgrade-layer”,原始基础镜像可以表示为“base OS”。进一步地,不同的应用层可以与升级后的基础镜像进行组合,得到不同的应用镜像(app-image)。示例性地,本发明实施例中,可以通过改造开源程序例如docker程序的源代码,这样,在进行组合时,可以将应用层以及相匹配的基础镜像导入到docker中,以自动将导入的应用层与相匹配的基础镜像合并成应用镜像。
图3是本发明实施例提供的另一种镜像处理方法的步骤流程图,应用于电子设备,如图3所示,该方法可以包括:
步骤201、获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识。
其中,原始镜像可以为任一镜像,例如,原始镜像可以为前述基础镜像,也就可以为其他镜像。原始镜像对应的原始标识可以是未经过压缩的原始版本的原始镜像中各镜像层的标识。
步骤202、基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述原始镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述原始镜像的镜像内容。
综上所述,本发明实施例提供的镜像处理方法,获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,指定文件是在镜像压缩过程中不被压缩的文件,压缩前标识是已压缩镜像在被压缩之前对应的标识。基于原始标识以及压缩前标识进行匹配,以确定与原始镜像相匹配的已压缩镜像,其中,相匹配的已压缩镜像的镜像内容至少包括原始镜像的镜像内容。这样,通过预先在指定文件中存储镜像压缩之前对应的标识,使得在压缩之后,可以基于指定文件的压缩前标识与原始镜像对应的原始标识进行匹配,判断被压缩后的镜像是否与原始镜像相匹配,从而实现准确查找与该原始镜像对应的已压缩镜像。
可选的,所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述原始镜像中各镜像层的校验标识和/或索引标识;所述步骤202基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述原始镜像相匹配的已压缩镜像,可以包括:对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述原始镜像相匹配的已压缩镜像。
可选的,所述已压缩镜像通过下述方式获得:响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于所述待压缩镜像中各镜像层的校验标识,生成所述待压缩镜像中各镜像层的索引标识;将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,并对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,所述待压缩镜像的指定文件与得到的所述已压缩镜像的指定文件为同一文件。
可选的,所述待压缩镜像的指定文件为所述待压缩镜像的镜像配置文件;所述将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中的操作,可以包括:将压缩之前的所述待压缩镜像中各镜像层的层标识作为键名,将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识作为键值,以键值对的方式存储至所述镜像配置文件的指定字段,其中,所述指定字段是所述镜像配置文件中提供的可扩展字段。
可选的,所述对所述待压缩镜像进行压缩操作,具体可以是响应于函数调用指令,调用预设压缩函数,并基于所调用的所述预设压缩函数获取所述待压缩镜像中所有镜像层的数据;基于所述所有镜像层的数据生成新的镜像层,并基于所生成的所述新的镜像层生成所述已压缩镜像,以完成所述压缩操作。
其中,上述各个步骤的实现方式以及所能达到的技术效果可参照前述相关描述,此处不再赘述。
图4是本发明实施例提供的一种镜像处理装置的结构框图。应用于电子设备,所述装置包括:
第一获取模块301,用于获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;
第一匹配模块302,用于基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述基础镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述基础镜像的镜像内容;
创建模块303,用于基于所述相匹配的已压缩镜像以及所述应用层,创建组合镜像。
可选的,所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述基础镜像中各镜像层的校验标识和/或索引标识;
所述第一匹配模块302,具体用于:
对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;
若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述基础镜像相匹配的已压缩镜像。
可选的,所述已压缩镜像通过下述模块获得:
第一标识获取模块,用于响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于所述待压缩镜像中各镜像层的校验标识,生成所述待压缩镜像中各镜像层的索引标识;
第一压缩模块,用于将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,并对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,所述待压缩镜像的指定文件与得到的所述已压缩镜像的指定文件为同一文件。
可选的,所述待压缩镜像的指定文件为所述待压缩镜像的镜像配置文件;
所述第一压缩模块,具体用于:
将压缩之前的所述待压缩镜像中各镜像层的层标识作为键名,将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识作为键值,以键值对的方式存储至所述镜像配置文件的指定字段,其中,所述指定字段是所述镜像配置文件中提供的可扩展字段。
可选的,所述第一压缩模块,还具体用于:
响应于函数调用指令,调用预设压缩函数,并基于所调用的所述预设压缩函数获取所述待压缩镜像中所有镜像层的数据;
基于所述所有镜像层的数据生成新的镜像层,并基于所生成的所述新的镜像层生成所述已压缩镜像,以完成所述压缩操作。
可选的,所述创建模块303,具体用于:
将所述应用层与所述相匹配的已压缩镜像进行合并,以创建所述组合镜像。
可选的,所述装置中:
第一匹配模块302还用于检测所述相匹配的已压缩镜像的数量;
所述装置还包括匹配镜像选取模块,用于在所述数量不小于2的情况下,从所述相匹配的已压缩镜像中选择最近一次压缩得到的镜像;
所述创建模块303,还具体用于:
将所述应用层与所述最近一次压缩得到的镜像进行合并。
本发明实施例提供的镜像处理装置,获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识;指定文件是在镜像压缩过程中不被压缩的文件,压缩前标识是已压缩镜像在被压缩之前对应的标识。基于原始标识以及压缩前标识进行匹配,以确定与基础镜像相匹配的已压缩镜像;相匹配的已压缩镜像的镜像内容至少包括基础镜像的镜像内容。基于相匹配的已压缩镜像以及应用层,创建组合镜像。这样,通过预先在指定文件中存储镜像压缩之前对应的标识,使得在压缩之后,可以基于指定文件的压缩前标识与原始标识进行匹配,判断被压缩后的镜像是否与所依赖的基础镜像相匹配,从而实现准确查找与该基础镜像对应的已压缩镜像。同时,在准确查找到与该基础镜像对应的已压缩镜像的基础上,可以实现基于已压缩镜像创建新的组合镜像。
图5是本发明实施例提供的另一种镜像处理装置的结构框图。应用于电子设备,所述装置包括:
第二获取模块401,用于获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;
第二匹配模块402,用于基于所述原始标识以及所述压缩前标识进行匹配,以确定与所述原始镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述原始镜像的镜像内容。
可选的,所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述原始镜像中各镜像层的校验标识和/或索引标识;
所述第二匹配模块402,具体用于:
对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;
若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述原始镜像相匹配的已压缩镜像。
可选的,所述已压缩镜像通过下述模块获得:
第二标识确定模块,用于响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于所述待压缩镜像中各镜像层的校验标识,生成所述待压缩镜像中各镜像层的索引标识;
第二压缩模块,用于将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,并对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,所述待压缩镜像的指定文件与得到的所述已压缩镜像的指定文件为同一文件。
可选的,所述待压缩镜像的指定文件为所述待压缩镜像的镜像配置文件;
所述第二压缩模块,具体用于:
将压缩之前的所述待压缩镜像中各镜像层的层标识作为键名,将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识作为键值,以键值对的方式存储至所述镜像配置文件的指定字段,其中,所述指定字段是所述镜像配置文件中提供的可扩展字段。
可选的,所述第二压缩模块,还具体用于:
响应于函数调用指令,调用预设压缩函数,并基于所调用的所述预设压缩函数获取所述待压缩镜像中所有镜像层的数据;
基于所述所有镜像层的数据生成新的镜像层,并基于所生成的所述新的镜像层生成所述已压缩镜像,以完成所述压缩操作。
综上所述,本发明实施例提供的镜像处理装置,获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,指定文件是在镜像压缩过程中不被压缩的文件,压缩前标识是已压缩镜像在被压缩之前对应的标识。基于原始标识以及压缩前标识进行匹配,以确定与原始镜像相匹配的已压缩镜像,其中,相匹配的已压缩镜像的镜像内容至少包括原始镜像的镜像内容。这样,通过预先在指定文件中存储镜像压缩之前对应的标识,使得在压缩之后,可以基于指定文件的压缩前标识与原始镜像对应的原始标识进行匹配,判断被压缩后的镜像是否与原始镜像相匹配,从而实现准确查找与该原始镜像对应的已压缩镜像。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
参照图6,是本发明实施例提供的电子设备的结构示意图。如图6所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令。存储器具体可以用于存放至少一个可执行指令。所述可执行指令使所述处理器执行前述实施例的镜像处理方法的步骤。
本发明实施例还提供一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的机器可读介质,如只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
需要说明的是,本发明实施例所涉及的各种信息、相关数据均是在经过用户授权或经各方授权后获取的。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (13)
1.一种镜像处理方法,其特征在于,应用于电子设备,所述方法包括:
获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述基础镜像中各镜像层的校验标识和/或索引标识;
对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;
若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述基础镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述基础镜像的镜像内容;
将所述应用层与所述相匹配的已压缩镜像进行合并,以创建所述组合镜像。
2.根据权利要求1所述的方法,其特征在于,所述已压缩镜像通过下述方式获得:
响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于所述待压缩镜像中各镜像层的校验标识,生成所述待压缩镜像中各镜像层的索引标识;
将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,并对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,所述待压缩镜像的指定文件与得到的所述已压缩镜像的指定文件为同一文件。
3.根据权利要求2所述的方法,其特征在于,所述待压缩镜像的指定文件为所述待压缩镜像的镜像配置文件;
所述将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,包括:
将压缩之前的所述待压缩镜像中各镜像层的层标识作为键名,将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识作为键值,以键值对的方式存储至所述镜像配置文件的指定字段,其中,所述指定字段是所述镜像配置文件中提供的可扩展字段。
4.根据权利要求2或3所述的方法,其特征在于,所述对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,包括:
响应于函数调用指令,调用预设压缩函数,并基于所调用的所述预设压缩函数获取所述待压缩镜像中所有镜像层的数据;
基于所述所有镜像层的数据生成新的镜像层,并基于所生成的所述新的镜像层生成所述已压缩镜像,以完成所述压缩操作。
5.根据权利要求1所述的方法,其特征在于,所述将所述应用层与所述相匹配的已压缩镜像进行合并之前,所述方法还包括:
检测所述相匹配的已压缩镜像的数量;
在所述数量不小于2的情况下,从所述相匹配的已压缩镜像中选择最近一次压缩得到的镜像;
所述将所述应用层与所述相匹配的已压缩镜像进行合并,包括:将所述应用层与所述最近一次压缩得到的镜像进行合并。
6.一种镜像处理方法,其特征在于,应用于电子设备,所述方法包括:
获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述原始镜像中各镜像层的校验标识和/或索引标识;
对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;
若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述原始镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述原始镜像的镜像内容。
7.根据权利要求6所述的方法,其特征在于,所述已压缩镜像通过下述方式获得:
响应于镜像压缩指令,获取待压缩镜像中各镜像层的校验标识,以及,基于所述待压缩镜像中各镜像层的校验标识,生成所述待压缩镜像中各镜像层的索引标识;
将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,并对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,所述待压缩镜像的指定文件与得到的所述已压缩镜像的指定文件为同一文件。
8.根据权利要求7所述的方法,其特征在于,所述待压缩镜像的指定文件为所述待压缩镜像的镜像配置文件;
所述将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识,记录至所述待压缩镜像的指定文件中,包括:
将压缩之前的所述待压缩镜像中各镜像层的层标识作为键名,将所述待压缩镜像中各镜像层的校验标识和/或所述待压缩镜像中各镜像层的索引标识作为键值,以键值对的方式存储至所述镜像配置文件的指定字段,其中,所述指定字段是所述镜像配置文件中提供的可扩展字段。
9.根据权利要求7或8所述的方法,其特征在于,所述对所述待压缩镜像进行压缩操作,得到所述已压缩镜像,包括:
响应于函数调用指令,调用预设压缩函数,并基于所调用的所述预设压缩函数获取所述待压缩镜像中所有镜像层的数据;
基于所述所有镜像层的数据生成新的镜像层,并基于所生成的所述新的镜像层生成所述已压缩镜像,以完成所述压缩操作。
10.一种镜像处理装置,其特征在于,应用于电子设备,所述装置包括:
第一获取模块,用于获取应用层所依赖的基础镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述基础镜像中各镜像层的校验标识和/或索引标识;
第一匹配模块,用于对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述基础镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述基础镜像的镜像内容;
创建模块,用于将所述应用层与所述相匹配的已压缩镜像进行合并,以创建所述组合镜像。
11.一种镜像处理装置,其特征在于,应用于电子设备,所述装置包括:
第二获取模块,用于获取原始镜像对应的原始标识,以及,获取已压缩镜像的指定文件中记录的压缩前标识,其中,所述指定文件是在镜像压缩过程中不被压缩的文件,所述压缩前标识是所述已压缩镜像在被压缩之前对应的标识;所述压缩前标识包括所述已压缩镜像被压缩之前的各镜像层的校验标识和/或索引标识,所述原始标识包括未经过压缩的所述原始镜像中各镜像层的校验标识和/或索引标识;
第二匹配模块,用于对于任一所述压缩前标识,检测所述原始标识中的校验标识是否命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识是否命中所述压缩前标识中的索引标识;若所述原始标识中的校验标识命中所述压缩前标识中的校验标识,和/或,所述原始标识中的索引标识命中所述压缩前标识中的索引标识,则将所述压缩前标识所指示的已压缩镜像确定为与所述原始镜像相匹配的已压缩镜像,其中,所述相匹配的已压缩镜像的镜像内容至少包括所述原始镜像的镜像内容。
12.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1-5中任一项所述的方法或者权利要求6-9中任一项所述的方法。
13.一个或多个机器可读介质,其特征在于,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-5中任一项所述的方法或者权利要求6-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210561078.5A CN114756333B (zh) | 2022-05-23 | 2022-05-23 | 镜像处理方法、装置、电子设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210561078.5A CN114756333B (zh) | 2022-05-23 | 2022-05-23 | 镜像处理方法、装置、电子设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114756333A CN114756333A (zh) | 2022-07-15 |
CN114756333B true CN114756333B (zh) | 2022-11-01 |
Family
ID=82335379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210561078.5A Active CN114756333B (zh) | 2022-05-23 | 2022-05-23 | 镜像处理方法、装置、电子设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114756333B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098895A (zh) * | 2022-07-18 | 2022-09-23 | 中国联合网络通信集团有限公司 | Docker容器本地镜像篡改检测方法、启动方法、装置及设备 |
CN116561152B (zh) * | 2023-07-12 | 2023-09-29 | 天津南大通用数据技术股份有限公司 | 数据库日志记录方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105260229A (zh) * | 2015-10-28 | 2016-01-20 | 北京百度网讯科技有限公司 | 拉取虚拟机镜像文件的方法和装置 |
CN111858156A (zh) * | 2020-06-12 | 2020-10-30 | 北京金山云网络技术有限公司 | 镜像管理方法、装置及电子设备 |
CN112433810B (zh) * | 2020-11-05 | 2023-12-26 | 北京浪潮数据技术有限公司 | docker容器镜像存储、拉取方法、装置及计算机可读存储介质 |
CN112597115A (zh) * | 2020-12-18 | 2021-04-02 | 国网浙江省电力有限公司电力科学研究院 | 容器镜像的压缩方法、装置、终端设备及介质 |
CN113342745B (zh) * | 2021-07-06 | 2023-06-20 | 中国光大银行股份有限公司 | 一种镜像文件的校验方法、装置、电子设备及存储介质 |
CN113672349B (zh) * | 2021-08-20 | 2024-10-01 | 绿盟科技集团股份有限公司 | 一种镜像的更新方法、装置、设备及介质 |
-
2022
- 2022-05-23 CN CN202210561078.5A patent/CN114756333B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114756333A (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114756333B (zh) | 镜像处理方法、装置、电子设备及可读介质 | |
JP4150060B2 (ja) | コンピュータ・システムにおいてリソース・モジュールをロードする方法 | |
US10489591B2 (en) | Detection system and method thereof | |
RU2565109C2 (ru) | Способ и устройство для восстановления резервной базы данных | |
US11269902B2 (en) | Time series data management method, device, and apparatus | |
CN110196728B (zh) | 镜像升级的容器处理方法和装置 | |
CN107679203B (zh) | 一种Redis内部数据库调用方法及系统 | |
CN111596945B (zh) | 嵌入式系统动态多分区固件的差分升级方法 | |
CN115576600A (zh) | 基于代码变更的差异处理方法、装置、终端及存储介质 | |
CN112783866B (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
CN116070294B (zh) | 一种权限管理方法、系统、装置、服务器及存储介质 | |
CN112650713A (zh) | 文件系统的运行方法、装置、设备和存储介质 | |
CN113687920B (zh) | 一种分布式系统的对象策略操作方法、装置及设备 | |
CN113505026B (zh) | 验证备份数据的方法、装置、设备及存储介质 | |
CN114816437A (zh) | 一种逆向生成Java实体类的方法、系统和设备 | |
CN113190244A (zh) | 无线模组升级的方法、装置、计算机设备和存储介质 | |
CN113434938A (zh) | Bim模型的检查方法、装置、计算机设备及存储介质 | |
CN113326063A (zh) | 数据处理方法、电子设备及存储介质 | |
CN113342362A (zh) | 一种容器引擎docker的信息处理方法、装置、设备和存储介质 | |
CN112100479A (zh) | 应用访问方法、装置、电子设备及存储介质 | |
CN111767070A (zh) | Api文档管理方法、装置、计算机设备及存储介质 | |
CN114721699B (zh) | 一种镜像升级方法、装置、电子设备及存储介质 | |
CN116339717B (zh) | 一种数据执行方法、装置、设备和介质 | |
CN116739397B (zh) | 一种新能源指标的动态管理方法 | |
CN118656081B (zh) | 调用信息处理方法与装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |