CN114398317A - 容器读写方法、装置及电子设备和存储介质 - Google Patents

容器读写方法、装置及电子设备和存储介质 Download PDF

Info

Publication number
CN114398317A
CN114398317A CN202210048715.9A CN202210048715A CN114398317A CN 114398317 A CN114398317 A CN 114398317A CN 202210048715 A CN202210048715 A CN 202210048715A CN 114398317 A CN114398317 A CN 114398317A
Authority
CN
China
Prior art keywords
target object
container
target
mirror image
mirror
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
Application number
CN202210048715.9A
Other languages
English (en)
Inventor
韩晓磊
张剑鸣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN202210048715.9A priority Critical patent/CN114398317A/zh
Publication of CN114398317A publication Critical patent/CN114398317A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种容器读写方法、装置及电子设备和存储介质,获取用于对目标对象进行读写的操作请求,目标对象设置于容器镜像中,操作请求中携带有目标对象的目标对象信息;根据目标对象信息和预先建立的索引信息确定目标对象在所述容器镜像中所处的目标镜像层级;在目标镜像层级中查找目标对象;将查找到的目标对象拷贝到容器层,对目标对象进行读写操作。提高了对容器进行读写的效率。

Description

容器读写方法、装置及电子设备和存储介质
技术领域
本申请涉及信息处理技术领域,更具体地说,涉及一种容器读写方法、装置及电子设备和存储介质。
背景技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
当需要在容器中读取某个文件或者修改已存在的某个文件时,Docker会从容器各镜像层中查找此文件,一旦找到,则将该文件拷贝到容器实例的容器层中,然后对拷贝到容器层中的文件进行读取与修改。容器镜像通常会包含多个镜像层,不同的镜像包括的镜像层的层级数相同或不同,理论上最多可达上百层,目前在镜像中进行文件查找时,均是按照从上往下的顺序依次查看各镜像层中是否存在要读取或者修改的文件,直至查找到文件,后续的镜像层不再查找。
目前的这种对容器进行读写的方式效率较低。
发明内容
本申请的目的是提供一种容器读写方法、装置及电子设备和存储介质,包括如下技术方案:
一种容器读写方法,所述方法包括:
获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
在所述目标镜像层级中查找所述目标对象;
将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
上述方法,优选的,所述目标对象为文件,所述索引信息中包括所述目标对象的文件名称与镜像层级的对应关系;所述根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级,包括:
根据所述目标对象的文件名称从所述索引信息中确定所述目标对象在所述容器镜像中所处的目标镜像层级;
或,
所述目标对象为目录,所述索引信息中包括所述目标对象的目录信息与镜像层级的对应关系;所述根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的镜像层级,包括:
根据所述目标对象的目录信息从所述索引信息中确定所述目标对象在所述容器镜像中所处的目标镜像层级。
上述方法,优选的,所述在所述目标镜像层级中查找所述目标对象,包括:
将当前目录跳转至所述目标镜像层级对应的目标文件目录;
在所述目标文件目录中查找所述目标对象。
上述方法,优选的,所述将查找到的所述目标对象拷贝到容器层,包括:
确定发出所述操作请求的应用所在的目标容器实例;
将所述目标对象拷贝到所述目标容器实例中。
上述方法,优选的,所述索引信息通过对所述容器镜像的元数据进行解析得到。
上述方法,优选的,所述元数据包括所述容器镜像中每个层级对应的校验标识。
上述方法,优选的,所述对所述容器镜像的元数据进行解析,包括:
根据所述校验标识计算所述容器镜像中每个镜像层级的链标识;
从与所述链标识对应的文件目录中获取每个镜像层级的目录标识;
根据所述目录标识确定每个镜像层级包含的对象;
根据所确定的对象构建所述索引信息。
一种容器读写装置,所述装置包括:
获取模块,用于获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
确定模块,用于根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
查找模块,用于在所述目标镜像层级中查找所述目标对象;
拷贝模块,用于将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
一种电子设备,包括:
存储器,用于存储程序;
处理器,用于调用并执行所述存储器中的所述程序,通过执行所述程序实现如上任一项所述的容器读写方法的各个步骤。
一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一项所述的容器读写方法的各个步骤。
通过以上方案可知,本申请提供的一种容器读写方法、装置及电子设备和存储介质,获取用于对目标对象进行读写的操作请求,目标对象设置于容器镜像中,操作请求中携带有目标对象的目标对象信息;根据目标对象信息和预先建立的索引信息确定目标对象在所述容器镜像中所处的目标镜像层级;在目标镜像层级中查找目标对象;将查找到的目标对象拷贝到容器层,对目标对象进行读写操作。基于本申请的方案,在需要对容器镜像中的目标对象进行读写时,无需在容器镜像中逐层进行查找,而只需要根据目标对象的目标对象信息和预先建立的索引信息确定目标对象在容器镜像中所处的目标镜像层级,直接在目标镜像层级中查找目标对象即可,从而提高目标对象的查找效率,也就提高了对容器进行读写的效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的容器读写方法的一种实现流程图;
图2为本申请实施例提供的在目标镜像层级中查找目标对象的一种实现流程图;
图3为本申请实施例提供的将查找到的目标对象拷贝到容器层的一种实现流程图;
图4为本申请实施例提供的对容器镜像的元数据进行解析的一种实现流程图;
图5为本申请实施例提供的容器读写装置的一种结构示意图;
图6为本申请实施例提供的电子设备的一种结构示意图。
说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,能够以除了在这里图示的以外的顺序实施。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1所示,为本申请实施例提供的容器读写方法的一种实现流程图,可以包括:
步骤S101:获取用于对目标对象进行读写的操作请求,目标对象设置于容器镜像中,操作请求中携带有目标对象的目标对象信息。
目标对象可以是文件,比如,文档,音频,视频,图片等;除了文件,目标对象也可以是其它对象,比如,目录等。
用于对目标对象进行读写的操作请求由应用程序发出,其中,应用程序可以响应于操作体(用户手指,触控笔等)的操作而生成用于对目标对象进行读写的操作请求,或者,应用程序可以是在运行过程中基于处理逻辑自动生成用于对目标对象进行读写的操作请求。
目标对象信息可以是用于标识目标对象的信息。
步骤S102:根据目标对象信息和预先建立的索引信息确定目标对象在容器镜像中所处的目标镜像层级。
本申请中,对应目标对象,预先建立了索引信息,基于该索引信息以及目标对象信息能够确定目标对象在容器镜像中所处的镜像层级(记为目标镜像层级)。
步骤S103:在目标镜像层级中查找目标对象。
在确定目标对象在容器镜像中所处的目标镜像层级后,直接在目标镜像层级中查找目标对象,其它镜像层级(即非目标镜像层级)无需进行查找。
比如,假设容器镜像一共有127层,目标镜像层是第126层,则本申请只在容器镜像的第126层查找目标对象即可,而无需在第1层至第125层这125层镜像层中进行查找了。
步骤S104:将查找到的目标对象拷贝到容器层,以对目标对象进行读写操作。
本申请实施例提供的容器读写方法,获取用于对目标对象进行读写的操作请求,目标对象设置于容器镜像中,操作请求中携带有目标对象的目标对象信息;根据目标对象信息和预先建立的索引信息确定目标对象在所述容器镜像中所处的目标镜像层级;在目标镜像层级中查找目标对象;将查找到的目标对象拷贝到容器层,对目标对象进行读写操作。基于本申请的方案,在需要对容器镜像中的目标对象进行读写时,无需在容器镜像中逐层进行查找,而只需要根据目标对象的目标对象信息和预先建立的索引信息确定目标对象在容器镜像中所处的目标镜像层级,直接在目标镜像层级中查找目标对象即可,从而提高目标对象的查找效率,也就提高了对容器进行读写的效率。
在一可选的实施例中,在目标对象为文件的情况下,索引信息中可以包括目标对象的文件名称与镜像层级的对应关系;基于此,上述根据目标对象信息和预先建立的索引信息确定目标对象在容器镜像中所处的目标镜像层级的一种实现方式可以为:
根据目标对象的文件名称从索引信息中确定目标对象在容器镜像中所处的目标镜像层级。
也就是说,在目标对象为文件的情况下,目标对象信息为目标对象的文件名称,其中,文件名称可以用户定义的,也可以是系统自定义的,具体实现方式不做具体限定。相应的,将索引信息中与目标对象的文件名称对应的镜像层级确定为目标对象在容器镜像中所处的镜像层级,即目标镜像层级。
在一可选的实施例中,在目标对象为目录的情况下,索引信息中可以包括目标对象的目录信息与镜像层级的对应关系;基于此,上述根据目标对象信息和预先建立的索引信息确定目标对象在容器镜像中所处的目标镜像层级的一种实现方式可以为:
根据目标对象的目录信息从索引信息中确定目标对象在容器镜像中所处的目标镜像层级。
也就是说,在目标对象为目录的情况下,目标对象信息为目录信息,作为示例,目录信息可以为目录的标识,其中,目录的标识可以用户定义的,也可以是系统自定义的,具体实现方式不做具体限定。相应的,将索引信息中与目标对象的目录信息对应的镜像层级确定为目标对象在容器镜像中所处的镜像层级,即目标镜像层级。
在一可选的实施例中,上述在目标镜像层级中查找目标对象的一种实现流程图如图2所示,可以包括:
步骤S201:将当前目录跳转至目标镜像层级对应的文件目录(记为目标文件目录)。
当前目录即是获取用于对目标对象进行读写的操作请求时所处的目录。
当前目录可能处于目标镜像层级,也可能未处于目标镜像层级。
在当前目录处于目标镜像层级的情况下,直接从当前目录跳转到目标镜像层级对应的其它目录即可。
在当前目录未处于目标镜像层级的情况下,可以从当前目录所处的镜像层级跳转到目标镜像层级,进而将当前目录跳转至目标镜像层级对应的目标文件目录。
步骤S202:在目标文件目录中查找目标对象。
目标镜像层级对应有至少一个目标文件目录,具体目标镜像层级对应几个目标文件目录由实际应用情况确定。
每一个目标文件目录中,可能仅包含文件,也可能仅包含目录(即目标文件目录的子目录),或者,既包含文件,又包含目录。
每一个目标文件目录中,如果包含文件,其可以包含至少一个文件;如果包含目录,其可以包含至少一个目录。
在一可选的实施例中,上述将查找到的目标对象拷贝到容器层的一种实现流程图如图3所示,可以包括:
步骤S301:确定发出操作请求的应用所在的目标容器实例。
作为示例,操作请求中可以携带应用所在目标容器实例的识别标识,从而根据目标容器实例的识别标识确定目标容器实例。
步骤S302:将目标对象拷贝到目标容器实例中。
具体拷贝过程可以参看已有方案,这里不再详述。
在一可选的实施例中,上述索引信息可以通过对容器镜像的元数据进行解析得到。
容器镜像的元数据包括容器镜像中每个层级对应的校验标识(记为diffID)。校验标识是通过对容器镜像的每个层级进行校验获得的,如对容器镜像中每个层级的全部文件进行摘要计算得到的摘要值即为该层级的校验标识。由于获取了包括上述校验标识的容器镜像元数据,利用校验标识进行进一步计算和文件查询,即可确定容器镜像的每个层级所包含的对象都有哪些,从而构建对象与容器镜像层级的对应关系。
可选的,本申请实施例提供的对容器镜像的元数据进行解析的一种实现流程图如图4所示例,可以包括:
步骤S401:根据校验标识计算容器镜像中每个镜像层级的链标识(记为chainID)。
作为示例,对应容器镜像中的每个镜像层级,根据该镜像层级的校验标识以及该镜像层级的父层的链标识,计算该镜像层级的链标识。其中,最底层的镜像层级的链标识为最底层的镜像层级的校验标识。
作为示例,对于第n个镜像层级,可以通过如下公式计算得到第n个镜像层级的chainID(记为chainID_n):
chainID_n=sha256(chainID_n-1diffID_n) (1)
其中,chainID_n-1表示第n个镜像层级的父层(即第n-1个镜像层级)的链标识,diffID_n表示第n个层级的校验标识。chainID_n-1和diffID_n通过空格连接。可以看出,该示例中,第n个镜像层级的链标识chainID_n是“chainID_n-1diffID_n”的SHA256哈希值。
步骤S402:从与链标识对应的文件目录中获取每个镜像层级的目录标识(记为cacheID)。需要说明的是,与链标识对应的文件目录指的是以链标识作为目录名称的文件目录,每个容器镜像层级的链标识都对应一个以其作为目录名称的文件目录,而每个容器镜像层级的链标识对应的文件目录中都存储有与该层级对应的目录标识。上述目录标识是为每个容器镜像层级生成的用于对容器镜像层级的文件进行索引的标识。根据目录标识可以确定每个镜像层级下具体包括哪些文件和/或目录。
作为示例,可以通过指定的操作命令(记为第一操作命令)从与链标识对应的文件目录中获取每个镜像层级的目录标识。
步骤S403:根据目录标识确定每个镜像层级包含的对象。
每个镜像层级包含的对象包括目录及文件中的至少一种。
作为示例,对应每个镜像层级,可以通过指定的操作命令(记为第二操作命令)查看该镜像层级包含的对象。
步骤S404:根据所确定的对象构建索引信息。
对应每个镜像层级,在确定该镜像层级包含的对象后,如果对象是文件,则针对该对象建立的索引信息为:该文件的文件名称和该镜像层级的对应关系;如果对象是目录,则针对该对象建立的索引信息为:该目录的目录信息和该镜像层级的对应关系。
在一可选的实施例中,可以仅针对部分对象建立索引信息,基于此,在确定该镜像层级包含的对象后,对于任意一个对象,如果该对象属于特定对象,可以针对该对象建立索引信息,如果该对象不属于特定对象,则不针对该对象建立索引信息。
作为示例,特定对象可以是指与应用程序相关的对象,比如,应用程序中的目录或文件等。而电子设备的系统的系统文件或目录则不属于特定对象。
在一可选的实施例中,在确定该镜像层级包含的对象后,对于任意一个对象,判断是否已经存在针对该对象建立的索引信息,如果已经存在(即已经建立了该对象的对象信息与其它镜像层级的对应关系),则不再针对该对象建立索引信息,如果不存在,则针对该对象建立索引信息。
作为示例,对于第i个镜像层级中的任意一个对象Ci和第j个镜像层级中的任意一个对象Cj,如果Ci和Cj的对象信息相同,且路径相同,认为对象Ci和Cj为镜像层中重复出现的对象,对于任意一个对象,如果之前已经针对该对象建立了索引信息,说明该对象之前已经出现过,此时不再针对该对象建立索引信息。
作为示例,下面举例说明对容器镜像的元数据进行解析的过程,该示例中,元数据为目录Layers和目录LowerDir中的数据:
"Layers":
[
"sha256:89169d87dbe2b72ba42bfbb3579c957322baca28e03a1e558076542a1c1b2b4a",
"sha256:dfdfadcfdf2f0c85d6f76181852095beea5f5753971efffc13ab5614f849e600",
"sha256:461c3cf87f5a35aa7434b558fc70ebcf4ff5797e346a77692a76e432552b80ee",
"sha256:3d84b9b57414889eb5072093b79eb41f87de69f69b63c4225556c4d8f325f81b",
"sha256:5b9dd696e0a4341e38b302629e71eb3434ef1eebe4effb49dc9653e09a7b75d4",
"sha256:9432d8db4603d0c759cddf55a15a55bae56046c5691abf1469d17ee8dca77ddf",
"sha256:ecee66d11b4c28e119f7c07942f78bc12082241eb6616f4dfa262280ce69d542",
"sha256:b334dbcadcb618cce1f9c08c70070bc624fa2c72933b6470763e37c716da25c2"
]
"LowerDir":
"/var/lib/docker/overlay2/9b70efb96eea9b03bdb5a5a3716a4734ac81be098d9288843d631e33c9c138ee/diff:/var/lib/docker/overlay2/a316fbb7d2df2d8df1a7b070a7d05bc9c7cd70869c4b5a0f83763cc10d68838b/diff:/var/lib/docker/overlay2/a06d5d268c094e758864bc1df0a4fc05458a63469b43f468e009a54bac7d4c62/diff:/var/lib/docker/overlay2/15c1e84470058d50bd1723936bb080c985eda3cac64633894b799f8518376ffb/diff:/var/lib/docker/overlay2/12e8c4379e5b9688cbb574c53d56a4895be6f5f6e250c69d23ec8a67bc5bec02/diff:/var/lib/docker/overlay2/89bf4b93b3255d8e642c1adeb15bd00df8cff0f70482b680578a83f2a406f842/diff:/var/lib/docker/overlay2/8475f1742d4d9e5c420747c0a5e7045689c04ce3fa01f04c234fc270931ae6fb/diff"
其中,基于Layers中的信息可知,底层(即第1个镜像层级)的校验标识diffID是:
89169d87dbe2b72ba42bfbb3579c957322baca28e03a1e558076542a1c1b2b4a
同时底层的校验标识diffID也是底层的链标识chainID。
通过如下cat cache-id命令:
cat../822ce669c04f160155fa1c2d40d96327a15f9f23ead54f16c55b63aef8bed3a4/cache-id
可以获得第1个镜像层级的目录标识cacheID为:
8475f1742d4d9e5c420747c0a5e7045689c04ce3fa01f04c234fc270931ae6fb
基于cacheID和LowerDir中记录的相应目录信息,通过如下ll命令:
ll
/var/lib/docker/overlay2/8475f1742d4d9e5c420747c0a5e7045689c04ce3fa01f04c234fc270931ae6fb/diff
可以确定第1个镜像层级包含的内容:
total 16
-rw-r--r--.1root root 12053Dec 4 2018anaconda-post.log
lrwxrwxrwx.1root root 7Dec 4 2018bin->usr/bin
drwxr-xr-x.2root root 6Dec 4 2018dev
drwxr-xr-x.47root root 4096Dec 4 2018etc
drwxr-xr-x.2root root 6Apr 11 2018home
其中,上述各行中,“2018”后边的内容即为镜像层级包含的对象的对象信息,可以建立上述各行中的对象信息与第1个镜像层级的对应关系。
对于第2个镜像层级,其校验标识diffID是:
dfdfadcfdf2f0c85d6f76181852095beea5f5753971efffc13ab5614f849e600
第2个镜像层级的父层(即第1个镜像层级)的chainID是:
89169d87dbe2b72ba42bfbb3579c957322baca28e03a1e558076542a1c1b2b4a则基于前述公式(1)可以得到第2个镜像层级的chainID:
822ce669c04f160155fa1c2d40d96327a15f9f23ead54f16c55b63aef8bed3a4
通过cat cache-id命令可以获得第2镜像层级的目录标识cacheID为:
89bf4b93b3255d8e642c1adeb15bd00df8cff0f70482b680578a83f2a406f842
通过ll命令,可以确定第2个镜像层级包含的内容:
total 0
drwxr-xr-x.2root root 42Apr 26 2021opt
该示例中,“2021”后边的内容opt即为镜像层级包含的对象的对象信息,可以建立该对象信息opt与第2个镜像层级的对应关系。
如表1所示,为本申请实施例提供的第1个镜像层级和第2个镜像层级对应的索引信息。
表1
镜像层级 文件和/或目录
2 opt
1 anaconda-post.log bin dev etc home
依此类推,直至建立各个镜像层级包含的对象的对象信息和镜像层级的对应关系。
与方法实施例相对应,本申请实施例还提供一种容器读写装置,如图5所示,为本申请实施例提供的容器读写装置的一种结构示意图,可以包括:
获取模块501,确定模块502,查找模块503和拷贝模块504;其中,
获取模块501用于获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
确定模块502用于根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
查找模块503用于在所述目标镜像层级中查找所述目标对象;
拷贝模块504用于将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
本申请实施例提供的容器读写装置,在需要对容器镜像中的目标对象进行读写时,无需在容器镜像中逐层进行查找,而只需要根据目标对象的目标对象信息和预先建立的索引信息确定目标对象在容器镜像中所处的目标镜像层级,直接在目标镜像层级中查找目标对象即可,从而提高目标对象的查找效率,也就提高了对容器进行读写的效率。
在一可选的实施例中,所述目标对象为文件,所述索引信息中包括所述目标对象的文件名称与镜像层级的对应关系;所述确定模块502用于:
根据所述目标对象的文件名称从所述索引信息中确定所述目标对象在所述容器镜像中所处的目标镜像层级;
或,
所述目标对象为目录,所述索引信息中包括所述目标对象的目录信息与镜像层级的对应关系;所述确定模块502用于:
根据所述目标对象的目录信息从所述索引信息中确定所述目标对象在所述容器镜像中所处的目标镜像层级。
在一可选的实施例中,所述查找模块503用于:
将当前目录跳转至所述目标镜像层级对应的目标文件目录;
在所述目标文件目录中查找所述目标对象。
在一可选的实施例中,所述拷贝模块504用于:
确定发出所述操作请求的应用所在的目标容器实例;
将所述目标对象拷贝到所述目标容器实例中。
在一可选的实施例中,所述装置还包括:
解析模块,用于对所述容器镜像的元数据进行解析得到所述索引信息。
在一可选的实施例中,所述元数据包括所述容器镜像中每个层级对应的校验标识。
在一可选的实施例中,所述解析模块用于:
根据所述校验标识计算所述容器镜像中每个镜像层级的链标识;
从与所述链标识对应的文件目录中获取每个镜像层级的目录标识;
根据所述目录标识确定每个镜像层级包含的对象;
根据所确定的对象构建所述索引信息。
与方法实施例相对应,本申请还提供一种电子设备,该电子设备的一种结构示意图如图6所示,可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4。
在本申请实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信。
处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路等。
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器。
其中,存储器3存储有程序,处理器1可调用存储器3存储的程序,所述程序用于:
获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
在所述目标镜像层级中查找所述目标对象;
将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:
获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
在所述目标镜像层级中查找所述目标对象;
将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
应当理解,本申请实施例中,从权、各个实施例、特征可以互相组合结合,都能实现解决前述技术问题。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种容器读写方法,所述方法包括:
获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
在所述目标镜像层级中查找所述目标对象;
将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
2.根据权利要求1所述的方法,所述目标对象为文件,所述索引信息中包括所述目标对象的文件名称与镜像层级的对应关系;所述根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级,包括:
根据所述目标对象的文件名称从所述索引信息中确定所述目标对象在所述容器镜像中所处的目标镜像层级;
或,
所述目标对象为目录,所述索引信息中包括所述目标对象的目录信息与镜像层级的对应关系;所述根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的镜像层级,包括:
根据所述目标对象的目录信息从所述索引信息中确定所述目标对象在所述容器镜像中所处的目标镜像层级。
3.根据权利要求1所述的方法,所述在所述目标镜像层级中查找所述目标对象,包括:
将当前目录跳转至所述目标镜像层级对应的目标文件目录;
在所述目标文件目录中查找所述目标对象。
4.根据权利要求1所述的方法,所述将查找到的所述目标对象拷贝到容器层,包括:
确定发出所述操作请求的应用所在的目标容器实例;
将所述目标对象拷贝到所述目标容器实例中。
5.根据权利要求1所述的方法,所述索引信息通过对所述容器镜像的元数据进行解析得到。
6.根据权利要求5所述的方法,所述元数据包括所述容器镜像中每个层级对应的校验标识。
7.根据权利要求6所述的方法,所述对所述容器镜像的元数据进行解析,包括:
根据所述校验标识计算所述容器镜像中每个镜像层级的链标识;
从与所述链标识对应的文件目录中获取每个镜像层级的目录标识;
根据所述目录标识确定每个镜像层级包含的对象;
根据所确定的对象构建所述索引信息。
8.一种容器读写装置,所述装置包括:
获取模块,用于获取用于对目标对象进行读写的操作请求,所述目标对象设置于容器镜像中,所述操作请求中携带有所述目标对象的目标对象信息;
确定模块,用于根据所述目标对象信息和预先建立的索引信息确定所述目标对象在所述容器镜像中所处的目标镜像层级;
查找模块,用于在所述目标镜像层级中查找所述目标对象;
拷贝模块,用于将查找到的所述目标对象拷贝到容器层,以对所述目标对象进行读写操作。
9.一种电子设备,包括:
存储器,用于存储程序;
处理器,用于调用并执行所述存储器中的所述程序,通过执行所述程序实现如权利要求1-7中任一项所述的容器读写方法的各个步骤。
10.一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-7中任一项所述的容器读写方法的各个步骤。
CN202210048715.9A 2022-01-17 2022-01-17 容器读写方法、装置及电子设备和存储介质 Pending CN114398317A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210048715.9A CN114398317A (zh) 2022-01-17 2022-01-17 容器读写方法、装置及电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210048715.9A CN114398317A (zh) 2022-01-17 2022-01-17 容器读写方法、装置及电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN114398317A true CN114398317A (zh) 2022-04-26

