CN116150114A - 容器映像文件的去重复 - Google Patents

容器映像文件的去重复 Download PDF

Info

Publication number
CN116150114A
CN116150114A CN202210042040.7A CN202210042040A CN116150114A CN 116150114 A CN116150114 A CN 116150114A CN 202210042040 A CN202210042040 A CN 202210042040A CN 116150114 A CN116150114 A CN 116150114A
Authority
CN
China
Prior art keywords
container image
container
files
file
registry
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
CN202210042040.7A
Other languages
English (en)
Inventor
G.斯克里瓦诺
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.)
Red Hat
Original Assignee
Red Hat
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 Red Hat filed Critical Red Hat
Publication of CN116150114A publication Critical patent/CN116150114A/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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • 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/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • 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
    • 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
    • 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/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

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

Abstract

一种方法,包括在容器注册表处接收包括一组文件的容器映像,确定该组文件中的至少一个文件是容器注册表处先前存储的容器映像文件的重复。该方法还包括将容器映像存储在容器注册表处,其中是先前存储的容器映像文件的重复的、多个文件中的至少一个文件从容器映像中移除。

Description

容器映像文件的去重复
技术领域
本公开的方面涉及容器映像(container image)管理,并且更具体地,涉及在存储和检索容器映像时容器映像文件的去重复(deduplication)。
背景技术
容器可以是隔离的执行环境,其中可以执行一个或多个进程。容器可以包括隔离的计算资源,以充当沙箱计算环境。容器映像可以包括用于要实例化的容器实例的分配的资源和必要的文件系统。容器注册表可以存储可以在主机计算系统处检索和实例化的几个不同的容器映像。
发明内容
根据第一方面,本公开提供了一种方法,包括:在容器注册表处接收包括多个文件的容器映像;由处理设备确定多个文件中的至少一个文件是容器注册表处先前存储的容器映像文件的重复;以及由处理设备将容器映像存储在容器注册表处,其中是先前存储的容器映像文件的重复的、多个文件中的至少一个文件从容器映像中移除。
根据第二方面,本公开提供了一种系统,包括:存储器;以及可操作地耦合到存储器的处理设备,用于:在容器注册表处接收包括多个文件的容器映像;确定多个文件中的至少一个文件是容器注册表处先前存储的容器映像文件的重复;和将容器映像存储在容器注册表处,其中是先前存储的容器映像文件的重复的、多个文件中的至少一个文件从容器映像中移除。
根据第三方面,本公开提供了一种包括存储在其中的指令的非暂时性计算机可读存储介质,当由处理设备执行时,指令使得处理设备:在容器注册表处接收包括多个文件的容器映像;由处理设备确定多个文件中的至少一个文件是容器注册表处先前存储的容器映像文件的重复;和由处理设备将容器映像存储在容器注册表处,其中是先前存储的容器映像文件的重复的、多个文件中的至少一个文件从容器映像中移除。
所公开的方法、系统和非暂时性计算机可读存储介质的附加特征和优点在下面的详细描述和附图中描述,并且将从下面的详细描述和附图中变得明显。
附图说明
通过结合附图参考以下描述,可以最好地理解所描述的实施例及其优点。这些附图决不限制本领域技术人员在不脱离所描述的实施例的精神和范围的情况下可以对所描述的实施例进行的任何形式和细节上的改变。
图1是示出根据一些实施例的示例计算机架构的块图。
图2是根据本公开的实施例的用于容器映像文件去重复的计算机系统架构的示例的图示。
图3描绘了根据一些实施例的用于将容器映像优化推送到容器注册表的示例系统。
图4A描绘了根据一些实施例的要被推送到容器映像注册表的容器映像的示例。
图4B描绘了根据一些实施例的去重复的容器映像的示例。
图5描绘了根据一些实施例的用于检索容器映像的示例系统。
图6是根据一些实施例的对推送到容器注册表的容器映像进行去重复的方法的流程图。
图7是根据一些实施例的对要上传到容器注册表的容器映像的文件进行去重复的方法的流程图。
图8是根据一些实施例的对要上传到容器注册表的容器映像的文件进行去重复的另一种方法的流程图。
图9是根据一些实施例的对要从容器注册表拉取的容器映像的文件进行去重复的方法的流程图。
图10是根据一些实施例的对容器映像的文件进行去重复的方法的流程图。
图11是根据本公开的一些实施例的可以执行本文描述的一个或多个操作的示例装置的块图。
具体实施方式
容器映像可以是文件和文件系统的集合,用于分配计算资源并为一个或多个应用程序、函数、进程等提供隔离的执行环境。在一些情况下,容器映像可以以压缩格式存储,该压缩格式可以被检索和提取以构建容器实例。很多时候,多个容器映像包括几个相同的文件,每个文件都是为每个容器映像单独存储和检索的。例如,在其中可以存储容器映像以供以后检索的容器注册表(container registry)中,可以包括彼此仅略有不同的容器映像,然而每个容器映像的所有文件都存储到注册表处。类似地,当容器映像被推送到注册表时,相似容器映像的许多冗余或重复文件可能被传输到容器注册表,即使许多文件已经存在于来自先前推送的容器映像的容器注册表处。此外,在一些实例中,当主机从注册表请求容器映像时,主机可能已经在主机上存在所请求的容器的一些文件,但是可以从注册表拉取整个容器映像。传统系统的上述低效率导致容器映像向容器注册表的推送和从容器注册表的拉取时间长于必要的时间,并且由于在注册表存储的重复文件而导致巨大的存储成本。
本公开的各方面通过提供被推送到容器注册表和从容器注册表拉取的容器映像文件的去重复来解决上述和其他缺陷。在一些示例中,处理逻辑可以在容器注册表处对容器映像的存储进行去重复。在一些示例中,处理逻辑可以在将容器映像推送到容器注册表之前对容器映像文件进行去重复。在一些示例中,处理逻辑可以在从注册表拉取容器映像期间对容器映像文件进行去重复。为了对容器映像文件进行去重复,处理逻辑可以生成每个容器映像的压缩版本,该压缩版本在文件粒度级别上是可搜索的。例如,容器映像的每个文件可以单独地被压缩,然后压缩文件可以被一起附加到整个容器映像。处理逻辑可以为容器映像的每个压缩文件确定校验和或其他索引,以识别重复文件(例如,具有相同校验和或索引的文件)。
在一些示例中,容器注册表处的去重复组件可以接收容器映像,并确定容器映像的任何文件是否具有已经存储在容器注册表处的重复(duplicate)。例如,对于容器映像中的每个文件,去重复组件可以在注册表处搜索具有与容器映像的文件匹配的校验和或其他索引的文件。如果去重复组件识别出已经存储在注册表处的匹配文件,则去重复组件可以移除具有容器映像的重复的容器映像的文件,并且更新容器映像的元数据,以在移除的文件的偏移位置处引用先前存储的匹配文件。因此,容器映像可以在没有重复文件的情况下存储,但是可以使用具有对先前存储的文件的引用的元数据来完全重建。例如,在容器映像的拉取请求时,去重复组件可以检索先前存储的文件,并将其插入容器映像中移除的文件的识别的偏移处。
在一些示例中,客户端设备处的去重复组件可以在将容器映像推送到容器注册表之前对该映像进行去重复。例如,在确定容器映像要被推送到注册表时,去重复组件可以向注册表发送容器映像中的每个文件的校验和或其他索引的列表。注册表可以确定列表中的校验和或索引是否与已经存储在注册表处的任何文件匹配。然后,注册表可以返回第二个列表,指示哪些文件在注册表处匹配。然后,去重复组件可以从容器映像中移除这些文件,并更新这些文件的元数据,以在移除的文件的偏移处引用先前存储的文件。
在一些示例中,主机或注册表上的去重复组件可以在容器映像的拉取请求期间对容器映像进行去重复。例如,在容器映像的拉取期间,去重复组件可以确定请求的容器映像的任何文件是否已经存在于主机上。然后,去重复组件可以仅从注册表拉取主机上尚不存在的容器映像文件。
为推送和拉取请求提供容器映像的去重复减少了容器的推送和拉取所需的网络带宽和计算资源,并减少此类操作的延迟。附加地,对存储在容器注册表处的容器映像进行去重复可以显著降低注册表处的容器映像存储的存储开销。
图1描绘了根据本公开的一个或多个方面的计算机系统架构100的说明性示例的高级组件图。本领域的技术人员将理解,其他计算机系统架构也是可能的,并且利用本发明的示例的计算机系统的实现不必限于图1所示的特定架构。
如图1所示,计算机系统架构100包括主机系统110A-110B和容器注册表140。主机系统110A-110B和容器注册表140包括一个或多个处理设备160A-160B、存储器170,存储器170可以包括易失性存储器设备(例如,随机存取存储器(RAM))、非易失性存储器设备(例如,闪存)和/或其他类型的存储器设备、存储设备180(例如,一个或多个磁硬盘驱动器、外围组件互连(PCI)固态驱动器、独立磁盘冗余阵列(RAID)系统、网络连接存储(NAS)阵列等),和一个或多个设备190(例如,外围组件互连(PCI)设备、网络接口控制器(NIC)、视频卡、I/O设备等)。在某些实现中,存储器170可以是非均匀访问(NUMA),使得存储器访问时间取决于相对于处理设备160A-160B的存储器位置。应当注意,尽管为了简单起见,主机系统110A在图1中被描绘为包括单个处理设备160A、存储设备180和设备190,但是主机系统110A的其他实施例可以包括多个处理设备、存储设备和设备。类似地,容器注册表140和主机系统110B可以包括多个处理设备、存储设备和设备。主机系统110A-110B和容器注册表140可以各自是服务器、大型机、工作站、个人计算机(PC)、移动电话、手掌大小的计算设备等。在实施例中,主机系统110A-110B和容器注册表140可以是单独的计算设备。在一些实施例中,主机系统110A-110B和/或容器注册表140可以由单个计算设备实现。为了清楚起见,容器注册表140和主机系统110B的一些组件未示出。此外,尽管计算机系统架构100被示为具有两个主机系统,但是本公开的实施例可以利用任何数量的主机系统。
主机系统110A附加地可以包括一个或多个虚拟机(VM)130、容器136和主机操作系统(OS)120。VM 130是机器的软件实现,其执行程序就像它是实际的物理机器一样。容器136作为应用的不同功能的隔离执行环境。VM130和/或容器136可以是用于执行无服务器框架的一个或多个应用的无服务器应用或功能的实例。主机OS 120管理计算机系统的硬件资源,并提供诸如进程间通信、调度、存储器管理等功能。
主机OS 120可以包括管理程序(hypervisor)125(也可以称为虚拟机监视器(VMM)),其为VM 130提供虚拟操作平台并管理它们的执行。管理程序125可以管理系统资源,包括对物理处理设备(例如,处理器、CPU等)、物理存储器(例如,RAM)、存储设备(例如,HDD、SSD)和/或其他设备(例如,声卡、视频卡等)的访问。尽管管理程序125通常以软件实现,但它可以以虚拟处理器和客户存储器的形式模拟裸机接口并将其导出到更高级别的软件。更高级别的软件可以包括标准或实时OS,可以是具有有限操作系统功能的高度精简的操作环境,和/或可以不包括传统的OS设施,等等。管理程序125可以向其他软件(即,“客户”软件)呈现一个或多个VM的抽象,这些VM向各种客户软件(例如,客户操作系统、客户应用)提供相同或不同的抽象。应当注意,在一些替代实现中,管理程序125可以在主机OS 120外部,而不是嵌入在主机OS 120内,或者可以代替主机OS 120。
主机系统110A-110B和容器注册表140可以经由网络105耦合(例如,可以可操作地耦合、可通信地耦合、可以彼此传送数据/消息)。网络105可以是公共网络(例如,互联网)、专用网络(例如,局域网(LAN)或广域网(WAN))或其组合。在一个实施例中,网络105可以包括有线或无线基础设施,其可以由一个或多个无线通信系统提供,如与网络105连接的WiFiTM热点和/或可以使用各种数据处理装备、通信塔(例如,蜂窝塔)等实现的无线运营商系统。网络105可以在主机系统110A-110B和/或隐私保护平台140的各种组件之间承载通信(例如,数据、消息、分组、帧等)。在一些实施例中,主机系统110A和110B可以是隐私保护平台140的一部分。例如,主机系统110A和110B的虚拟机130和/或容器136可以是容器注册表140的虚拟网络的一部分。
在实施例中,容器注册表140的处理设备160B执行去重复组件115,用于对被推送到容器注册表140和从容器注册表140拉取的容器映像文件进行去重复。在一些示例中,去重复组件115的至少一部分也可以包括在主机系统110A中(例如,由主机OS120执行)。去重复组件115可以确定被推送到容器注册表140的容器映像的文件是否已经存储在容器注册表140中。例如,去重复组件115可以确定容器映像的每个文件的校验和是否匹配已经存储在容器注册表140中的任何文件。如果文件匹配,则从容器映像中删除该文件,并将对已存储文件的引用插入到容器映像的元数据中。在一些示例中,在推送容器之前执行去重复,因此减少了推送到容器注册表140的数据量。在一些示例中,当主机系统110A请求从容器注册表140拉取容器映像时,由去重复组件115执行类似的去重。例如,去重复组件115确定容器映像的任何文件是否已经存在于主机系统110A,并且仅拉取还没有存在于主机系统110A的容器映像的文件。关于去重复组件115的进一步细节将在下面的图2-图9中讨论。
图2描绘了用于被推送到容器注册表的容器映像文件的去重复的系统200的示例。系统200包括容器注册表210和客户端设备230。容器注册表210和客户端设备230可以各自是服务器、大型机、工作站、个人计算机(PC)、移动电话、手掌大小的计算设备或任何其他计算设备。在一些示例中,客户端设备230可以将包括容器映像文件222A和容器映像元数据224A的容器映像220A推送到容器注册表210以进行存储。客户端设备230可以经由容器注册表210的应用编程接口(API)或者由容器注册表210提供的用于上传容器映像的任何其他接口,将容器映像220A推送到容器注册表210。在一些示例中,去重复组件115可以接收容器映像220,并且在将容器映像220A存储到容器注册表210的持久存储之前对容器映像的文件进行去重复。去重复组件115可以将容器映像220A的容器映像文件222A与容器注册表210的先前存储的容器映像文件212进行比较。例如,去重复组件115可以确定容器映像文件222A中每个文件的校验和,并使用该校验和在先前存储的容器映像文件212中搜索具有匹配校验和的文件。如果找到匹配文件,则去重复组件115可以从容器映像文件220A中移除该文件,并且更新容器映像元数据224A,以包括对先前存储的容器映像文件212中的匹配文件的引用。例如,去重复组件115可以添加先前存储的容器映像文件的校验和或其他索引,作为对先前存储的文件的引用。去重复组件115然后可以存储去重复的容器映像220B,去重复的容器映像220B具有没有重复文件的去重复的容器映像文件222B,重复的容器映像220B具有去重复的容器映像元数据224B,该去重复的容器映像元数据224B具有对先前存储的容器映像文件212的匹配文件的引用。
在一些示例中,去重复组件115还可以在接收到对容器映像220A的拉取请求时重建原始容器映像220A。例如,去重复组件可以检索去重复的容器映像220B的去重复的容器映像文件222B和去重复的容器映像元数据224B。去重复组件115然后可以使用对去重复的容器映像元数据224B中的匹配文件的引用,从先前存储的容器映像文件212中检索匹配文件。去重复组件115然后可以将检索到的文件附加到由元数据224B指示的容器映像220B的偏移,以重建原始容器映像220A。容器注册表210然后可以根据拉取请求向客户端设备230提供容器映像220A。
图3是根据一些实施例的用于对容器映像的推送进行去重复的系统300的示例。系统300包括客户端设备330和容器注册表310。在一些示例中,客户端设备330可以包括去重复组件115,用于在将容器映像320A推送到容器注册表310之前对容器映像320A进行去重复。例如,去重复组件115可以确定容器映像320要被推送到容器注册表310。去重复组件115然后可以生成容器映像文件322A的文件的列表(例如,校验和或其他索引的列表),并将该列表发送到容器注册表310。容器注册表310可以将该列表与容器注册表310的先前存储的容器映像文件312进行比较,以确定是否有任何文件匹配列表中的任何文件。容器注册表310然后可以向去重复组件115返回第二列表,该第二列表指示容器映像文件322A的哪个文件包括在先前存储的容器映像文件312中。去重复组件115然后从容器映像文件322A中移除已经包括在先前存储的容器映像文件312中的文件。去重复组件115可以进一步更新容器映像元数据324A,以在容器映像320A中与移除的文件相对应的偏移处包括对先前存储的容器映像文件312的引用。去重复可以导致容器映像320B具有去重复的容器映像文件322B,其中容器映像文件322A的一个或多个文件被移除,去重复可以导致容器映像320B具有去重复的容器映像元数据324B,其中去重复的容器映像元数据324B具有对与移除的文件相对应的一个或多个先前存储的容器映像文件的引用。客户端设备330然后可以将去重复的容器映像320B推送到容器注册表310进行存储。因此,只有尚未存储在容器注册表310中的容器映像320A的文件(例如,新的或唯一的文件)被传输到容器注册表310以进行存储。类似于图2的描述,容器注册表310(例如,经由注册表处的去重复组件)可以在接收到对容器映像320A的拉取请求时,通过检索由去重复的容器映像元数据324B引用的先前存储的容器映像文件312中的文件来重建原始容器映像320A。
图4A描绘了根据一些实施例的示例容器映像400,该示例容器映像400将在被存储在容器注册表之前被去重复。容器映像400包括容器映像文件405和容器映像元数据410。在一些示例中,容器映像文件405可以是附加在一起的单独压缩的文件。容器映像文件405可以包括定义容器映像400的资源和文件系统的实际数据。容器映像元数据410可以包括关于每个容器映像文件405的信息,诸如每个文件的偏移、识别信息、校验和等。如图4A所示,容器映像文件405可以包括五个文件,并且容器映像元数据410可以包括容器映像文件405中五个文件中的每个文件的偏移位置。因此,每个文件单独地可搜索和可检索。
图4B描绘了根据一些实施例的容器映像400的去重复的容器映像450。类似于容器映像400,去重复的容器映像450包括容器映像文件(例如,去重复的容器映像文件455)和容器映像元数据(例如,去重复的映像元数据460)。然而,去重复的容器映像文件455可以仅包括容器映像400的原始文件的子集。在所描绘的示例中,文件2和文件4已经从去重复的容器映像文件455中移除。在一些示例中,去重复组件可能已经将文件2和文件4识别为已经存在于容器注册表处,并且从容器映像中移除了文件2和文件4。附加地,去重复的映像元数据460包括在文件2偏移处对文件A的引用和在文件4偏移处对文件B的引用。文件A可能是已经存储在容器注册表处的文件2的重复,文件B可能是已经存储在容器注册表处的文件4的重复。因此,去重复的容器映像450可以在容器注册表处存储新的文件(文件1、文件3和文件5)而没有已经存储的文件(文件2和文件4),并且更新去重复的映像元数据460以引用在容器注册表处已经存储的文件(文件A和文件B)。因此,重复的文件不被存储在容器注册表处,但是原始容器映像400可以通过检索由去重复的映像元数据460引用的先前存储的文件并在移除的文件的偏移处附加它们来重建。
图5是根据一些实施例的用于对容器映像的拉取进行去重复的系统500的示例。系统500包括主机设备530和容器注册表510。在一些示例中,容器注册表510可以包括去重复组件115,用于在响应于拉取请求而向主机设备530提供容器映像520A之前对容器映像520A进行去重复。去重复组件115然后可以生成容器映像文件422A的文件的列表(例如,校验和或其他索引的列表),并将该列表发送到主机设备530。主机设备530可以将该列表与主机设备530的本地存储的容器映像文件512进行比较,以确定是否有任何文件匹配列表中的任何文件。主机设备530然后可以向去重复组件115返回第二列表,该第二列表指示容器映像文件522A中的哪些文件包括在本地存储的容器映像文件512中。去重复组件115然后从容器映像文件522A中移除已经包括在先前存储的容器映像文件512中的文件。去重复组件115可以进一步更新容器映像元数据524A,以在容器映像520A中与移除的文件相对应的偏移处包括对先前存储的容器映像文件512的引用。去重复可以导致容器映像520B具有去重复的容器映像文件522B,其中容器映像文件522A的一个或多个文件被移除,去重复可以导致容器映像520B具有去重复的容器映像元数据524B,去重复的容器映像元数据524B具有对与移除的文件相对应的一个或多个先前存储的容器映像文件的引用。容器注册表510然后可以将去重复的容器映像520B提供给主机设备530以进行重建和实例化。因此,只有容器映像520A中尚未本地存储在主机设备530中的文件(例如,新的或唯一的文件)被传输到主机设备530。主机设备530(例如,经由主机设备处的去重复组件)可以通过检索由去重复的容器映像元数据524B引用的本地存储的容器映像文件512中的文件并将其插入到移除的文件的偏移处(例如,由去重复的元数据524B指示)来重建原始容器映像520A。
图6是根据一些实施例的对推送到容器注册表的容器映像进行去重复的方法600的流程图。方法600可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法600的至少一部分可以由图1的容器注册表140的去重复组件115来执行。
参考图6,方法600示出了各种实施例使用的示例功能。尽管在方法600中公开了特定的功能块(“块”),但是这些块是示例。也就是说,实施例非常适合于执行方法600中列举的各种其他块或块的变化。应当理解,方法600中的块可以以不同于所呈现的顺序来执行,并且不是方法600中的所有块都可以被执行。
方法600开始于块610,其中处理逻辑在容器注册表处接收包括一组文件的容器映像。容器映像可以包括一个或多个压缩文件的包(例如,tarball)。每个文件的包可以描述容器映像的层。在一些示例中,文件可以以允许搜索和检索包中的单独文件的格式被单独压缩。容器映像,以及在一些示例中容器映像的每个包,可以包括描述容器映像或包中包括哪些文件的元数据。元数据可以包括关于每个文件的识别信息和文件的位置(例如,偏移量和大小)。
在块620,处理逻辑确定该组文件中的至少一个文件是容器注册表处先前存储的容器映像文件的重复。例如,处理逻辑可以在容器注册表处搜索与包括在容器映像中的文件相匹配的文件。在一个示例中,处理逻辑确定容器映像中的每个文件的校验和,并且比较校验和,并且确定容器注册表处存在的任何文件是否具有相同的校验和。在一些示例中,容器注册表可以使用文件的校验和来索引文件。因此,处理逻辑可以将容器映像文件的校验和与用于索引存储在容器注册表处的文件的校验和进行比较,以确定是否存在匹配。
在块630,处理逻辑将容器映像存储在容器注册表处,其中是先前存储的容器映像文件的重复的该组文件中的至少一个文件从容器映像中移除。例如,处理逻辑可以移除已经存在于容器注册表处的容器映像的文件,并且更新容器映像的元数据,以在与移除的文件相对应的容器映像或容器映像的包的偏移处引用先前存储的文件(例如,使用文件的校验和)。在一些示例中,处理逻辑可以生成新的容器映像而没有注册表处已经存在的文件并且元数据引用已经存在的文件。因此,重复文件不会被存储在容器注册表处。相反,已经存储在注册表处的文件可用于使用元数据中包括的引用来重建容器映像。
图7是根据一些实施例的将要上传到容器注册表的容器映像的文件去重复的方法700的流程图。方法700可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法700的至少一部分可以由图1的容器注册表140的去重复组件115或图3的客户端设备330的去重复组件115来执行。
参考图7,方法700示出了各种实施例使用的示例功能。尽管在方法700中公开了特定的功能块(“块”),但是这些块是示例。也就是说,实施例非常适合于执行方法700中列举的各种其他块或块的变化。应当理解,方法700中的块可以以不同于所呈现的顺序来执行,并且不是方法700中的所有块都可以被执行。
方法700开始于块710,其中处理逻辑识别要上传到容器注册表的容器映像,其中容器映像包括一组文件。在一些示例中,该组文件可以被压缩(例如,作为一个或多个tarball)。使用文件的偏移量和大小,从容器映像中单独地可搜索和可检索每个文件。容器注册表可以存储可以由客户端设备检索和实例化的一个或多个容器映像。
在块720,处理逻辑确定容器映像的一个或多个文件存储在容器注册表处。在一些示例中,处理逻辑(例如,客户端设备)可以向容器映像发送具有包括在容器映像中的文件的列表的请求,以确定哪些文件当前已经存储在容器注册表处。文件的列表可以包括容器映像中每个文件的校验和或其他索引或标识符。容器注册表可以将校验和或索引与容器注册表处已经存在的文件进行比较,以确定列表中的任何文件是否存储在那里。容器注册表然后可以向客户端设备返回第二列表,第二列表标识第一列表中存在于容器注册表处的每个文件。例如,第二列表可以是具有布尔指示符的第一列表,该布尔指示符指示列表中的每个文件是否存在于注册表处。
在块730,处理逻辑向容器注册表提供除了已经存储在容器注册表处的容器映像的一个或多个文件之外的容器映像的每一个文件。处理逻辑可以使用从容器注册表处接收的第二列表来从容器映像中识别和移除存在于容器注册表处的一个或多个文件。在一些示例中,处理逻辑可以更新容器映像和元数据。在一些示例中,处理逻辑可以生成没有一个或多个文件的新的容器映像。处理逻辑还可以更新或生成容器映像的元数据,以引用容器注册表处存在的一个或多个文件(例如,使用文件的校验和)。例如,存储在容器映像中的文件可以通过校验和来索引,因此元数据可以使用校验和作为引用来识别和检索一个或多个文件。附加地,元数据可以指示容器映像内的一个或多个文件中的每一个文件的偏移和大小(例如,文件的开始和文件的结束),使得可以检索文件并且可以重建原始容器映像。然后,处理逻辑可以提供新的容器,而不将一个或多个文件存储在容器注册表处。
图8是根据一些实施例的对要上传到容器注册表的容器映像的文件进行去重复的方法800的流程图。方法800可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法800的至少一部分可以由图1的容器注册表140的去重复组件115或图3的客户端设备330的去重复组件115来执行。
参考图8,方法800示出了各种实施例使用的示例功能。尽管在方法800中公开了特定的功能块(“块”),但是这些块是示例。也就是说,实施例非常适合于执行方法800中列举的各种其他块或块的变化。应当理解,方法800中的块可以以不同于所呈现的顺序来执行,并且不是方法800中的所有块都可以被执行。
方法800开始于块810,其中处理逻辑确定要上传到容器注册表的第一容器映像,其中第一容器包括一组压缩文件。例如,处理逻辑可以单独压缩每个文件,并将它们一起附加到允许搜索和检索每个文件的格式中。在一些示例中,客户端设备可以发起第一容器映像到容器注册表的推送。
在块820,处理逻辑识别已经存储在容器注册表处的容器映像的一个或多个压缩文件。例如,在将第一容器映像推送到容器注册表之前,客户端设备的去重复组件可以确定容器映像的任何文件是否已经存在于容器注册表处。如本文所述,去重复组件可以向容器注册表发送文件的列表,并且容器注册表可以确定文件是否存在于注册表处。然后,去重复组件可以从注册表接收指示发现哪些文件存在于注册表处的新的列表或任何其他数据结构。
在块830,处理逻辑通过从第一容器映像中移除已经存储在容器注册表处的一个或多个压缩文件中的每一个压缩文件来生成第二容器映像。例如,处理逻辑可以将剩余文件附加在一起,而没有移除的文件。处理逻辑可以进一步生成或更新容器映像的元数据,以在与移除的文件相对应的容器映像的偏移处指向已经存在于注册表上的文件。因此,元数据可以用于检索已经存储在注册表处的文件,以插入移除的文件的偏移中。
在块840,处理逻辑提供要存储在容器注册表处的第二容器映像。在处理逻辑已经对容器映像的文件进行了去重复时,客户端设备就可以将第二容器映像推送到容器注册表。因此,只推送注册表处不存在的文件,从而减少推送的数据的量、执行推送所需的时间以及执行推送所需的计算资源。
图9是根据一些实施例的对要从容器注册表拉取的容器映像的文件进行去重复的方法900的流程图。方法900可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法900的至少一部分可以由图1的容器注册表140的去重复组件115或图5的客户端设备530的去重复组件115来执行。
参考图9,方法900示出了各种实施例使用的示例功能。尽管在方法900中公开了特定的功能块(“块”),但是这些块是示例。也就是说,实施例非常适合于执行方法900中列举的各种其他块或块的变化。应当理解,方法900中的块可以以不同于所呈现的顺序来执行,并且不是方法900中的所有块都可以被执行。
方法900开始于块910,其中处理逻辑从主机设备接收对存储在容器注册表处的容器映像的拉取请求。主机设备可以是物理设备、虚拟机或其他处理设备。容器映像可以包括附加在一起的一组压缩文件。每个文件都可以单独地可检索。
在块920,处理逻辑确定容器映像的一个或多个文件在主机设备本地地存在。例如,处理逻辑(例如,容器注册表)可以向主机设备提供容器映像中的文件的列表。主机设备可以将文件的列表与本地存储在主机设备上的文件进行比较。例如,主机设备可以将容器映像的文件的校验和或其他索引与主机设备的本地文件进行比较。主机设备然后可以提供主机设备上存在的容器映像的每个文件的指示(例如,列表或其他数据结构)。
在块930,处理逻辑将容器映像传输到主机设备而没有在主机设备本地地存在的容器映像的一个或多个文件。处理逻辑(例如,容器注册表)可以在将容器映像提供给主机设备之前,使用主机设备处存在的文件的指示来从容器映像中移除文件。在一些示例中,如本文所述,主机设备然后可以使用来自注册表的容器映像文件和本地存储在主机设备上的文件来重建容器映像。
图10是根据一些实施例的对容器映像的文件进行去重复的方法1000的流程图。方法1000可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法1000的至少一部分可以由图1的去重复组件115来执行。
参考图10,方法1000示出了各种实施例使用的示例功能。尽管在方法1000中公开了特定的功能块(“块”),但是这些块是示例。也就是说,实施例非常适合于执行方法1000中列举的各种其他块或块的变化。应当理解,方法1000中的块可以以不同于所呈现的顺序来执行,并且不是方法1000中的所有块都可以被执行。
方法1000开始于块1010,其中处理逻辑在客户端设备生成容器映像。例如,用户可以在客户端设备的工作空间中生成容器映像。容器映像可以被设计用于由用户确定的特定用途。容器映像可以从模板或标准文件集生成,然后用户可以针对特定用途对其进行定制。因此,用户生成的容器映像的许多文件可能是重复的(例如,文件中的相同数据)。在块1020,处理逻辑(例如,客户端设备)发起容器映像到容器注册表的推送。当容器映像被生成时,用户可以将容器映像推送到容器注册表,用户随后可以从该注册表拉取映像以使用容器映像实例化容器。在块1030,处理逻辑对容器注册表处存在的容器映像的文件进行去重复。如上所述,因为容器映像的几个文件可能是重复的,所以处理逻辑可以识别容器映像的哪些文件已经存储在注册表处(例如,已经存储在注册表处的先前推送的容器映像的文件)。然后,处理逻辑可以从要推送的容器映像中移除重复的文件,使得这些文件不会在注册表处重复。处理逻辑可以更新或生成容器映像的元数据,以引用已经存在于注册表处的与移除的文件相对应的文件。例如,可以使用校验和来引用注册表处的文件,该校验和可能与从容器映像中移除的文件相同。在块1040,处理逻辑将去重复的容器映像复制到容器注册表。在一些示例中,处理逻辑在对容器映像进行去重复之前,将容器映像复制到注册表。在一些示例中,处理逻辑在对映像进行去重复后复制映像。
在块1050,处理逻辑(例如,容器注册表)接收对容器映像的拉取请求。例如,用户可以选择要在主机设备本地地实例化的容器映像。处理逻辑然后可以在注册表处识别已经被请求的容器映像,并检索存储的容器映像(例如,作为去重复的)。
在块1060,处理逻辑使用去重复的容器映像和先前存储的容器映像文件重建容器映像。处理逻辑可以识别与容器映像相关联的元数据。处理逻辑然后可以检索由元数据引用的先前存储的文件,并将该文件在由元数据指示的偏移(例如,特定tarball包的偏移)处插入容器映像。因此,处理逻辑可以重建原始容器映像。处理逻辑可以在注册表或请求主机设备处重建容器映像。在块1070,处理逻辑将容器映像提供给请求设备。在一些示例中,处理逻辑可以基于已经本地存储在主机设备上的文件来对拉取的容器映像执行附加的去重复。例如,处理逻辑可以仅从注册表拉取尚未本地存储在主机设备上的容器映像文件。
图11是根据一些实施例的可以执行本文描述的一个或多个操作的示例计算设备1100的块图。计算设备1100可以连接到LAN、内联网、外联网和/或互联网中的其他计算设备。计算设备可以以客户端-服务器网络环境中的服务器机器的能力或者以对等网络环境中的客户端的能力来操作。计算设备可以由个人计算机(PC)、机顶盒(STB)、服务器、网络路由器、交换机或网桥或能够执行一组指令(顺序的或其他的)的任何机器来提供,这些指令指定了该机器要采取的动作。此外,虽然仅示出了单个计算设备,但是术语“计算设备”也应当被理解为包括单独或共同执行一组(或多组)指令以执行本文讨论的方法的计算设备的任何集合。
示例计算设备1100可以包括处理设备(例如,通用处理器、PLD等)1102、主存储器1104(例如,同步动态随机存取存储器(DRAM)、只读存储器(ROM))、静态存储器1106(例如,闪存和数据存储设备1118),它们可以经由总线1130彼此通信。
处理设备1102可以由一个或多个通用处理设备提供,诸如微处理器、中央处理单元等。在说明性示例中,处理设备1102可以包括复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或者实现其他指令集的处理器或者实现指令集组合的处理器。处理设备1102还可以包括一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。根据本公开的一个或多个方面,处理设备1102可以被配置为执行本文描述的操作,用于执行本文讨论的操作和步骤。
计算设备1100还可以包括可以与网络1120通信的网络接口设备1108。计算设备1100还可以包括视频显示单元1110(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1112(例如,键盘)、光标控制设备1114(例如,鼠标)和声音信号生成设备1116(例如,扬声器)。在一个实施例中,视频显示单元1110、字母数字输入设备1112和光标控制设备1114可以组合成单个组件或设备(例如,LCD触摸屏)。
根据本公开的一个或多个方面,数据存储设备1118可以包括计算机可读存储介质1128,其上可以存储一组或多组指令1125,这些指令可以包括用于去重复组件(例如用于执行本文描述的操作的去重复组件115)的指令。指令1125也可以在由计算设备1100执行期间完全或至少部分地驻留在主存储器1104和/或处理设备1102中,主存储器1104和处理设备1102也构成计算机可读介质。指令1125还可以经由网络接口设备1108在网络1120上发送或接收。
虽然计算机可读存储介质1128在说明性示例中被示为单个介质,但是术语“计算机可读存储介质”应当被理解为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应被理解为包括能够存储、编码或携带一组由机器执行的指令并使机器执行本文描述的方法的任何介质。因此,术语“计算机可读存储介质”应被理解为包括但不限于固态存储器、光学介质和磁介质。
示例1是一种方法,包括在容器注册表处接收包括多个文件的容器映像;由处理设备确定多个文件中的至少一个文件是容器注册表处先前存储的容器映像文件的重复;以及由处理设备将容器映像存储在容器注册表处,其中是所述先前存储的容器映像文件的重复的、所述多个文件中的至少一个文件从所述容器映像中移除。
示例2是示例1的方法,还包括在容器映像的元数据中添加对先前存储的容器映像文件的引用,以代替多个文件中没有与容器映像一起存储在容器注册表处的至少一个文件。
示例3是示例1或示例2的方法,其中对先前存储的容器映像文件的引用包括先前存储的容器映像文件的校验和。
示例4是示例1、示例2或示例3的方法,其中确定多个文件中的至少一个文件是先前存储的容器映像文件的重复包括确定容器注册表处的一个或多个先前存储的容器映像文件的校验和是否匹配容器映像的多个文件之一的校验和。
示例5是示例1、示例2、示例3或示例4的方法,还包括从客户端设备接收对容器映像的拉取请求;以及检索先前存储的容器映像文件来重建容器映像,以包括容器映像的多个文件中的每一个。
示例6是示例1、示例2、示例3、示例4或示例5的方法,其中多个文件中的每个文件都是可搜索的压缩格式。
示例7是示例1、示例2、示例3、示例4、示例5或示例6的方法,其中将容器映像存储在容器注册表处,其中该至少一个文件从容器映像中移除,包括从容器映像中移除多个文件中的至少一个文件;以及更新容器映像的元数据,该元数据指示移除的文件的偏移和对先前存储的容器映像文件的引用。
示例8是一种系统,包括存储器和可操作地耦合到存储器的处理设备,用于接收要存储在容器注册表处的压缩容器映像;识别具有已经存储在容器注册表处的匹配文件的、容器映像的一个或多个文件;从压缩容器映像中删除该一个或多个文件,并将容器映像存储在容器注册表处。
示例9是示例8的系统,其中压缩容器映像包括多个压缩文件。
示例10是示例8或示例9的系统,其中多个压缩文件中的每一个压缩文件都是可搜索的。
示例11是示例8、示例9或示例10的系统,其中为了识别具有已经存储在容器注册表处的匹配文件的、容器映像的一个或多个文件,处理设备将容器映像的多个压缩文件中的每一个压缩文件的校验和与容器注册表处的多个先前存储的容器映像文件中的每一个先前存储的容器映像文件的校验和进行比较。
示例12是示例8、示例9、示例10或示例11的系统,其中处理设备还生成元数据文件,该元数据文件包括对已经存储在容器注册表处的每个匹配文件的引用。
示例13是示例8、示例9、示例10、示例11或示例12的系统,其中处理设备还响应于接收到对压缩容器映像的拉取请求,检索第二容器映像和已经存储在容器注册表处的匹配文件。
示例14是示例8、示例9、示例10、示例11、示例12或示例13的系统,其中处理设备还根据第二容器映像和已经存储在容器注册表处的匹配文件重建第一容器映像。
示例15是一种包括指令的非暂时性计算机可读存储介质,当由处理设备执行时,指令使得处理设备识别要上传到容器注册表的容器映像,其中容器映像包括多个文件,由处理设备确定容器映像的一个或多个文件存储在容器注册表处,并且由处理设备向容器注册表提供除了已经存储在容器注册表处的容器映像的一个或多个文件之外的、容器映像的多个文件中的每个文件。
示例16是示例15的非暂时性计算机可读存储介质,其中容器映像的多个文件是单独压缩的可搜索文件。
示例17是示例15或示例16的非暂时性计算机可读存储介质,其中处理设备还更新容器映像的元数据,以包括对已经存储在容器注册表处的一个或多个容器映像的引用。
示例18是示例15、示例16或示例17的非暂时性计算机可读存储介质,其中处理设备还将容器映像的元数据与除了已经存储在容器注册表处的容器映像的一个或多个文件之外的、容器映像的多个文件中的每个文件一起提供给容器注册表。
示例19是示例15、示例16、示例17或示例18的非暂时性计算机可读存储介质,其中为了确定容器映像的一个或多个文件存储在容器注册表处,处理设备将向容器注册表发送容器映像的多个文件中的每个文件的校验和的列表;以及从容器注册表接收已经存储在容器注册表处的容器映像的多个文件中的一个或多个文件的文件和校验和的第二列表。
示例20是示例15、示例16、示例17、示例18或示例19的非暂时性计算机可读存储介质,其中处理设备还用于在将容器映像提供给容器注册表之前,从容器映像中擦除已经存储在容器注册表处的容器映像的一个或多个文件中的每一个文件。
示例21是示例15、示例16、示例17、示例18、示例19或示例20的非暂时性计算机可读存储介质,其中为了更新元数据,处理设备还将对已经存储在容器注册表处的一个或多个容器映像的引用与容器映像内的一个或多个文件的偏移相关联。
示例22是一种方法,包括确定第一容器映像要被上传到容器注册表,其中第一容器映像包括多个压缩文件;识别容器映像的一个或多个压缩文件已经存储在容器注册表处;通过从第一容器映像中移除已经存储在容器注册表处的一个或多个压缩文件中的每一个压缩文件来生成第二容器映像;以及提供要存储在容器注册表处的第二容器映像。
示例23是示例22的方法,还包括更新第一容器映像的元数据,以包括对已经存储在容器注册表处的第一容器映像的一个或多个压缩文件的引用。
示例24是示例22或示例23的方法,其中对先前存储的容器映像文件的引用包括先前存储的容器映像文件的校验和。
示例25是示例22、示例23或示例24的方法,其中识别已经存储在容器注册表处的、第一容器映像的一个或多个压缩文件包括向容器注册表发送第一容器映像的多个压缩文件中的每一个压缩文件的校验和的列表;以及从容器注册表接收已经存储在容器注册表处的、容器映像的多个压缩文件的一个或多个文件的校验和的第二列表。
示例26是示例22、示例23、示例24或示例25的方法,其中第一容器映像的多个压缩文件中的每一个压缩文件都是可搜索的。
示例27是示例22、示例23、示例24、示例25或示例26的方法,其中第一容器的元数据被更新以包括对已经存储在容器注册表处的一个或多个压缩文件的引用,该元数据与第二容器映像一起被提供给容器注册表。
示例28是一种方法,包括从主机设备接收对存储在容器注册表处的容器映像的拉取请求;由处理设备确定容器映像的一个或多个文件是否在主机设备本地地存在;以及由处理设备将容器映像传输到主机设备,而没有在主机设备本地地存在的容器映像的一个或多个文件。
示例29是示例28的方法,还包括从容器映像中移除在主机设备本地地存在的容器映像的一个或多个文件。
示例30是示例28或示例29的方法,还包括更新容器映像的元数据,以在与从容器映像移除的一个或多个文件相对应的偏移处引用在主机设备本地地存在的一个或多个文件。
示例31是一种装置,包括用于在容器注册表处接收包括多个文件的容器映像的部件(means);用于确定多个文件中的至少一个文件是容器注册表处的先前存储的容器映像文件的重复的部件;以及用于将容器映像存储在容器注册表处而没有是先前存储的容器映像文件的重复的、多个文件中的至少一个文件的部件。
示例32是示例31的装置,还包括用于在容器映像的元数据中添加对先前存储的容器映像文件的引用以代替没有与容器映像一起存储在容器注册表处的多个文件中的至少一个文件的部件。
示例33是示例31或示例32的装置,其中对先前存储的容器映像文件的引用包括先前存储的容器映像文件的校验和。
示例34是示例31、示例32或示例33的装置,其中确定多个文件中的至少一个文件是先前存储的容器映像文件的重复包括用于确定容器注册表处的一个或多个先前存储的容器映像文件的校验和是否匹配容器映像的多个文件中的任何文件的校验和的部件。
示例35是示例31、示例32、示例33或示例34的装置,还包括用于从客户端设备接收对容器映像的拉取请求的部件;以及用于检索先前存储的容器映像文件来重建容器映像以包括容器映像的多个文件中的每一个文件的部件。
示例36是示例31、示例32、示例33、示例34或示例35的装置,其中多个文件中的每一个文件都是可搜索的压缩格式。
示例37是示例28、示例29、示例30、示例31、示例32或示例33的装置,其中在容器注册表处存储容器映像而没有该至少一个文件包括用于从容器映像中移除多个文件中的至少一个文件的部件;以及用于更新容器映像的元数据的部件,该元数据指示移除的文件的偏移和对先前存储的容器映像文件的引用。
除非特别声明,否则诸如“接收”、“路由”、“更新”、“提供”等术语指的是由计算设备执行或实现的动作和过程,该动作和过程将计算设备的寄存器和存储器内表示为物理(电子)量的数据操纵和转换成类似地表示为计算设备的存储器或寄存器或其他这种信息存储、传输或显示设备内的物理量的其他数据。此外,本文使用的术语“第一”、“第二”、“第三”、“第四”等是指用于区分不同元素的标签,并且根据它们的数字名称,不一定具有序数含义。
本文描述的示例还涉及用于执行本文描述的操作的装置。该装置可以为所需目的而专门构造,或者它可以包括由存储在计算设备中的计算机程序选择性编程的通用计算设备。这种计算机程序可以存储在计算机可读的非暂时性存储介质中。
本文描述的方法和说明性示例并不固有地与任何特定的计算机或其他装置相关。根据本文描述的教导,可以使用各种通用系统,或者可以证明构建更专用的装置来执行所需的方法步骤是方便的。各种这些系统所需的结构将如上面的描述所示。
上面的描述是说明性的,而不是限制性的。尽管已经参考具体的说明性示例描述了本公开,但是应当认识到,本公开不限于所描述的示例。本公开的范围应当参考以下权利要求以及权利要求所赋予的等同物的全部范围来确定。
如本文所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文清楚地另外指出。将进一步理解,当在此使用时,术语“包括”、“包含”、“含有”和/或“具有”指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或其组合的存在或添加。因此,本文使用的术语仅用于描述特定实施例的目的,并不旨在进行限制。
还应当注意,在一些替代实现中,所述功能/动作可以不按图中所示的顺序发生。例如,根据所涉及的功能/动作,连续示出的两个图形实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
尽管以特定顺序描述了方法操作,但是应当理解,在所描述的操作之间可以执行其他操作,可以调整所描述的操作,使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许在与处理相关联的各种间隔发生处理操作的系统中。
各种单元、电路或其他组件可以被描述或声明为“被配置为”或“可配置为”执行一项或多项任务。在这样的上下文中,短语“配置为”或“可配置为”用于通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来暗示结构。因此,单元/电路/组件可以说被配置为执行任务,或者可配置为执行任务,即使当指定的单元/电路/组件当前不工作(例如,不开启)时。与“被配置为”或“可配置为”语言一起使用的单元/电路/组件包括硬件-例如,电路、存储可执行以实现操作的程序指令的存储器等。陈述单元/电路/组件被“配置为”执行一个或多个任务,或者被“可配置为”执行一个或多个任务,明确地不旨在为该单元/电路/组件调用《美国法典》第35篇第112节第6段(35U.S.C.112,sixthparagraph)。另外,“配置为”或“可配置为”可以包括通用结构(例如,通用电路),其由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵,以能够执行所讨论的任务的方式操作。“被配置为”还可以包括调整制造工艺(例如,半导体制造设施)以制造适于实现或执行一个或多个任务的器件(例如,集成电路)。“可配置为”明确地不旨在适用于空白介质、未编程的处理器或未编程的通用计算机、或未编程的可编程逻辑器件、可编程门阵列或其他未编程的器件,除非伴随有赋予未编程器件被配置为执行所公开的功能的能力的编程介质。
出于解释的目的,已经参考特定实施例描述了前述描述。然而,上面的说明性讨论并不旨在穷举或将本发明限制于所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择和描述这些实施例是为了最好地解释这些实施例的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用这些实施例和可能适合于预期的特定用途的各种修改。因此,本实施例被认为是说明性的而非限制性的,并且本发明不限于本文给出的细节,而是可以在所附权利要求的范围和等同物内进行修改。

Claims (20)

1.一种方法,包括:
在容器注册表处接收包括多个文件的容器映像;
由处理设备确定所述多个文件中的至少一个文件是所述容器注册表处先前存储的容器映像文件的重复;以及
由所述处理设备将所述容器映像存储在所述容器注册表处,其中是所述先前存储的容器映像文件的重复的、所述多个文件中的至少一个文件从所述容器映像中移除。
2.根据权利要求1所述的方法,还包括:
从客户端设备接收对所述容器映像的拉取请求;
检索所述先前存储的容器映像文件;以及
鉴于所述先前存储的容器映像文件,重建所述容器映像以包括所述容器映像的多个文件中的每一个文件。
3.根据权利要求1所述的方法,还包括:
在所述容器映像的元数据中添加对所述先前存储的容器映像文件的引用,以代替所述多个文件中没有与所述容器映像一起存储在所述容器注册表处的至少一个文件。
4.根据权利要求3所述的方法,其中对所述先前存储的容器映像文件的所述引用包括所述先前存储的容器映像文件的校验和。
5.根据权利要求1所述的方法,其中确定所述多个文件中的至少一个文件是先前存储的容器映像文件的重复包括:
确定容器注册表处的一个或多个先前存储的容器映像文件的校验和是否匹配所述容器映像的多个文件之一的校验和。
6.根据权利要求1所述的方法,其中所述多个文件中的每个文件都是可搜索的压缩格式。
7.根据权利要求1所述的方法,其中将所述容器映像存储在所述容器注册表处,其中所述至少一个文件从所述容器映像中移除,包括:
从所述容器映像中移除所述多个文件中的至少一个文件;以及
更新所述容器映像的元数据,所述元数据指示从所述容器映像移除的文件的偏移和对所述先前存储的容器映像文件的引用。
8.一种系统,包括:
存储器;以及
可操作地耦合到所述存储器的处理设备,用于:
在容器注册表处接收包括多个文件的容器映像;
确定所述多个文件中的至少一个文件是所述容器注册表处先前存储的容器映像文件的重复;和
将所述容器映像存储在所述容器注册表处,其中是所述先前存储的容器映像文件的重复的、所述多个文件中的至少一个文件从所述容器映像中移除。
9.根据权利要求8所述的系统,其中所述处理设备还用于:
从客户端设备接收对所述容器映像的拉取请求;
检索所述先前存储的容器映像文件;和
鉴于所述先前存储的容器映像文件,重建所述容器映像以包括所述容器映像的多个文件中的每一个文件。
10.根据权利要求8所述的系统,其中所述处理设备还用于:
在所述容器映像的元数据中添加对所述先前存储的容器映像文件的引用,以代替所述多个文件中没有与所述容器映像一起存储在所述容器注册表处的至少一个文件。
11.根据权利要求10所述的系统,其中对所述先前存储的容器映像文件的所述引用包括所述先前存储的容器映像文件的校验和。
12.根据权利要求8所述的系统,其中为了确定所述多个文件中的至少一个文件是先前存储的容器映像文件的重复,所述处理设备用于:
确定容器注册表处的一个或多个先前存储的容器映像文件的校验和是否匹配所述容器映像的多个文件之一的校验和。
13.根据权利要求8所述的系统,其中所述多个文件中的每个文件都是可搜索的压缩格式。
14.根据权利要求13所述的系统,其中为了将所述容器映像存储在所述容器注册表处,其中所述至少一个文件从所述容器映像中移除,所述处理设备用于:
从所述容器映像中移除所述多个文件中的至少一个文件;和
更新所述容器映像的元数据,所述元数据指示从所述容器映像移除的文件的偏移和对所述先前存储的容器映像文件的引用。
15.一种包括存储在其中的指令的非暂时性计算机可读存储介质,当由处理设备执行时,所述指令使得所述处理设备:
在容器注册表处接收包括多个文件的容器映像;
由所述处理设备确定所述多个文件中的至少一个文件是所述容器注册表处先前存储的容器映像文件的重复;和
由所述处理设备将所述容器映像存储在所述容器注册表处,其中是所述先前存储的容器映像文件的重复的、所述多个文件中的至少一个文件从所述容器映像中移除。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中所述处理设备还用于:
从客户端设备接收对所述容器映像的拉取请求;
检索所述先前存储的容器映像文件;和
鉴于所述先前存储的容器映像文件,重建所述容器映像以包括所述容器映像的多个文件中的每一个文件。
17.根据权利要求15所述的非暂时性计算机可读存储介质,其中所述处理设备还用于:
在所述容器映像的元数据中添加对所述先前存储的容器映像文件的引用,以代替所述多个文件中没有与所述容器映像一起存储在所述容器注册表处的至少一个文件。
18.根据权利要求17所述的非暂时性计算机可读存储介质,其中对所述先前存储的容器映像文件的所述引用包括所述先前存储的容器映像文件的校验和。
19.根据权利要求15所述的非暂时性计算机可读存储介质,其中为了确定所述多个文件中的至少一个文件是先前存储的容器映像文件的重复,所述处理设备用于:
确定容器注册表处的一个或多个先前存储的容器映像文件的校验和是否匹配所述容器映像的多个文件之一的校验和。
20.根据权利要求19所述的非暂时性计算机可读存储介质,其中所述多个文件中的每个文件都是可搜索的压缩格式。
CN202210042040.7A 2021-11-23 2022-01-14 容器映像文件的去重复 Pending CN116150114A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/533,361 2021-11-23
US17/533,361 US20230161736A1 (en) 2021-11-23 2021-11-23 Deduplication of container image files

Publications (1)

Publication Number Publication Date
CN116150114A true CN116150114A (zh) 2023-05-23

Family

ID=80112360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210042040.7A Pending CN116150114A (zh) 2021-11-23 2022-01-14 容器映像文件的去重复

Country Status (3)

Country Link
US (1) US20230161736A1 (zh)
EP (1) EP4184342A1 (zh)
CN (1) CN116150114A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934346B1 (en) * 2022-10-17 2024-03-19 Trend Micro Incorporated Random access of a member file in a compressed tar archive

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928210B1 (en) * 2012-04-30 2018-03-27 Veritas Technologies Llc Constrained backup image defragmentation optimization within deduplication system
US9633033B2 (en) * 2013-01-11 2017-04-25 Commvault Systems, Inc. High availability distributed deduplicated storage system
US11210269B2 (en) * 2018-02-13 2021-12-28 Red Hat, Inc. System and method for deduplicating container image storage data
US11263174B2 (en) * 2019-11-08 2022-03-01 International Business Machines Corporation Reducing resource consumption in container image management
US11755590B2 (en) * 2020-11-04 2023-09-12 Netapp, Inc. Data connector component for implementing integrity checking, anomaly detection, and file system metadata analysis

Also Published As

Publication number Publication date
EP4184342A1 (en) 2023-05-24
US20230161736A1 (en) 2023-05-25

Similar Documents

Publication Publication Date Title
US20230350589A1 (en) Making more active use of a secondary storage system
US10853371B2 (en) Efficient evaluation of query expressions including grouping clauses
CN109074362B (zh) 分布式系统中的拆分和移动范围
US9501365B2 (en) Cloud-based disaster recovery of backup data and metadata
US20150227543A1 (en) Method and apparatus for replication of files and file systems using a deduplication key space
US8996800B2 (en) Deduplication of virtual machine files in a virtualized desktop environment
JP6026738B2 (ja) 重複排除記憶システムのスケーラビリティを向上させるシステムおよび方法
CN101996233B (zh) 用于对经重复删除的数据进行复制的方法和系统
US9973210B1 (en) Reduction of execution stalls of LZ4 decompression via parallelization
US10042719B1 (en) Optimizing application data backup in SMB
US20190155925A1 (en) Sparse dictionary tree
US20170262307A1 (en) Method and apparatus for conversion of virtual machine formats utilizing deduplication metadata
US10719251B2 (en) System and method for recursive de-duplication
US11200083B2 (en) Inexact reconstitution of virtual machine images
US20150193526A1 (en) Schemaless data access management
US10776321B1 (en) Scalable de-duplication (dedupe) file system
US10853185B1 (en) Virtual machine image backup to exclude system page file
US20200099745A1 (en) Storage segment server covered cache
CN113886002A (zh) 存储装置和辅助虚拟机迁移的方法
EP4184342A1 (en) Deduplication of container image files
US20220374395A1 (en) Hybrid file compression model
US20200073868A1 (en) Space-efficient methodology for representing label information in large graph data for fast distributed graph query
US9971797B1 (en) Method and system for providing clustered and parallel data mining of backup data
US10108647B1 (en) Method and system for providing instant access of backup data
US9053100B1 (en) Systems and methods for compressing database objects

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