CN113495870A - 镜像构建的方法、装置、电子设备和存储介质 - Google Patents
镜像构建的方法、装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113495870A CN113495870A CN202010250610.2A CN202010250610A CN113495870A CN 113495870 A CN113495870 A CN 113495870A CN 202010250610 A CN202010250610 A CN 202010250610A CN 113495870 A CN113495870 A CN 113495870A
- Authority
- CN
- China
- Prior art keywords
- mirror image
- files
- target
- image
- layer
- 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.)
- Pending
Links
- 238000010276 construction Methods 0.000 title claims abstract description 49
- 230000000875 corresponding Effects 0.000 claims abstract description 48
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 11
- 238000000034 method Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 5
- 238000006011 modification reaction Methods 0.000 description 5
- 230000003287 optical Effects 0.000 description 4
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 210000003666 Nerve Fibers, Myelinated Anatomy 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000002716 delivery method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000003365 glass fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002035 prolonged Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/128—Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
Abstract
本发明公开了镜像构建的方法、装置、电子设备和存储介质,涉及计算机技术领域。该方法的一具体实施方式包括:根据基础镜像名称,从镜像仓库中获取与基础镜像名称对应的基础镜像的标识;从缓存中获取与基础镜像的标识对应的目标基础镜像,目标基础镜像为删除中间文件后的基础镜像,中间文件表示被标记删除的文件;根据目标基础镜像,构建目标镜像。该实施方式能够解决镜像构建的速度和效率低的问题。
Description
技术领域 本发明涉及计算机技术领域,尤其涉及一种镜像构建的方法、装置、电子设备和存储介质。 背景技术 目前,在云计算中,镜像为一种常用的交付方式。镜像是在容器中,通过Dockerfile来构建的。构建镜像时通常为从镜像仓库中拉取用于构建的基础镜像,然后顺序执行Dockerfile中的指令来构建。镜像仓库中可以存储多个基础镜像,以及对每个基础镜像的内容可以进行更新,更新方式为在原基础镜像的基础上增加镜像层,增加的镜像层中指示了对原基础镜像增加和/或删除的内容,表示在构建镜像时需要在原基础镜像基础上增加和/或删除对应内容后再进行镜像构建,这些被指示需要删除的内容可以称为中间文件。 在实现本发明过程中,发明人发现现有技术中至少存在如下问题: 由于基础镜像通过增加镜像层的方式更新,所以在构建镜像时从镜像仓库中获取的基础镜像有时会包括更新时增加的镜像层,如果增加镜像层中指示了基础镜像中要删除的中间文件,则在构建镜像时需要先根据基础镜像中各镜像层进行中间文件删除后再进行镜像构建,从而增加构建镜像使用的时间,进而降低镜像构建的速度和效率。 发明内容 有鉴于此,本发明实施例提供一种镜像构建的方法、装置、系统和存储介质,能够解决在构建镜像时需要先根据基础镜像中各镜像层进行中间文件删除后再进行镜像构建,增加构建镜像使用的时间,降低镜像构建的速度和效率的问题。 为实现上述目的,根据本发明实施例的一个方面,提供了一种镜像构建的方法。 本发明实施例的一种镜像构建的方法包括:根据基础镜像名称,从镜像仓库中获取与所述基础镜像名称对应的基础镜像的标识;从缓存中获取与所述基础镜像的标识对应的目标基础镜像,所述目标基础镜像为删除中间文件后的基础镜像,所述中间文件表示被标记删除的文件;根据所述目标基础镜像,构建目标镜像。 在一个实施例中,所述获取与所述基础镜像的标识对应的目标基础镜像之前,还包括: 从所述镜像仓库中获取所述基础镜像的层文件和所述基础镜像的标识; 删除所述层文件中被标记删除的文件,将所述层文件中剩余的文件确定为目标基础镜像; 将所述目标基础镜像与所述基础镜像的标识之间的对应关系存储至所述缓存。 在又一个实施例中,所述删除所述层文件中被标记删除的文件,将所述层文件中剩余的文件确定为目标基础镜像,包括: 将所述基础镜像的镜像层按照由小到大的顺序,依次确定为当前镜像层,并对每个所述当前镜像层,删除所述当前镜像层的层文件中的被标记删除的文件; 将所述基础镜像的层文件中剩余的文件确定为目标基础镜像。 在又一个实施例中,所述删除所述当前镜像层的层文件中的被标记删除的文件,包括: 获取在所述当前镜像层以上的所有镜像层的层文件中的指示文件的文件名,所述指示文件的文件名包括删除标识和目标文件名; 在所述当前镜像层的层文件中,筛选出与所述目标文件名相同的文件作为被标记删除的文件,并删除被标记删除的文件。 在又一个实施例中,所述删除所述层文件中被标记删除的文件,将所述层文件中剩余的文件确定为目标基础镜像,包括: 将所述基础镜像的镜像层按照由小到大的顺序,依次确定为目标镜像层,并对所述目标镜像层,获取目标镜像层的层文件中指示文件的文件名,所述指示文件的文件名包括删除标识和目标文件名,在所述目标镜像层之下的所有镜像层的层文件中,筛选出与所述目标文件名相同的文件作为被标记删除的文件,并删除所述被标记删除的文件; 将所述基础镜像的层文件中剩余的文件确定为目标基础镜像。 在又一个实施例中,所述获取与所述基础镜像的标识对应的目标基础镜像,包括: 判断缓存中是否存储与所述基础镜像的标识对应的目标基础镜像; 若是,则从缓存中获取所述目标基础镜像。 为实现上述目的,根据本发明实施例的另一方面,提供了一种镜像构建的装置。 本发明的一种镜像构建的装置包括:获取单元,用于根据基础镜像名称,从镜像仓库中获取与所述基础镜像名称对应的基础镜像的标识;所述获取单元,还用于从缓存中获取与所述基础镜像的标识对应的目标基础镜像,所述目标基础镜像为删除中间文件后的基础镜像,所述中间文件表示被标记删除的文件;构建单元,用于根据所述目标基础镜像,构建目标镜像。 在一个实施例中,所述获取单元,还用于从所述镜像仓库中获取所述基础镜像的层文件和所述基础镜像的标识; 还包括: 确定单元,用于删除所述层文件中被标记删除的文件,将所述层文件中剩余的文件确定为目标基础镜像; 存储单元,用于将所述目标基础镜像与所述基础镜像的标识之间的对应关系存储至缓存。 在又一个实施例中,所述确定单元,具体用于: 将所述基础镜像的镜像层按照由小到大的顺序,依次确定为当前镜像层,并对每个所述当前镜像层,确定所述当前镜像层中包括删除标识的文件,根据所述包括删除标识的文件确定被标记删除的文件,以及删除所述被标记删除的文件; 将所述基础镜像的层文件中剩余的文件确定为目标基础镜像。 在又一个实施例中,所述确定单元,所述确定单元,具体用于: 获取在所述当前镜像层以上的所有镜像层的层文件中的指示文件的文件名,所述指示文件的文件名包括删除标识和目标文件名; 在所述当前镜像层的层文件中,筛选出与所述目标文件名相同的文件作为被标记删除的文件,并删除所述被标记删除的文件。 在又一个实施例中,所述确定单元,具体用于: 将所述基础镜像的镜像层按照由小到大的顺序,依次确定为目标镜像层,并对所述目标镜像层,获取目标镜像层的层文件中指示文件的文件名,所述指示文件的文件名包括删除标识和目标文件名,在所述目标镜像层之下的所有镜像层的层文件中,筛选出与所述目标文件名相同的文件作为被标记删除的文件,并删除所述被标记删除的文件; 将所述基础镜像的层文件中剩余的文件确定为目标基础镜像。 在又一个实施例中,还包括: 判断单元,用于判断缓存中是否存储与所述基础镜像的标识对应的目标基础镜像; 获取单元,具体用于若是,则从缓存中获取所述目标基础镜像。 为实现上述目的,根据本发明实施例的再一个方面,提供了一种电子设备。 本发明实施例的一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例提供的镜像构建的方法。 为实现上述目的,根据本发明实施例的又一个方面,提供了一种计算机可读介质。 本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例提供的镜像构建的方法。 上述发明中的一个实施例具有如下优点或有益效果:本发明实施例中,在获取到基础镜像的标识后,可以根据基础镜像的标识从缓存中获取与基础镜像的标识对应的目标基础镜像,进而根据目标基础镜像可以对镜像进行构建。本发明实施例中,由于目标基础镜像为删除被指示删除的中间文件后的基础镜像,所以可以直接用于镜像构建,从而可以提高镜像构建的速度和效率,同时本发明实施例中可以直接从缓存中获取目标基础镜像,相比较从镜像仓库中获取基础镜像的方式,可以进一步提高了构建镜像的速度和效率。另外,由于目标基础镜像为删除被指示删除的中间文件后的基础镜像,所以获取的目标基础镜像中内容数量较少,相对于获取包括中间文件的基础镜像方式,也可以提高构建镜像的速度和效率。 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。 附图说明 附图用于更好地理解本发明,不构成对本发明的不当限定。其中: 图1是根据本发明实施例的镜像构建的方法的一种主要流程的示意图; 图2是根据本发明实施例的镜像构建的方法的又一种主要流程的示意图; 图3是根据本发明实施例的镜像构建的方法的又一种主要流程的示意图; 图4是根据本发明实施例的镜像构建的装置的主要单元的示意图; 图5是本发明实施例可以应用于其中的又一种示例性系统架构图; 图6是适于用来实现本发明实施例的计算机系统的结构示意图。 具体实施方式 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。 需要指出的是,在不冲突的情况下,本发明中的实施例以及实施例中的特征可以互相组合。 本发明实施例提供一种镜像构建的方法,该方法可以用于镜像构建的场景。通常情况下,对于用于镜像构建的基础镜像会被上传到镜像仓库中存储,以便于使用者从镜像仓库中直接获取所需的基础镜像来构建新的镜像。镜像仓库中可以存储多个基础镜像,以及每个基础镜像的名称、表单、标识等等,基础镜像的标识具体可以为sha256的值。每个基础镜像均可以进行内容更新,基础镜像的更新方式为在原基础镜像的基础上增加镜像层,增加的镜像层中包括对原基础镜像的修改指示,如指示原基础镜像要增加和/或删除的文件。当需要对原基础镜像增加文件时,可以将要增加的文件直接存储在增加的镜像层中;当需要删除原基础镜像中的文件时,可以通过指示文件来指示出需要删除的文件,需要删除的文件可以称为被标记删除的文件。具体的,指示文件可以通过文件名称指示需要删除的文件。例如预先设置删除标识,将需要删除的文件的名称和删除标识结合作为指示文件的名称,如此基于删除标识可以确定出指示文件,进而根据指示文件的名称和删除标识即可得出需要删除文件的名称,进而可以确定出需要删除的文件,即被标记删除的文件。删除标识可以设置为:.wh.。本发明实施例中,可以设置指示文件的名称为在被标记删除的文件的名称之前添加删除标识得出的名称。 本发明实施例提供了一种镜像构建的方法,该方法可由终端设备执行,如图1所示,该方法包括以下步骤。 S101:根据基础镜像名称,从镜像仓库中获取与基础镜像名称对应的基础镜像的标识。 其中,基础镜像名称为预先设置,本步骤中可以预存储镜像仓库中基础镜像的名称列表,进而根据名称列表可以选择出构建镜像所需基础镜像名称,进而基于基础镜像名称可以从镜像仓库中获取到与基础镜像名称对应的基础镜像的标识。同时,还可以从镜像仓库中获取与基础镜像名称对应的基础镜像的文件清单等参数。 本发明实施例中,以基础镜像的sha256的值表示基础镜像的标识。在镜像仓库中,每个基础镜像均包括对应sha256的值,对同一个基础镜像的更新,每次更新的基础镜像的sha256值也会不同,所以通过sha256可以唯一标识基础镜像。 需要说明的是,由于镜像的构建通常是在容器中执行的,所以在构建镜像之前还可以先构建用于构建镜像的容器。 S102:从缓存中获取与基础镜像的标识对应的目标基础镜像。 其中,目标基础镜像为删除中间文件后的基础镜像,中间文件表示被标记删除的文件。 目标基础镜像中删除了被标记删除的文件,并将目标基础镜像预先存储在缓存中,如此再构建镜像时,可以从缓存中直接获取到不包括中间文件的基础镜像,从而可以直接执行镜像构建的过程,提高镜像构建的效率。 为了能够从缓存中获取目标基础镜像,本发明实施例中,在执行本步骤之前,还可以执行:从镜像仓库中获取基础镜像的层文件和基础镜像的标识;删除层文件中被标记删除的文件,将层文件中剩余的文件确定为目标基础镜像;将目标基础镜像与基础镜像的标识之间的对应关系存储至缓存。 从镜像仓库中获取基础镜像的层文件,层文件包括基础镜像中各镜像层的文件,基础镜像的一些镜像层中可能会包括被标记删除的文件。本发明实施例中,在获取到基础镜像后,可以删除层文件中被标记删除的文件,并将层文件中剩余的文件确定为目标基础镜像,然后在缓存中存储目标基础镜像与基础镜像的标识之间的对应关系,从而在执行本步骤时可以根据基础镜像的标识从缓存中获取到目标基础镜像。 对删除当前镜像层的层文件中的被标记删除的文件,可以执行为:将基础镜像的镜像层按照由小到大的顺序,依次确定为当前镜像层,并对每个当前镜像层,删除当前镜像层的层文件中的被标记删除的文件;将基础镜像的层文件中剩余的文件确定为目标基础镜像。 基础镜像通常包括多个镜像层,每个镜像层均有可能包括被标记删除的文件,所以本发明实施例可以遍历每个镜像层,并删除每个镜像层中被标记删除的文件,进而基础镜像的层文件中剩余的文件即可确定为目标基础镜像。 由于基础镜像通过增加镜像层的方式更新,增加的镜像层中可能指示了原有镜像层中被标记删除的文件,所以本发明实施例中可以将基础镜像的镜像层按照由小到大的顺序进行遍历。具体方式为,按照镜像层由小到大的顺序,依次将基础镜像的镜像层确定为当前镜像层,并对每个基础镜像层执行:删除当前镜像层的层文件中的被标记删除的文件。 对于删除当前镜像层的层文件中的被标记删除的文件的步骤,本发明实施例可以具体执行为:获取在当前镜像层以上的所有镜像层的层文件中的指示文件的文件名,指示文件的文件名包括删除标识和目标文件名;在当前镜像层的层文件中,筛选出与目标文件名相同的文件作为被标记删除的文件,并删除被标记删除的文件。 本发明实施例中,通过指示文件的文件名称来指示出需要删除的文件,并且基于基础镜像的更新方式,当前镜像层以上的所有镜像层中均有可能包括指示当前镜像层中文件为被标记删除的文件的指示文件,所以本步骤中需要从当前镜像层以上的所有镜像层的层文件中查找指示文件,并获取指示文件的名称。由于指示文件的文件名包括删除标识和目标文件名,所以通过删除标识可以查找出指示文件,进而可以得出目标文件名,即被指示删除的文件的文件名。如果某文件名与目标文件名相同,即可确定其为被指示删除的文件。所以在当前镜像层的层文件中,可以筛选与目标文件名相同的文件作为被标记删除的文件,并删除被标记删除的文件。如此遍历每个镜像层后,即可删除基础镜像中所有被标记删除的文件。 具体的,假设基础镜像的层文件包括N层的文件,如果当前镜像层为第M层,则在所述当前镜像层以上的所有镜像层是指基础镜像的第M+1层至第N层,其中,N为大于0的整数,M为大于0小于等于N的整数。首先,将基础镜像的第一层确定为当前镜像层,并从基础镜像的第二层至第N层中确定出文件名称中包括删除标识的文件,即为指示文件;然后获取指示文件的文件名,文件名中包括删除标识和目标文件名,从而可以确定出指示文件的文件名中所包括的目标文件名,即被标记删除的文件的文件名;再根据目标文件名在当前镜像层的层文件中,筛选出与目标文件名相同的文件作为被标记删除的文件,进行删除。然后将基础镜像的第二层确定为当前镜像层,并从基础镜像的第三层至第N层中确定出文件名称中包括删除标识的文件,即为指示文件,然后获取指示文件的文件名,文件名中包括删除标识和目标文件名,从而可以确定出指示文件的文件名中所包括的目标文件名,即被标记删除的文件的文件名;再根据目标文件名在当前镜像层的层文件中,筛选出与目标文件名相同的文件作为被标记删除的文件,进行删除。如此通过上述过程按照基础镜像的镜像层由小到大的顺序依次确定为当前镜像层,并执行删除当前镜像层中被标记删除的文件的过程,从而得出目标基础镜像。 需要说明的是,本发明实施例中,一个指示文件通常指示出一个被标记删除的文件。例如,删除标识为:.wh.,被标记删除的文件的名称为:ABC,则指示文件的名称可以为.wh.ABC,如此根据删除标识可以确定出指示文件,进而将指示文件的名称中除删除标识为的剩余部分即可确定出目标文件名,即ABC,此目标文件名为一个被标记删除的文件的名称,从而可以确定出被标记删除的文件。所以在指示文件有多个时,获取的指示文件的文件名也包括多个,进而得出的目标文件名也包括多个。例如,确定出指示文件包括两个,分别为.wh.ABC和.wh.DEF,则可以得出目标文件名为ABC和DEF,表示被标记删除的文件的文件名为ABC和DEF,则可以从当前镜像层中筛选文件名与ABC或DEF相同的文件,如果有文件名与ABC相同的文件,则将其作为被标记删除的文件并删除,如果没有,则可以忽略;如果有文件名与DEF相同的文件,则将其作为被标记删除的文件并删除,如果没有,则可以忽略。 需要说明的是,本发明实施例中,对每个当前镜像层,在删除基础镜像中被标记删除的文件后,如果当前镜像层中包括指示文件,则还可以将当前镜像层中的指示文件删除,从而进一步减少目标基础镜像的大小,提高镜像构建的效率。 S103:根据目标基础镜像,构建目标镜像。 其中,在获取到目标基础镜像后,由于目标基础镜像中已经删除了被标记删除的文件,则可以直接进行镜像的构建,构建目标镜像。 需要说明的是,在构建镜像完成后,可以打包镜像的层文件,然后可以将打包的镜像上传到对应的镜像中心,并删除用于构建镜像的容器。 本发明实施例中,在获取到基础镜像的标识后,可以根据基础镜像的标识从缓存中获取与基础镜像的标识对应的目标基础镜像,进而根据目标基础镜像可以对镜像进行构建。本发明实施例中,由于目标基础镜像为删除被指示删除的中间文件后的基础镜像,所以可以直接用于镜像构建,从而可以提高镜像构建的速度和效率,同时本发明实施例中可以直接从缓存中获取目标基础镜像,相比较从镜像仓库中获取基础镜像的方式,可以进一步提高了构建镜像的速度和效率。另外,由于目标基础镜像为删除被指示删除的中间文件后的基础镜像,所以获取的目标基础镜像中内容数量较少,相对于获取包括中间文件的基础镜像方式,也可以提高构建镜像的速度和效率。 作为本发明实施例的一种实施方式,获取基础镜像的层文件后,删除层文件中被标记删除的文件,确定目标基础镜像的方式还可以执行为:将基础镜像的镜像层按照由小到大的顺序,依次确定为目标镜像层;对每个目标镜像层,获取目标镜像层的层文件中指示文件的文件名,指示文件的文件名包括删除标识和目标文件名,在目标镜像层以下所有镜像层的层文件中,筛选出与目标文件名相同的文件作为被标记删除的文件,并删除被标记删除的文件;将基础镜像的层文件中剩余的文件确定为目标基础镜像。 具体的,假设基础镜像的层文件包括N层的文件,如果目标镜像层为第M层,则在所述目标镜像层以上的所有镜像层是指基础镜像的第M-1层至第1层,其中,N为大于0的整数,M为大于0小于等于N的整数。 由于更新的镜像层是对原有基础镜像的更新,所有每个镜像层中如果包括指示文件,则其对应的被标记删除的文件应该为基础镜像中该镜像层以下的镜像层中的文件,所以本发明实施例中,将基础镜像的镜像层按照由小到大的顺序,依次确定为目标镜像层,通过目标镜像层中的指示文件,确定出目标镜像层以下的所有镜像层中对应的被标记删除的文件,并进行删除,如此迭代实现删除基础镜像中所有被指示标记删除的文件。 需要说明的是,由于基础镜像在更新时为对更新前基础镜像中内容的修改,所以镜像层中包括预设删除标识的文件,指示的是对此镜像层以内的基础镜像的内容中对应文件的删除。 例如,假设基础镜像的层文件包括N层的文件,其中,N为大于0的整数。在第M镜像层为目标镜像层时,第M层文件中指示文件,进而根据指示文件的名称获取到目标文件名,然后从第1层至第M-1层的层文件中筛选出与目标文件名相同的文件作为被标记删除的文件,并删除被标记删除的文件。 下面结合图1所示的实施例,以预设删除标识为.wh.、基础镜像的标识为对应sha256值为例,对上述实施方式中确定目标基础镜像并进行存储的过程进行说明,如图2所示,该方法包括以下步骤。 S201:从镜像仓库中获取基础镜像的层文件和sha256值。 其中,对需要进行预处理的基础镜像,可以从镜像仓库中获取,层文件为基础镜像各镜像层中的文件。本步骤中还可以从镜像仓库中获取基础镜像的文件清单和sha256值等等。 S202:在容器中创建/base目录和/next目录,初始化层标识。 其中,容器可以为预先建立,通常可以为构建镜像的容器。层标识用于表示基础镜像中各镜像层,本发明实施例中设置基础镜像包括N层,初始化层标识为将层标识设置为初始值,初始值可以为1。 创建/base目录和/next目录,通过两个目标对基础镜像中层文件进行过滤,删除中间文件。 S203:将基础镜像中第一层的层文件解压缩至/base目录。 其中,基础镜像中从第二层开始才有可能存在对基础镜像内容更新的镜像层,所以本步骤中可以直接将第一层的层文件解压至/base目录中。由于基础镜像中文件通常为压缩的文件,所以在处理时需要解压缩。 S204:层标识递增预设值,判断层标识是否大于N,若是,则执行步骤211;若否,则执行步骤S205。 预设值可以根据需求设置,可以设置预设值为1。基础镜像的镜像层数为N,层标识递增预设值后判断是否大于N,层标识大于N说明基础镜像已经处理完成,则执行步骤S211;层标识不大于N说明基础镜像还有没有处理的镜像层,则执行步骤S205。 需要说明的是,有些基础镜像只包括一层,说明此基础镜像为进行内容更新,则N等于1,执行步骤S203后可以直接执行步骤S211。 S205:将基础镜像中层标识对应镜像层的层文件解压缩至/next目录。 其中,层标识对应镜像层表示当前需要处理的镜像层,即目标镜像层,将基础镜像中层标识对应层的层文件解压缩至/next目录,以便于进行处理。 S206:判断/next目录中是否包括指示文件,若是,则执行步骤S207;若否,则执行步骤S210。 其中,/next目录中为目标镜像层的层文件,目标镜像层可能是对基础镜像内容更新的镜像层,所以其中可能会包括指示删除文件的文件,本发明实施例中设置删除标识为.wh.,并设置指示文件的文件名为删除标识+目标文件名,所以本步骤中可以判断/next目录中是否包括文件名称前缀为.wh.的文件,即指示文件。如果包括,则说明目标镜像层中包括指示文件,则执行步骤S207;若不包括,则说明目标镜像层中不包括指示文件,执行步骤S210。 S207:将指示文件的文件名除删除标识为的部分确定为目标文件名。 本发明实施例中设置.wh.+目标文件名为指示文件的文件名,所以对于指示文件的文件名,除前缀.wh.外的部分即为目标文件名,即为被标记删除的文件的名称。 S208:将/base目录中文件名称为目标文件名的文件删除。 在S207确定出目标文件名后,则可以根据目标文件名从/base目录中确定被标记删除的文件,进而将其删除,即删除中间文件。 需要说明的是,/base目录中存储的文件为目标镜像层以下所以镜像层的文件,而目标镜像层中指示文件为针对目标镜像层以下所以镜像层的文件的更新,所以本步骤中可以直接根据目标文件名从/base目录中确定出被标记删除的文件,并进行删除。 S209:将/next目录中除指示文件外的剩余文件移动到/base目录中,并清空/next目录。 /next目录中指示文件用于指示要删除的文件,即被标记删除的文件,而对于要增加的文件为直接存储,所以/next目录中除指示文件外的剩余文件为基础镜像中要增加的文件,因此可以直接将此文件移动到/base目录中。将除指示文件外的剩余文件移动到/base目录中,/next目录中剩余的指示文件则为无用的文件,可以直接清空。 需要说明的是,本步骤中,将/next目录中除指示文件外的剩余文件移动到/base目录中,从而使/base目录中的文件即为基础镜像中从第一层至目标镜像层对应层的层文件,并且其中不包括中间文件和指示文件。 本步骤执行完成后,执行步骤S204。 S210:将/next目录中文件移动到/base目录中。 /next目录中不包括指示文件,则说明其中文件均为基础镜像要增加的文件,所以/next目录中文件可以直接移动到/base目录中。在将/next目录中文件移动到/base目录中后,/next目录被清空。 需要说明的是,本步骤中,将/next目录中文件移动到/base目录中,从而使/base目录中的文件即为基础镜像中从第一层至目标镜像层的层文件,并且其中不包括中间文件和指示文件。 本步骤执行完成后,执行步骤S204。 S211:将/base目录中文件压缩打包并存储,以及存储基础镜像对应的sha256值。 在层标识大于N时,说明对基础镜像中各层文件已经处理完成,中间文件被删除,/base目录中文件为基础镜像的所有文件,所以可以将/base目录中文件压缩打包并存储。基础镜像的存储方式可以为k-v的格式,k为基础镜像的sha256值,v为基础镜像被压缩打包后的文件。 本发明实施例中,将基础镜像中需要删除的文件删除,得到不包括被标记删除的文件的目标基础镜像,从而实现直接根据获取的基础镜像进行构建,提高镜像构建的速度和效率。 对于图2所示实施例得出的删除中间文件的基础镜像,可以将其直接存储至缓存中,在需要构建镜像时,可以根据sha256值,从缓存中获取对应的目标基础镜像,如果缓存中没有存储,则再从镜像仓库中获取,因为从镜像仓库中获取的基础镜像可能会包括中间文件,此时可以对获取的基础镜像通过图2所示实施例的方式进行处理,并存储至缓存中,以便于后续构建镜像时直接使用,来提高镜像构建的效率。具体的过程可以如图3所示,包括以下步骤。 S301:建立构建镜像的容器。 S302:从镜像仓库中获取基础镜像的清单和基础镜像的sha256值。 S303:根据sha256值判断缓存中是否存储对应的目标基础镜像,若是,则执行步骤S306;若否,则执行步骤S304。 S304:从镜像仓库获取基础镜像。 S305:删除基础镜像中的中间文件并压缩存储到缓存中,根据删除中间文件的基础镜像构建镜像。 本步骤中删除基础镜像中的中间文件并压缩存储到缓存中的方式可以使用图1或图2所示实施例中所述的方法。执行步骤后执行步骤S307。 S306:将目标基础镜像解压缩后构建镜像。 S307:将构建的镜像压缩并上传到镜像仓库,删除容器。 本发明实施例中可以直接从缓存中获取目标基础镜像,相比较从镜像仓库中获取基础镜像的方式,可以进一步提高了构建镜像的速度和效率。 为了解决现有技术存在的问题,本发明实施例提供了一种镜像构建的装置400,如图4所示,该装置400包括: 获取单元401,用于根据基础镜像名称,从镜像仓库中获取与所述基础镜像名称对应的基础镜像的标识; 所述获取单元401,还用于从缓存中获取与所述基础镜像的标识对应的目标基础镜像,所述目标基础镜像为删除中间文件后的基础镜像,所述中间文件表示被标记删除的文件; 构建单元402,用于根据所述目标基础镜像,构建目标镜像。 应理解的是,实施本发明实施例的方式与实施图1所示实施例的方式相同,在此不再赘述。 本发明实施例的一种实现方式中,所述获取单元,还用于从所述镜像仓库中获取所述基础镜像的层文件和所述基础镜像的标识; 还包括: 确定单元,用于删除所述层文件中被标记删除的文件,将所述层文件中剩余的文件确定为目标基础镜像; 存储单元,用于将所述目标基础镜像与所述基础镜像的标识之间的对应关系存储至缓存。 本发明实施例的又一种实现方式中,所述确定单元,具体用于: 将所述基础镜像的镜像层按照由小到大的顺序,依次确定为当前镜像层,并对每个所述当前镜像层,确定所述当前镜像层中包括删除标识的文件,根据所述包括删除标识的文件确定被标记删除的文件,以及删除所述被标记删除的文件; 将所述基础镜像的层文件中剩余的文件确定为目标基础镜像。 本发明实施例的又一种实现方式中,所述确定单元,具体用于: 获取在所述当前镜像层以上的所有镜像层的层文件中的指示文件的文件名,所述指示文件的文件名包括删除标识和目标文件名; 在所述当前镜像层的层文件中,筛选出与所述目标文件名相同的文件作为被标记删除的文件,并删除所述被标记删除的文件。 本发明实施例的又一种实现方式中,所述确定单元,具体用于: 将所述基础镜像的镜像层按照由小到大的顺序,依次确定为目标镜像层,并对所述目标镜像层,获取目标镜像层的层文件中指示文件的文件名,所述指示文件的文件名包括删除标识和目标文件名,在所述目标镜像层之下的所有镜像层的层文件中,筛选出与所述目标文件名相同的文件作为被标记删除的文件,并删除所述被标记删除的文件; 将所述基础镜像的层文件中剩余的文件确定为目标基础镜像。 本发明实施例的又一种实现方式中,所述装置400还包括: 判断单元,用于判断缓存中是否存储与所述基础镜像的标识对应的目标基础镜像; 获取单元401,具体用于若是,则从缓存中获取所述目标基础镜像。 应理解的是,实施本发明实施例的方式与实施图1、图2或图3所示实施例的方式相同,在此不再赘述。 本发明实施例中,在获取到基础镜像的标识后,可以根据基础镜像的标识从缓存中获取与基础镜像的标识对应的目标基础镜像,进而根据目标基础镜像可以对镜像进行构建。本发明实施例中,由于目标基础镜像为删除被指示删除的中间文件后的基础镜像,所以可以直接用于镜像构建,从而可以提高镜像构建的速度和效率,同时本发明实施例中可以直接从缓存中获取目标基础镜像,相比较从镜像仓库中获取基础镜像的方式,可以进一步提高了构建镜像的速度和效率。另外,由于目标基础镜像为删除被指示删除的中间文件后的基础镜像,所以获取的目标基础镜像中内容数量较少,相对于获取包括中间文件的基础镜像方式,也可以提高构建镜像的速度和效率。 根据本发明的实施例,本发明还提供了一种电子设备和一种可读存储介质。 本发明的电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明实施例所提供的镜像构建的方法。 图5示出了可以应用本发明实施例的镜像构建的方法或镜像构建的装置的示例性系统架构500。 如图5所示,系统架构500可以包括至少一个终端设备(图5中示出终端设备501、终端设备502和终端设备503三个)。以终端设备501为例进行说明,终端设备501可以为具有镜像构建功能的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等,终端设备501中可以通过安装用于镜像构建的客户端或应用,来实现镜像构建功能。终端设备501运行时,可以根据用户需求从服务器505获取所需的信息,如基础镜像信息,并根据获取的信息构建新的镜像。 系统架构500还可以包括服务器505,服务器505可以是提供各种镜像信息的服务器,例如,服务器505中可以设置镜像仓库,镜像仓库中存储用于镜像构建的基础镜像信息,以便于用户通过终端设备501、终端设备502或终端设备503访问服务器505,从服务器505的镜像仓库中获取所需的基础镜像来构建新的镜像。 如图5所示,系统架构500还可以包括网络504。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。 需要说明的是,本发明实施例所提供的镜像构建的方法一般由终端设备501、502、503中的一个执行,相应地,镜像构建的装置一般设置于终端设备501、502、503中的一个中。 应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。 下面参考图6,其示出了适于用来实现本发明实施例的计算机系统600的结构示意图。图6示出的计算机系统仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。 如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。 以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。 特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本发明的系统中限定的上述功能。 需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。 附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个单元、程序段、或代码的一部分,上述单元、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。 描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元和构建单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取单元的功能的单元”。 作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备执行本发明所提供的镜像构建的方法。 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。