Family

ID=81231932

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210048715.9A Pending CN114398317A (zh) 2022-01-17 2022-01-17 容器读写方法、装置及电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114398317A (zh)

Similar Documents

Publication Publication Date Title
CN1760875B (zh) 基于文件存取特性在各种类型的存储卷之间透明迁移文件
CN103246595B (zh) 应用程序管理方法、装置、服务器及终端设备
US20060059171A1 (en) System and method for chunk-based indexing of file system content
JP2005267600A5 (zh)
US20080282355A1 (en) Document container data structure and methods thereof
CN103460197A (zh) 计算机系统、文件管理方法以及元数据服务器
CN104572920A (zh) 一种数据整理方法和装置
US20170124104A1 (en) Durable file system for sequentially written zoned storage
EP3485377A1 (en) Online repair of corrupted data blocks
CN110888837B (zh) 对象存储小文件归并方法及装置
CN110162429A (zh) 系统修复方法、服务器及存储介质
CN107832470A (zh) 一种基于存储系统的对象存储方法及装置
CN102902770B (zh) 一种镜像文件拼装方法及系统
CN114625696B (zh) 文件恢复方法、装置、电子设备及存储介质
CN110780814B (zh) 一种存储数据整理方法与装置
CN109597707A (zh) 克隆卷数据拷贝方法、装置及计算机可读存储介质
CN111831691A (zh) 一种数据读写方法及装置、电子设备、存储介质
CN111552438B (zh) 一种对象写入的方法、装置、服务器和存储介质
CN112433888A (zh) 数据处理方法及装置、存储介质和电子设备
CN114398317A (zh) 容器读写方法、装置及电子设备和存储介质
CN114595096B (zh) 数据库热备份的方法、装置、电子设备及存储介质
CN112380174B (zh) 含删除文件的xfs文件系统解析方法、终端设备及存储介质
CN109325005A (zh) 一种数据处理方法和电子设备
CN111737223B (zh) 一种文件拷贝方法、装置、设备及存储介质
CN114461762A (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