CN114661369A - 用于容器映像的加载的方法和装置 - Google Patents

用于容器映像的加载的方法和装置 Download PDF

Info

Publication number
CN114661369A
CN114661369A CN202111371310.0A CN202111371310A CN114661369A CN 114661369 A CN114661369 A CN 114661369A CN 202111371310 A CN202111371310 A CN 202111371310A CN 114661369 A CN114661369 A CN 114661369A
Authority
CN
China
Prior art keywords
container
layers
expected location
storage device
execution
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
CN202111371310.0A
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN114661369A publication Critical patent/CN114661369A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开涉及用于容器映像的加载的方法和装置。公开了用于容器映像的加载的方法、装置、系统和制品。示例装置包括优先排序器来确定容器要被执行的优先级别。容器控制器用于为容器的第一组层确定第一预期位置,容器控制器为容器的第二组层确定第二预期位置,第一预期位置和第二预期位置是基于所确定的优先级别来确定的,第二组层在映像中由地标与第一组层分离。容器加载器从第一预期位置挂载第一组层。容器执行器基于挂载的第一组层来发起容器的执行。

Description

用于容器映像的加载的方法和装置
技术领域
本公开概括而言涉及基于容器的计算,并且更具体而言,涉及使能容器映像的高效加载。
背景技术
容器是虚拟结构,用于在主机虚拟化环境内执行应用的孤立实例。容器被用来促进操作系统虚拟化,从而将应用从操作系统中抽象出来(例如,隔离)。因此,在第一容器中执行的应用与在该容器外(例如,在主机操作系统处或在另一个容器中)执行的另一个应用(也许甚至是同一个应用的拷贝)是隔离的。
发明内容
根据本公开的一方面,提供了一种用于管理容器映像的装置,该装置包括:优先排序器,来确定容器要被执行的优先级别;容器控制器,来为所述容器的第一组层确定第一预期位置,所述容器控制器为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;容器加载器,来从所述第一预期位置挂载所述第一组层;以及容器执行器,来基于挂载的第一组层来发起所述容器的执行。
根据本公开的一方面,提供了一种包括指令的至少一个计算机可读介质,所述指令当被执行时,使得至少一个处理器执行至少以下操作:确定容器要被执行的优先级别;为所述容器的第一组层确定第一预期位置;为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;从所述第一预期位置挂载所述第一组层;并且基于所述第一组层来发起所述容器的执行。
根据本公开的一方面,提供了一种用于管理容器映像的方法,该方法包括:确定容器要被执行的优先级别;为所述容器的第一组层确定第一预期位置;通过利用处理器执行指令,为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的;从所述第一预期位置挂载所述第一组层;并且基于所述第一组层来发起所述容器的执行。
根据本公开的一方面,提供了一种用于管理容器映像的装置,该装置包括:用于优先排序的装置,来确定容器要被执行的优先级别;用于控制的装置,来为所述容器的第一组层确定第一预期位置,所述用于控制的装置为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;用于加载的装置,来从所述第一预期位置挂载所述第一组层;以及用于执行的装置,来基于挂载的第一组层来发起所述容器的执行。
附图说明
图1A是图示出不包括地标的第一示例容器映像和包括地标的第二示例容器映像的框图。
图1B是图示出示例容器的框图。
图2是根据本公开的教导被实现来使能容器映像的懒惰加载的示例计算系统的框图。
图3是可用于识别用于容器的层的存储位置的示例优先级别到存储器层级映射表。
图4是表示可被执行来实现图2的示例计算系统以压缩和存储容器的示例机器可读指令的流程图。
图5是表示可被执行来实现图2的示例计算系统以加载容器来执行的示例机器可读指令的流程图。
图6是被构造来执行图4和/或图5的指令以实现图2的示例计算系统的示例处理器平台的框图。
图7是示例软件分发平台的框图,用于将软件(例如,与图4和/或图5的示例计算机可读指令相对应的软件)分发到客户端设备,例如消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、再销售、许可和/或分许可)和/或原始设备制造商(OEM)(例如,用于包括在要被分发到例如零售商和/或直接购买客户的产品中)。
图8是图示出由于使用本文公开的示例方法而得到的示例性能改善的图。
附图不是按比例的。一般而言,相同的标号将在各幅图和伴随的书面描述的各处被用于指代相同或相似的部件。
除非另有具体声明,否则本文使用诸如“第一”、“第二”、“第三”等等之类的描述语,而不输入或以其他方式指示出任何优先权、物理顺序、在列表中的排列和/或以任何方式排序的含义,而只是用作标签和/或任意名称来区分元素,以便易于理解公开的示例。在一些示例中,描述语“第一”在详细描述中可被用于提及某一元素,而同一元素在权利要求中可被用不同的描述语来提及,例如“第二”或“第三”。在这种情况下,应当理解,这种描述语仅仅用于明确地识别那些元素,这些元素例如可能在其他情况下共享同一名称。
具体实施方式
操作系统(OS)级的虚拟化使得能够在计算系统上执行多个孤立的用户空间实例。这种实例通常被称为容器,但也可额外地或者替换地被称为区域、虚拟私人服务器、分区、虚拟环境(virtual environment,VE)、虚拟内核、监狱,等等。从在容器内部执行的(一个或多个)应用的角度来看,这种容器似乎作为一个完整的计算机系统运作。然而,虽然在传统计算机操作系统上执行的应用可以访问该计算机的资源(例如,连接的设备、文件系统、网络共享,等等),但当在容器内执行应用时,该应用只能访问与该容器相关联的那些资源。换句话说,除了应用被特别允许访问的容器外的那些资源以外,应用不能访问该容器外的资源(例如,另一个容器中的资源、主机操作系统的资源,等等)。
为此,从资源管理的角度来看(例如,被容器化的组件所使用的资源被隔离开来,只被作为同一容器的一部分的那些组件所使用),和/或从安全性的角度来看(例如,对容器化文件或组件的访问可以被限制),容器是有用的。同样,容器对于实现轻量级的、可再现的应用部署也是有用的。以这种方式,容器经常被用于云计算环境中,以使得资源能够基于需求被分配、移除和/或重分配。
在主机环境内执行容器之前,该容器被存储为容器映像,该容器映像指定了容器的组件,包括例如库、二进制文件和/或容器的执行所需要的其他文件。
容器与容器映像不同,即使从存储的角度来看也是如此,因为容器映像代表了容器启动的基础。容器将在映像之上添加一个既可读又可写的“薄”层。容器将尝试对映像中的文件的内容所做的任何改变都会触发写时拷贝机制,而这将在该薄层中创建来自映像的文件的拷贝,这个拷贝然后被容器用于读取和写入的目的。以这种方式,容器映像或者更一般而言地容器与虚拟机映像(或其他数据结构)是不同的,在虚拟机内执行的应用对虚拟机映像所做的改变将导致对映像本身的写入。
容器映像可包括一个或多个容器层,它们可以被认为是容器存储的基本单位。每一层都会向整个映像添加一组不同的文件和文件夹。一映像的容器层被认为是只读的,并且经常会被再使用来作为可以共享他们的一个或多个容器的构建块(例如,具有相同操作系统的2个容器,将共享代表该OS的层)。当一容器要被创建时,容器运行时引擎(例如,在其生命周期期间创建和管理容器的实体)将具有处理程序,该处理程序将负责确保创建容器所必需的所有层都存在于盘上,如果不可用,则通过网络从远程存储中拉取它们,并且创建最后的薄层(这是容器特定的),容器可以对其进行读取和写入。这种方法被称为“写时拷贝”(Copy-on-Write),并且可以防止容器向只读层中的文件写入。因此,当确定在主机环境中执行容器时,容器运行时引擎从容器注册表(例如,经由网络)拉取所有缺失的层,创建小的写时拷贝层,并且在新容器中挂载所有层(挂载操作不牵涉任何读取、写入或执行操作),并且从最终映像中加载或运行容器被指定运行的任何二进制文件或程序。创建容器存储的这些步骤通常被称为:拉取阶段、创建阶段(包括挂载)、以及运行阶段。这些步骤是启动容器时的任何开销的主要原因,并且应当被减轻。
在函数即服务(Function-as-a-Service,FAAS)和容器即服务(Container-as-a-Service,CAAS)环境中,从终端用户的角度来看,容器启动时间对服务质量(Quality-of-Service,QoS)有很大影响。冷启动时间,即从启动容器的命令开始,经过3个步骤的准备(拉取、创建、运行),直到它第一次在机器上完成执行,所需要的时间量。取决于缺失多少层以及创建和挂载所有容器层所需要的时间,对功能性能的影响可能是显著的。这个冷启动时间在第一次也会因为运行时期间需要处理大型或众多文件、文件操作的高时延等等而受到影响。对于某些用例(例如,实时处理、流媒体、亚秒级功能)来说,高时延和不稳定的运行时是不能容忍的。另外,对于被认为是高优先级的工作负载,在理想情况下最好减少和/或量小化启动时间(以及该时间的变化)。本文公开的示例方法使得能够减少容器启动时间,特别是在FaaS和CaaS环境中。而且,FaaS/CaaS服务的大多数主机希望有低变化的可预测的运行时,因为长时间的冷启动可能会导致客户的账单增加(如果时间被计费的话)或提供商的损失(如果冷启动没有被计费的话)。此外,本文公开的示例基于特定容器的优先级和/或重要性提供差异化的服务。
现有的方法尝试通过保持容器温暖来最小化冷启动时间。也就是说,通过使用RAM盘,将容器的映像保存在DRAM中。然而,在DRAM中持续存储容器映像是一个昂贵的解决方案,特别是当这些容器没有被活跃使用时。
一些其他现有方法尝试克服与为了启动容器而在盘上下载完整映像相关联的延迟,而是改为提供映像的懒惰加载。在这种先前的方法中,一旦映像的关键部分被下载到存储装置中,就可以启动容器,而其他层则在容器启动之后被下载,并且在执行期间被从注册表中拉取。
正如本文所说明的,使用分层级的存储拓扑结构(例如,基于
Figure BDA0003362452680000051
3D XPoint)可以进一步改善冷启动时间,提高在系统中部署的功能的密度,并且提供差异化的服务(例如,基于工作负载优先级改善加载时间)。以这种方式,层次化存储拓扑结构(例如,基于
Figure BDA0003362452680000061
3D XPoint)被用来提供差异化的服务,并且减少FaaS/CaaS部署中的容器冷启动时间。在一些示例中,
Figure BDA0003362452680000062
资源调配技术(
Figure BDA0003362452680000063
RDT)被用来进一步扩展服务差异化,并且改善性能可预测性(例如,容器运行时)。以这种方式,本文公开的示例方法在分层级存储系统的情境中扩展了映像懒惰加载的概念,具有使用分层级存储系统的各种层级来提供不同水平的性能和/或可预测性的额外好处。
图1A是图示出不包括地标(landmark)的第一示例容器映像110和包括地标的第二示例容器映像120的框图。图1A的第一示例容器映像110是使用不利用地标的第一压缩格式来压缩的。在图1A的图示示例中,第一压缩格式表示stargz压缩格式。图1A的第一示例容器映像110包括第一层131、第二层132、第三层133、第四层134、第五层135、内容表140、以及注脚145。第一层131、第二层132、第三层133、第四层134和第五层135中的每一个对应于映像110的各个部分。如图1A的图示示例中所示,各个层131、132、133、134、135是TAR存档。然而,可以额外地或者替换地使用任何其他过去、现在和/或未来的归档格式。在图1A的图示示例中,第一层131和第四层134表示容器的立即执行所必需的层。以这种方式,第二层132、第三层133和第五层135不是映像的立即执行所需要的。
在图1A的图示示例中,内容表140包括映像的元数据和偏移信息。在一些示例中,使用JavaScript对象表示法(JavaScript Object Notation,JSON)来对内容表140进行格式化。然而,可以额外地或替换地使用任何其他数据格式。示例注脚145表示相对于内容表140的偏移。
图1A的第二示例映像120包括第一层131、第二层132、第三层133、第四层134、第五层135、内容表140、以及注脚145。图1A的第二示例容器映像120是使用包括地标150的第二压缩格式来压缩的。与第一示例映像110形成对比,第一层131和第四层134在第二映像120中被安排在地标150之前。第二层132、第三层133和第五层135被安排在地标150之后。
通过使用地标150,在地标150之前的映像的层可以被预取来加载到存储器中。在一些示例中,在地标150之前的层的预取是利用单个操作来执行的。在图1A的图示示例中,容器的执行所需要的映像的层(例如,第一层131和第四层134)被安排在地标之前,这样的层可被拉取到存储介质中,而不是要求映像的全部在盘上可用。映像的特定层(例如,映像的立即执行所要求的层)的这种预取和/或加载被称为懒惰加载和/或懒惰映像拉取。
在图1A的图示示例中,第二压缩格式是利用estargz压缩格式来实现的。然而,可以额外地或者替换地使用任何其他使用地标和/或以其他方式使得能够预取映像的某个范围的层的压缩格式。
虽然在图1A的图示示例中,每个示例映像都示为有五层,但在实践中,容器的映像可包括任何数目的层。此外,虽然图1A的示例映像示出了两层是映像的立即执行所要求的,但在实践中,任何数目的这种层可以被识别为映像的立即执行所要求的。
图1B是图示出示例容器151的框图。如上所述,容器与容器映像不同,因为容器映像代表了容器启动的基础。在图1B的图示示例中,示例容器150包括“薄”层160,它是既可读又可写的。容器150还包括映像层170,它包括第一层171、第二层172、第三层173、和第四层174。容器将尝试对映像层170中的文件的内容所做的任何改变都会触发写时拷贝机制,而这将在该薄层160中创建来自映像170的文件的拷贝,这个拷贝然后被容器用于读取和写入的目的。
图2是根据本公开的教导被实现来使能容器映像的懒惰加载的示例容器运行时引擎201的框图。图2的图示示例的示例容器运行时引擎201包括容器层管理器205和计算资源207。示例计算资源207包括第一层级存储设备220、第二层级存储设备225、第三层级存储设备230、以及第n层级存储设备235。图2的图示示例的示例容器层管理器205包括容器压缩器250、优先排序器270、容器控制器275、容器加载器280、以及容器执行器290。示例容器运行时引擎201经由网络296与容器注册表295进行通信。
图2的图示示例的示例第一层级存储设备220、示例第二层级存储设备225、示例第三层级存储设备230以及示例第N层级存储设备235是由具有不同性能特性的存储设备来实现的。例如,图2的图示示例的第一层级存储设备220具有最高性能特性(例如,最高的读/写速率、最高的带宽,等等),而图2的图示示例的第N层级存储设备235具有最低性能特性(例如,最低的读/写速率、最低的带宽,等等)。对于使用更高性能的存储器设备,存在各种权衡。例如,低时延存储设备,比如DRAM盘,可能是实现起来很昂贵的和/或在大数量时是不可靠的。相比之下,性能较低的存储器设备可能更容易大量实现和/或更可靠。
在图2的图示示例中,第一层级存储设备220是使用动态随机访问存储器(DynamicRandom Access Memory,DRAM)盘(例如,被分配并挂载在机器上作为存储设备的DRAM存储器的切片)来实现的。图2的图示示例的示例第二层级存储设备225是使用持久性存储器来实现的,例如,
Figure BDA0003362452680000081
OptaneTMDC持久性存储器(DC Persistent Memory,DCPMM)。在一些示例中,持久性存储器是在“App Direct”模式中操作的。以这种方式,第二层级存储设备225的性能特性略低于第一层级存储设备230。示例第三层级存储设备230是使用固态驱动器(solid state drive,SSD)来实现的,例如,
Figure BDA0003362452680000082
OptaneTMDC固态驱动器(SSD)。示例第n层级存储设备235是使用(一个或多个)传统固态驱动器和/或(一个或多个)传统硬盘驱动器(hard disk drive,HDD)引导存储器设备235来实现的。虽然在图2的图示示例中示出了四个层级的存储设备,但可以额外地或者替换地使用任何数目的层级的存储设备。此外,可以使用不同的存储器技术来实现存储设备的每一层级。例如,第一层级存储设备220可以由持久性存储器(例如,
Figure BDA0003362452680000083
OptaneTMDC持久性存储器(DCPMM))来实现。
图2的图示示例的示例容器压缩器250使用包括地标的压缩格式来构建容器的映像。在本文公开的示例中,压缩格式中的地标的使用使得压缩的映像层能够被拉取到不同的存储器层级中以便存储。在本文公开的示例中,使用了estargz压缩格式。然而,可以额外地或者替换地使用任何其他使用地标和/或以其他方式使得能够实现层的分段以加载到操作存储器中的压缩格式。以这种方式,第二组层(例如,出现在地标之后的层)可以被降低优先级和/或在以后的时间被放入到较慢的存储层级中。从而,在容器准备好进入运行阶段之前,来自不同介质的不同层被挂载,并且容器自己的薄层被创建(例如,在最快的可用存储设备中)。在这个层也被挂载在容器中之后,执行则可以开始。在一些示例中,示例容器压缩器250是通过用于压缩的装置来实现的。
图2的图示示例的示例优先排序器270确定容器要被优先排序到的优先级别。在本文公开的示例中,容器的优先级是基于在由容器控制器275接收的存储容器的请求中包括的指示来确定的。这种指示可以由例如提交了该请求的用户来提供。然而,可以基于任何其他标准来确定容器的优先级,包括例如容器执行的历史、由容器执行的操作的类型,等等。在一些示例中,优先级可对应于容器的执行的期望时延、期望的服务质量(QoS),等等。在一些示例中,优先排序器被增强以使用
Figure BDA0003362452680000091
资源调配技术(
Figure BDA0003362452680000092
RDT)。在一些示例中,优先排序器270是通过用于优先排序的装置来实现的。
图2的图示示例的示例容器控制器275基于容器要被优先排序到的优先级别来选择存储位置。使用由优先排序器270识别的优先级别,示例容器控制器275查询优先级映射表(例如,下面联系图3公开的映射表300)。容器控制器275与容器注册表295进行通信,以将各层拉取到其(一个或多个)适当的存储设备。在一些示例中,示例容器控制器275是通过用于控制的装置来实现的。
图2的图示示例的示例容器加载器280,响应于加载容器的请求,查询容器注册表278以识别第一存储器中的第一组层的位置,并且执行一个或多个操作以将容器的层拉取到(一个或多个)适当的存储设备中。在一些示例中,如果,例如,数据已经被存储在盘上(例如,映像的层已经存在于存储装置中),则容器加载器280省略加载操作的执行。在这样的示例中,移动命令和/或拷贝命令可以被容器加载器280执行,以将映像的层移动和/或拷贝到适当的存储介质以便执行。在一些示例中,容器加载器280是通过用于加载的装置来实现的。
一旦到地标为止的各层已被拉取到适当的存储中并且薄的读-写层已被创建,图2的图示示例的示例容器执行器290就触发容器的执行。例如,在挂载第一组层并且创建和挂载薄的R/W层之后,示例容器执行器290可以使用第一组层来触发容器的执行,同时容器加载器280继续将第二组层加载到其余的存储介质中。在一些示例中,容器执行器290是通过用于执行的装置来实现的。
图2的图示示例的示例容器注册表295长期存储容器映像,以便本地存储设备不会过载。在一些示例中,容器注册表295被称为容器存储库。示例容器注册表295是通过为存储设备(例如,闪存、磁介质、光介质、固态盘、(一个或多个)硬盘驱动器,等等)暴露类似REST的端点来实现的。此外,存储在示例容器注册表278中的数据包含逐层存储的上文联系图1A和图1B描述的只读容器映像。容器注册表通常以targz格式存储各层,这将向后兼容estargz格式及其地标。在图2的图示示例中,示例容器注册表278还存储关于容器的各层应当被拉取到哪个存储/存储器介质中的指示。在一些示例中,容器注册表278另外还存储了下文联系图3所公开的优先级别到存储器层级映射表。
图2的图示示例的示例网络296是由互联网实现的。然而,示例网络296可以由促进示例容器运行时引擎201和容器注册表295之间的数据的通信的任何其他网络来实现。在一些示例中,网络296被实现为局域网(local area network,LAN),但可以额外地或者替换地被实现为广域网(wide area network,WAN)、虚拟专用网络(virtual private network,VPN),等等。在一些示例中,网络296可以表示多个网络。
图3是可用于识别用于容器的层的存储位置的优先级别到存储器层级映射表300。图3的图示示例的示例映射表300包括优先级别列310,第一组层的存储位置列320,以及第二组层的存储位置列330。示例映射表300包括第一行340,该行识别了高优先级容器的第一层和第二层要被存储到的位置(例如,分别在第一层级存储和第二层级存储中)。示例映射表300包括第二行350,该行识别了中优先级容器的第一层和第二层要被存储到的位置(例如,分别在第一层级存储和第三层级存储中)。示例映射表300包括第三行360,该行识别了低优先级容器的第一层和第二层要被存储到的位置(例如,分别在第二层级存储和第三层级存储中)。
虽然在图3的图示示例中,示出了三个级别的优先级,但可以使用任何数目的优先级级别。例如,可以使用两级优先级系统(例如,高优先级和低优先级),可以使用三级优先级系统(例如,高优先级、中优先级和低优先级),等等。作为图3的映射表300的替代示例,在两个优先级别实现方式中,具有第一优先级(例如,高优先级)的第一容器的第一层可被存储在第一层级存储设备220中,并且第一容器的第二层可被存储在第二层级存储设备225中。在同一个替代示例中,具有第二优先级(例如,低优先级)的第二容器的第一层可被存储在第二层级存储设备225中,并且第二容器的第二层可被存储在第三层级存储设备230中。定义额外的优先级别使得用于容器的各层的存储的存储器设备的层级的不同组合能够被使用。
此外,虽然在图3的图示示例中,为每个级别的优先级定义了两个存储位置,但在一些示例中,也可以为每个级别的优先级定义额外的存储位置。例如,第三组层可以被定义各自的存储位置。在这样的示例中,可以在压缩的映像内检测到多个地标,以便能够识别第一、第二和第三组层。
虽然在图2中图示了实现图2的容器层管理器205的示例方式,但图2中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重布置、省略、消除和/或以任何其他方式来实现。另外,图2的示例容器压缩器250、示例优先排序器270、示例容器控制器275、示例容器加载器280、示例容器执行器290和/或更概括而言示例容器层管理器205,可以通过硬件、软件、固件和/或硬件、软件和/或固件的任何组合来实现。从而,例如,图2的示例容器压缩器250、示例优先排序器270、示例容器控制器275、示例容器加载器280、示例容器执行器290和/或更概括而言示例容器层管理器205中的任何一者可由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(graphics processing unit,GPU)、(一个或多个)数字信号处理器(digitalsignal processor,DSP)、(一个或多个)专用集成电路(application specificintegrated circuit,ASIC)、(一个或多个)可编程逻辑器件(programmable logicdevice,PLD)和/或(一个或多个)现场可编程逻辑器件(field programmable logicdevice,FPLD))来实现。当读到本专利的任何装置或系统权利要求覆盖纯软件和/或固件实现方式时,图2的示例容器压缩器250、示例优先排序器270、示例容器控制器275、示例容器加载器280、示例容器执行器290和/或更概括而言示例容器层管理器205中的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(DVD)、致密盘(CD)、蓝光盘,等等。此外,图2的示例容器层管理器205可包括除了图2中所示的那些以外或者取代图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。就本文使用的而言,短语“与……通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
在图4和/或图5中示出了表示用于实现图2的容器层管理器205的示例硬件逻辑、机器可读指令、硬件实现状态机和/或其任何组合的流程图。机器可读指令可以是供计算机处理器和/或处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述计算机处理器和/或处理器电路例如是下文联系图6论述的示例处理器平台600中所示的处理器612。该程序可体现在存储于诸如CD-ROM、软盘、硬盘驱动器、DVD、蓝光盘或与处理器612相关联的存储器之类的非暂态计算机可读存储介质上的软件中,但整个程序和/或其一些部分可替换为由除了处理器612以外的设备执行和/或体现在固件或专用硬件中。另外,虽然是参考图4和/或图5中所示的流程图来描述示例程序的,但可替换使用实现示例容器层管理器205的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或组合。额外地或者替换地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,分立和/或集成的模拟和/或数字电路、FPGA、ASIC、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。处理器电路可分布在不同的网络位置和/或在一个或多个设备的本地(例如,单个机器中的多核处理器,分布在服务器机架上的多个处理器,等等)。
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等等中的一种或多种格式来存储本文描述的机器可读指令。本文描述的机器可读指令可被存储为可被利用来创建、制造和/或生产机器可执行指令的数据或数据结构(例如,指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分割并存储在位于网络或者网络集合的相同或不同位置的一个或多个存储设备和/或计算设备(例如,服务器)上(例如,在云中,在边缘设备中,等等)。机器可读指令可要求安装、修改、改编、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密并存储在分开的计算设备上,其中这些部分当被解密、解压缩和组合时,形成实现可一起形成例如本文所述那种的程序的一个或多个功能的一组可执行指令。
在另一示例中,机器可读指令可被存储在如下状态中:在该状态中,它们可被处理器电路读取,但要求添加库(例如,动态链接库(dynamic link library,DLL))、软件开发套件(software development kit,SDK)、应用编程接口(application programminginterface,API)等等以便在特定的计算设备或其他设备上执行这些指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,如本文使用的机器可读介质可包括机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在休息或在途时的特定格式或状态如何。
本文描述的机器可读指令可以由任何过去、当前或者未来的指令语言、脚本语言、编程语言等等来表示。例如,可利用以下语言中的任何一种来表示机器可读指令:C、C++、Java、C#、Perl、Python、JavaScript、超本文标记语言(HyperText Markup Language,HTML)、结构化查询语言(Structured Query Language,SQL)、Swift、Go,等等。
如上所述,可利用存储在非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图4和/或图5的示例过程,所述介质例如是硬盘驱动器、闪存、只读存储器、致密盘、数字多功能盘、缓存、随机访问存储器、和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、短暂存储、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。就本文使用的而言,术语非暂态计算机可读介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘并且排除传播信号和排除传输介质。
“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为序言或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。就本文使用的而言,当短语“至少”在例如权利要求的序言中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如A、B和/或C这样的形式使用时,指的是A、B、C的任何组合或子集,例如(1)A单独,(2)B单独,(3)C单独,(4)A与B,(5)A与C,(6)B与C,以及(7)A与B以及与C。就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A和B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“A或B中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个A,(2)至少一个B,以及(3)至少一个A和至少一个B。
就本文使用的而言,单数指代(例如,“一”、“第一”、“第二”,等等)不排除多数。就本文使用的而言,术语“一”实体指的是一个或多个该实体。术语“一”、“一个或多个”和“至少一个”在本文中被可互换地使用。此外,虽然是单独列出的,但多个手段、元素或方法动作可由例如单个单元或处理器来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
图4是表示可被执行来实现图2的示例计算系统以压缩和存储映像的示例机器可读指令的流程图。图4的图示示例的示例过程400开始于示例容器压缩器250使用包括地标的压缩格式来构建容器的映像(块410)。在本文公开的示例中,压缩格式中的地标的使用使得压缩映像的层能够被分段到不同的存储器层级中以便存储。由于分段,不同的片段可基于其优先级被请求和/或拉取到存储设备的各个层级中(例如,第一层级存储设备220、第二层级存储设备225、第三层级存储设备230、第n层级存储设备235,等等)。在本文公开的示例中,使用了estargz压缩格式。然而,可以额外地或者替换地使用任何其他使用地标和/或以其他方式使得能够实现层的分段以加载到操作存储器中的压缩格式。示例容器压缩器250向容器注册表295发送映像以便存储(块420)。图4的示例过程400终止,但可根据例如构建映像来存储在容器注册表295中的后续请求而被重复。
图5是表示可被执行来实现图2的示例计算系统以加载容器来执行的示例机器可读指令的流程图。图5的图示示例的示例过程500开始于示例容器控制器275识别要被加载来执行的容器时(块505)。可基于例如从用户或者从任何其他实体接收的执行容器的请求而识别容器。
示例优先排序器270确定容器要被优先排序到的优先级别(块510)。在本文公开的示例中,基于执行容器的请求中包括的指示来确定容器的优先级。这种指示可以由例如提交了对容器执行的请求的用户来提供。然而,可以基于任何其他标准来确定容器的优先级,包括例如容器执行的历史、由容器执行的操作的类型,等等。在一些示例中,优先级可对应于容器的执行的期望时延、期望的服务质量(QoS),等等。
示例容器控制器275基于由优先排序器270识别的优先级别来识别容器映像的第一组层的第一预期位置(块515)。在一些示例中,容器控制器275查询优先级映射表(例如,图3的映射表300,其可被存储在容器注册表295中,或者可被存储在容器运行时引擎201的本地存储器和/或存储设备中)以识别第一组层的第一预期位置。在本文公开的示例中,可以使用任何数目的优先级级别。例如,可以使用两级优先级系统(例如,高优先级和低优先级),可以使用三级优先级系统(例如,高优先级、中优先级和低优先级),等等。作为示例,在两个优先级别实现方式中,具有第一优先级(例如,高优先级)的第一容器的第一层可被存储在第一层级存储设备220中,并且第一容器的第二层可被存储在第二层级存储设备225中。在同一示例中,具有第二优先级(例如,低优先级)的第二容器的第一层可被存储在第二层级存储设备225中,并且第二容器的第二层可被存储在第三层级存储设备230中。定义额外的优先级别使得用于容器的各层的存储的存储器设备的层级的不同组合能够被使用。
示例容器加载器280确定第一组层是否存在于第一预期位置(块520)。如果示例容器加载器280确定第一组层存在于第一预期位置(例如,块520返回的结果是“是”),则示例容器加载器280从第一预期位置挂载第一组层(块525)。以这种方式,第一组层可从所选层级的存储设备开始执行,同时剩余的层被加载(或取回)。
如果示例容器加载器280确定第一组层不存在于第一预期位置(例如,块520返回的结果是“否”),则示例容器加载器280确定映像的第一组层是否存在于容器运行时引擎201的另一存储设备上(块530)。如果映像的第一组层不存在于容器运行时引擎201的另一存储设备上(例如,块530返回的结果是“否”),则示例容器控制器275将第一组层从容器注册表拉取到第一预期位置(块535)。示例容器加载器280然后从第一预期位置挂载第一组层(块525)。
在一些示例中,容器的第一组层可能不是已经存在于第一预期位置(例如,块520返回的结果是“否”),而是可能存在于容器运行时引擎201的一不同存储设备中(例如,块530返回的结果是“是”)。这种情形在一些示例中可能是容器的优先级别变化的结果。这样的改变可以是为了提高容器的优先级别(例如,导致层被从更快的存储设备加载)而做出的,或者是为了降低容器的优先级别(例如,导致层被从更慢的存储设备加载)而做出的。
如果示例容器加载器280确定映像的第一组层虽然不存在于第一预期位置中,但存在于容器运行时引擎201的另一位置中(例如,块530返回的结果是“是”),则示例容器加载器280从当前位置挂载第一组层(块540)。在这样的示例中,使用来自当前位置的第一组层与从容器注册表295中拉取第一组层相比,不仅会导致加载性能的改善,而且还会节约网络带宽,否则从容器注册表295中拉取第一组层会消耗这些网络带宽。
在将第一组层从其当前位置挂载之后(块540),示例容器加载器280将第一组层移动和/或拷贝到第一预期位置(块545)。这样的移动/拷贝操作是在后台执行的,并且确保了在收到后续的容器执行请求时,第一组层将存在于第一预期位置中。在一些示例中,在将第一组层移动/拷贝到第一预期位置之后,第一组层被从第一预期位置重挂载。在一些替代示例中,第一组层首先被移动到第一预期位置并且从那里挂载(例如,而不是在第一组层被移动/拷贝到第一预期位置的同时从当前位置挂载)。
在挂载第一组层后(例如,在块525处从第一预期位置或者在块540处从当前位置),示例容器执行器290开始该容器的执行(块550)。在一些示例中,由容器执行器290引起容器的执行包括初始化薄的读/写层。以这种方式,因为第一组层被挂载,并且这可以是从第一存储设备完成的,而第一存储设备是使用与第二存储设备(例如,可存储映像的第二组层的地方)相比提供改善的性能的存储器技术来实现的,所以容器的重要组件可以更迅速地被挂载来执行,而容器的不那么重要的组件可以被以延迟方式挂载和/或以其他方式被提供来执行。这种方法减少了容器执行的冷启动时间。
示例容器控制器275基于由优先排序器270在块515处识别的优先级别,识别容器映像的第二组层的第二预期位置(块555)。在一些示例中,对第二组层的第二预期位置的识别可以与对第一组层的第一预期位置的识别同时执行。换句话说,在识别了容器的优先级别之后,示例控制器275可以确定容器映像的各层预期被存储在其中的每个位置。
示例容器加载器280确定第二组层是否存在于第二预期位置(块560)。如果示例容器加载器280确定第二组层存在于第二预期位置(例如,块560返回的结果是“是”),则示例容器加载器280从第一预期位置挂载第二组层(块565)。以这种方式,第二组层可以作为容器执行的一部分被访问。虽然在图5的图示示例中,是从第二预期位置挂载第二组层的。在一些示例中,第二预期位置可对应于存储设备,该存储设备虽然对存储第二组层是高效的,但对执行第二组层不是高效的。从而,在一些示例中,不是直接从第二预期位置挂载第二组层,示例容器加载器280而是可以将第二组层拷贝到另一个位置以便挂载。换句话说,如果第二预期位置对应于第三层级存储设备230,则第二组层可以被拷贝到第二层级存储设备225(或第一层级存储设备220)以便挂载和执行。在执行容器之后,第二组层可被从其被暂时拷贝到以便执行的位置删除。
如果示例容器加载器280确定第二组层不存在于第二预期位置(例如,块560返回的结果是“否”),则示例容器加载器280确定映像的第二组层是否存在于容器运行时引擎201的另一存储设备上(块570)。如果映像的第二组层不存在于容器运行时引擎201的另一存储设备上(例如,块570返回的结果是“否”),则示例容器控制器275将第二组层从容器注册表拉取到第二预期位置(块575)。示例容器加载器280然后从第二预期位置挂载第二组层(块565)。
在一些示例中,容器的第二组层可能不是已经存在于第二预期位置(例如,块560返回的结果是“否”),而是可能存在于容器运行时引擎201的一不同存储设备中(例如,块570返回的结果是“是”)。这种情形在一些示例中可能是容器的优先级别变化的结果。这样的改变可以是为了提高容器的优先级别(例如,导致层被从更快的存储设备加载)而做出的,或者是为了降低容器的优先级别(例如,导致层被从更慢的存储设备加载)而做出的。
如果示例容器加载器280确定映像的第二组层虽然不存在于第二预期位置,但存在于容器运行时引擎201的另一位置中(例如,块530返回的结果是“是”),则示例容器加载器280从当前位置挂载第二组层(块580)。在这样的示例中,使用来自当前位置的第二组层与从存储库拉取第二组层相比,不仅会导致加载性能的改善,而且还会节约网络带宽,否则从容器注册表295中拉取第二组层会消耗这些网络带宽。
在将第二组层从其当前位置挂载之后(块580),示例容器加载器280将第二组层移动和/或拷贝到第二预期位置(块585)。这样的移动/拷贝操作是在后台执行的,并且确保了在收到后续的容器执行请求时,第二组层将存在于第二预期位置中。在一些示例中,在将第二组层移动/拷贝到第二预期位置之后,第二组层被从第二预期位置重挂载。在一些替代示例中,第二组层其次被移动到第二预期位置并且从那里挂载(例如,而不是在第二组层被移动/拷贝到第二预期位置的同时从当前位置挂载)。
在挂载第二组层后(例如,在块525处从第二预期位置或者在块540处从当前位置),示例容器执行器290继续该容器的执行,必要时使用以延迟方式挂载的第二组层中的层。如上所述,这种方法减少了容器执行的冷启动时间。图5的示例过程500随后终止(例如,在容器的执行继续的同时)。图5的示例过程500可例如根据对容器执行的后续请求而被重复。
例如,如果接收到了对于容器执行的后续(例如,第二)请求,并且初始请求是请求容器的执行并且已经改变了容器的优先级别(例如,导致第一组层和/或第二组层分别移动到新的预期位置,如块540、545、580、585中所描述),则在第二请求的情境中执行容器将导致从预期位置挂载层(例如,块525、565)。因此,与响应于第一请求开始执行的时间相比,响应于第二请求开始执行的时间得到了改善,因为不再需要将第一和/或第二组层移动到其新的预期位置。从而,虽然经由执行容器的请求所指示的容器的优先级的变化可能不会影响响应于该请求的容器的加载和/或执行,但容器的后续执行可能受益于调整后的优先级别。
虽然在图5的图示示例中,对容器映像的各层的存储位置的调整是在执行容器的请求的情境中被执行的,但这种调整不必仅仅是为了响应这种请求而执行的,并且在一些示例中,可以在指出容器的优先级别要被改变的指示之后执行。换句话说,第一组层和/或第二组层所在的位置可以独立于执行与层相关联的容器的请求而被改变。
图6是被构造来执行图4和/或图5的指令以实现图2的示例容器层管理器205的示例处理器平台600的框图。处理器平台600可例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如iPadTM之类的平板设备)、个人数字助理(PDA)、互联网家电、DVD播放器、CD播放器、数字视频记录器、蓝光播放器、游戏机、个人视频记录器、机顶盒、耳机或其他可穿戴设备、或者任何其他类型的计算设备。
图示示例的处理器平台600包括处理器612。图示示例的处理器612是硬件。例如,处理器612可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器、GPU、DSP或者控制器来实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在这个示例中,处理器实现了示例容器压缩器250、示例优先排序器270、示例容器控制器275、示例容器加载器280、以及示例容器执行器290。
图示示例的处理器612包括本地存储器613(例如,缓存)。图示示例的处理器612经由总线618与包括易失性存储器614和非易失性存储器616的主存储器进行通信。易失性存储器614可由同步动态随机访问存储器(Synchronous Dynamic Random Access Memory,SDRAM)、动态随机访问存储器(Dynamic Random Access Memory,DRAM)、
Figure BDA0003362452680000201
动态随机访问存储器(
Figure BDA0003362452680000202
Dynamic Random Access Memory,
Figure BDA0003362452680000203
)和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器616可由闪存和/或任何其他期望类型的存储器设备来实现。对主存储器614、616的访问受存储器控制器的控制。
图示示例的处理器平台600还包括接口电路620。接口电路620可由任何类型的接口标准来实现,例如以太网接口、通用串行总线(universal serial bus,USB)、
Figure BDA0003362452680000211
接口、近场通信(near field communication,NFC)接口、和/或PCI快速接口。
在图示示例中,一个或多个输入设备622连接到接口电路620。(一个或多个)输入设备622允许用户向处理器612中输入数据和/或命令。(一个或多个)输入设备可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint和/或语音识别系统来实现。
一个或多个输出设备624也连接到图示示例的接口电路620。输出设备624可例如由显示设备(例如,发光二极管(light emitting diode,LED)、有机发光二极管(organiclight emitting diode,OLED)、液晶显示器(liquid crystal display,LCD)、阴极射线管显示器(cathode ray tube,CRT)、就地切换(in-place switching,IPS)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器来实现。图示示例的接口电路620从而通常包括图形驱动器卡、图形驱动器芯片、和/或图形驱动器处理器。
图示示例的接口电路620还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口,来促进经由网络626与外部机器(例如,任何种类的计算设备)的数据交换。通信可经由例如以太网连接、数字订户线(digitalsubscriber line,DSL)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等等。
图示示例的处理器平台600还包括用于存储软件和/或数据的一个或多个大容量存储设备628。这种大容量存储设备628的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disks,RAID)系统、以及数字多功能盘(digital versatile disk,DVD)驱动器。
图4和/或图5的机器可执行指令632可被存储在大容量存储设备628中、易失性存储器614中、非易失性存储器616中、和/或诸如CD或DVD之类的可移除非暂态计算机可读存储介质上。
在图7中图示了图示出用于向第三方分发诸如图6的示例计算机可读指令632之类的软件的示例软件分发平台705的框图。示例软件分发平台705可由能够存储软件并且将其传输到其他计算设备的任何计算机服务器、数据设施、云服务等等来实现。第三方可以是拥有和/或操作该软件分发平台的实体的客户。例如,拥有和/或操作软件分发平台的实体可以是软件(例如图6的示例计算机可读指令632)的开发者、销售者和/或许可人。第三方可以是购买和/或许可该软件以供使用和/或再销售和/或分许可的消费者、用户、零售商、OEM,等等。在图示示例中,软件分发平台705包括一个或多个服务器和一个或多个存储设备。存储设备存储计算机可读指令632,这些指令可对应于如上所述的图4和/或图5的示例计算机可读指令400和/或500。示例软件分发平台705的一个或多个服务器与网络710通信,该网络可对应于互联网和/或上述的示例网络626中的任何一者中的任何一个或多个。在一些示例中,作为商业交易的一部分,一个或多个服务器响应将软件传输给请求方的请求。对软件的交付、销售和/或许可的支付可由软件分发平台的一个或多个服务器处理和/或经由第三方支付实体来处理。这些服务器使得购买者和/或许可人能够从软件分发平台705下载计算机可读指令632。例如,可与图6的示例计算机可读指令632相对应的软件可被下载到示例处理器平台600,该平台要执行计算机可读指令632以实现容器层管理器205。在一些示例中,软件分发平台705的一个或多个服务器定期提供、传输和/或强制更新软件(例如,图6的示例计算机可读指令632),以确保改进、补丁、更新等等被分发并且在终端用户设备处被应用于软件。
图8是图示出由于使用本文公开的示例方法而得到的示例性能改善的图。图8表示执行一百六十八个并发功能(例如,容器)的直方图800。示例直方图800包括表示频率的垂直轴810,表示时间段的水平轴820,以及两个数据集830、840。第一数据集830表示被更频繁地执行并且因此导致更高的优先级别的功能(例如,容器)。第二数据集840表示被不那么频繁地执行(例如,与第一数据集表示的功能相比)并且因此导致更低的优先级别的功能(例如,容器)。一般来说,具有更高优先级别的功能表现出更快的执行。
从上述内容将会明白,已经公开了使得能够将容器高效地加载到操作存储器中以便执行的示例方法、装置和制品。本文公开的示例方法使得容器映像的各部分能够被存储在具有不同性能特性的单独存储器中,并且因此使得能够以优先排序的方式加载容器的立即执行所需要的容器映像的部分。这样的优先排序使得这种容器的加载和/或执行时间得到改善。所公开的方法、装置和制品通过使得映像能够被以更高效的方式加载到操作存储器中以便执行而改善了使用计算设备的效率。公开的方法、装置和制品因此针对的是计算机的功能的一项或多项改进。
虽然本文公开了某些示例方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有方法、装置和制品。
本文公开了用于容器映像的加载的示例方法、装置、系统和制品。进一步示例及其组合包括以下项:
示例1包括一种用于管理容器映像的装置,该装置包括:优先排序器,来确定容器要被执行的优先级别;容器控制器,来为所述容器的第一组层确定第一预期位置,所述容器控制器为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;容器加载器,来从所述第一预期位置挂载所述第一组层;以及容器执行器,来基于挂载的第一组层来发起所述容器的执行。
示例2包括如示例1所述的装置,还包括容器压缩器,来使用包括所述地标的压缩格式来构建所述容器的映像。
示例3包括如示例1所述的装置,其中所述容器控制器将所述第一组层从容器注册表拉取到所述第一预期位置,所述容器控制器将所述第二组层从所述容器注册表拉取到所述第二预期位置。
示例4包括如示例1所述的装置,其中所述容器执行器在所述容器加载器挂载所述第二组层之前基于所述第一组层来触发所述容器的执行。
示例5包括如示例1所述的装置,其中所述第一预期位置识别第一存储设备。
示例6包括如示例5所述的装置,其中所述第一存储设备是利用动态随机访问存储器来实现的。
示例7包括如示例5所述的装置,其中所述第二预期位置识别与所述第一存储设备不同的第二存储设备。
示例8包括如示例7所述的装置,其中所述第二存储设备是由持久性存储器来实现的。
示例9包括至少一个包括指令的非暂态计算机可读介质,所述指令当被执行时,使得至少一个处理器至少执行以下操作:确定容器要被执行的优先级别;为所述容器的第一组层确定第一预期位置;为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;从所述第一预期位置挂载所述第一组层;并且基于所述第一组层来发起所述容器的执行。
示例10包括如示例9所述的至少一个非暂态计算机可读介质,其中所述指令当被执行时,使得所述至少一个处理器使用包括地标的压缩格式来构建所述容器的映像。
示例11包括如示例9所述的至少一个非暂态计算机可读介质,其中所述指令当被执行时,使得所述至少一个处理器响应于对所述第一组层不存在于所述第一预期位置中的第一确定而将所述第一组层从容器注册表拉取到所述第一预期位置,并且响应于对所述第二组层不存在于所述第二预期位置中的第二确定而将所述第二组层从所述容器注册表拉取到所述第二预期位置。
示例12包括如示例9所述的至少一个非暂态计算机可读介质,其中所述指令当被执行时,使得所述至少一个处理器在基于所述第一组层发起所述容器的执行之后从所述第二预期位置挂载所述第二组层。
示例13包括如示例9所述的至少一个非暂态计算机可读介质,其中所述第一预期位置识别第一存储设备。
示例14包括如示例13所述的至少一个非暂态计算机可读介质,其中所述第一存储设备是利用动态随机访问存储器来实现的。
示例15包括如示例13所述的至少一个非暂态计算机可读介质,其中所述第二预期位置识别与所述第一存储设备不同的第二存储设备。
示例16包括如示例15所述的至少一个非暂态计算机可读介质,其中所述第二存储设备是持久性存储器。
示例17包括一种用于管理容器映像的方法,该方法包括:确定容器要被执行的优先级别;为所述容器的第一组层确定第一预期位置;通过利用处理器执行指令,为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的;从所述第一预期位置挂载所述第一组层;并且基于所述第一组层来发起所述容器的执行。
示例18包括如示例17所述的方法,还包括使用包括地标的压缩格式来构建所述容器的映像。
示例19包括如示例17所述的方法,还包括响应于对所述第一组层不存在于所述第一预期位置中的第一确定而将所述第一组层从容器注册表拉取到所述第一预期位置,并且响应于对所述第二组层不存在于所述第二预期位置中的第二确定而将所述第二组层从所述容器注册表拉取到所述第二预期位置。
示例20包括如示例17所述的方法,还包括在基于所述第一组层发起所述容器的执行之后从所述第二预期位置挂载所述第二组层。
示例21包括一种用于管理容器映像的装置,该装置包括:用于优先排序的装置,来确定容器要被执行的优先级别;用于控制的装置,来为所述容器的第一组层确定第一预期位置,所述用于控制的装置为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;用于加载的装置,来从所述第一预期位置挂载所述第一组层;以及用于执行的装置,来基于挂载的第一组层来发起所述容器的执行。
示例22包括如示例21所述的装置,还包括用于压缩的装置,来使用包括所述地标的压缩格式来构建所述容器的映像。
示例23包括如示例21所述的装置,其中所述用于控制的装置将所述第一组层从容器注册表拉取到所述第一预期位置,所述用于控制的装置将所述第二组层从所述容器注册表拉取到所述第二预期位置。
示例24包括如示例21所述的装置,其中所述用于执行的装置在所述用于加载的装置挂载所述第二组层之前基于所述第一组层来触发所述容器的执行。
示例25包括如示例21所述的装置,其中所述第一预期位置识别第一存储设备。
示例26包括如示例25所述的装置,其中所述第一存储设备是利用动态随机访问存储器来实现的。
示例27包括如示例25所述的装置,其中所述第二预期位置识别与所述第一存储设备不同的第二存储设备。
示例28包括如示例27所述的装置,其中所述第二存储设备是由持久性存储器来实现的。
特此通过引用将所附权利要求并入到这个“具体实施方式”部分中,其中每个权利要求独立作为本公开的一个单独实施例。

Claims (25)

1.一种用于管理容器映像的装置,该装置包括:
优先排序器,来确定容器要被执行的优先级别;
容器控制器,来为所述容器的第一组层确定第一预期位置,所述容器控制器为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;
容器加载器,来从所述第一预期位置挂载所述第一组层;以及
容器执行器,来基于挂载的第一组层来发起所述容器的执行。
2.如权利要求1所述的装置,还包括容器压缩器,来使用包括所述地标的压缩格式来构建所述容器的映像。
3.如权利要求1所述的装置,其中所述容器控制器将所述第一组层从容器注册表拉取到所述第一预期位置,所述容器控制器将所述第二组层从所述容器注册表拉取到所述第二预期位置。
4.如权利要求1所述的装置,其中所述容器执行器在所述容器加载器挂载所述第二组层之前基于所述第一组层来触发所述容器的执行。
5.如权利要求1-4中任一项所述的装置,其中所述第一预期位置识别第一存储设备。
6.如权利要求5所述的装置,其中所述第一存储设备是利用动态随机访问存储器来实现的。
7.如权利要求5所述的装置,其中所述第二预期位置识别与所述第一存储设备不同的第二存储设备。
8.如权利要求7所述的装置,其中所述第二存储设备是由持久性存储器来实现的。
9.包括指令的至少一个计算机可读介质,所述指令当被执行时,使得至少一个处理器至少执行以下操作:
确定容器要被执行的优先级别;
为所述容器的第一组层确定第一预期位置;
为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;
从所述第一预期位置挂载所述第一组层;并且
基于所述第一组层来发起所述容器的执行。
10.如权利要求9所述的至少一个计算机可读介质,其中所述指令当被执行时,使得所述至少一个处理器使用包括地标的压缩格式来构建所述容器的映像。
11.如权利要求9所述的至少一个计算机可读介质,其中所述指令当被执行时,使得所述至少一个处理器执行以下操作:
响应于对所述第一组层不存在于所述第一预期位置中的第一确定而将所述第一组层从容器注册表拉取到所述第一预期位置;并且
响应于对所述第二组层不存在于所述第二预期位置中的第二确定而将所述第二组层从所述容器注册表拉取到所述第二预期位置。
12.如权利要求9所述的至少一个计算机可读介质,其中所述指令当被执行时,使得所述至少一个处理器在基于所述第一组层发起所述容器的执行之后从所述第二预期位置挂载所述第二组层。
13.如权利要求9-12所述的至少一个计算机可读介质,其中所述第一预期位置识别第一存储设备。
14.如权利要求13所述的至少一个计算机可读介质,其中所述第一存储设备是利用动态随机访问存储器来实现的。
15.如权利要求13所述的至少一个计算机可读介质,其中所述第二预期位置识别与所述第一存储设备不同的第二存储设备。
16.如权利要求15所述的至少一个计算机可读介质,其中所述第二存储设备是持久性存储器。
17.一种用于管理容器映像的方法,该方法包括:
确定容器要被执行的优先级别;
为所述容器的第一组层确定第一预期位置;
通过利用处理器执行指令,为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的;
从所述第一预期位置挂载所述第一组层;并且
基于所述第一组层来发起所述容器的执行。
18.如权利要求17所述的方法,还包括使用包括地标的压缩格式来构建所述容器的映像。
19.如权利要求17所述的方法,还包括:
响应于对所述第一组层不存在于所述第一预期位置中的第一确定而将所述第一组层从容器注册表拉取到所述第一预期位置;并且
响应于对所述第二组层不存在于所述第二预期位置中的第二确定而将所述第二组层从所述容器注册表拉取到所述第二预期位置。
20.如权利要求17所述的方法,还包括在基于所述第一组层发起所述容器的执行之后从所述第二预期位置挂载所述第二组层。
21.一种用于管理容器映像的装置,该装置包括:
用于优先排序的装置,来确定容器要被执行的优先级别;
用于控制的装置,来为所述容器的第一组层确定第一预期位置,所述用于控制的装置为所述容器的第二组层确定第二预期位置,所述第一预期位置和所述第二预期位置是基于所确定的优先级别来确定的,所述第二组层在映像中由地标与所述第一组层分离;
用于加载的装置,来从所述第一预期位置挂载所述第一组层;以及
用于执行的装置,来基于挂载的第一组层来发起所述容器的执行。
22.如权利要求21所述的装置,还包括用于压缩的装置,来使用包括所述地标的压缩格式来构建所述容器的映像。
23.如权利要求21所述的装置,其中所述用于控制的装置将所述第一组层从容器注册表拉取到所述第一预期位置,所述用于控制的装置将所述第二组层从所述容器注册表拉取到所述第二预期位置。
24.如权利要求21所述的装置,其中所述用于执行的装置在用于加载的装置挂载所述第二组层之前基于所述第一组层来触发所述容器的执行。
25.如权利要求21-24中任一项所述的装置,其中所述第一预期位置识别第一存储设备。
CN202111371310.0A 2020-12-23 2021-11-18 用于容器映像的加载的方法和装置 Pending CN114661369A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/133,015 US20210208863A1 (en) 2020-12-23 2020-12-23 Methods and apparatus for loading of a container image
US17/133,015 2020-12-23

Publications (1)

Publication Number Publication Date
CN114661369A true CN114661369A (zh) 2022-06-24

Family

ID=76654087

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111371310.0A Pending CN114661369A (zh) 2020-12-23 2021-11-18 用于容器映像的加载的方法和装置

Country Status (6)

Country Link
US (1) US20210208863A1 (zh)
EP (1) EP4020197B1 (zh)
JP (1) JP2022100244A (zh)
KR (1) KR20220091346A (zh)
CN (1) CN114661369A (zh)
TW (1) TW202225963A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924845A (zh) * 2022-07-21 2022-08-19 合肥中科类脑智能技术有限公司 适用于边缘ai场景的镜像延迟加载方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582513B2 (en) * 2013-12-08 2017-02-28 Microsoft Technology Licensing, Llc Accessing data in a compressed container through dynamic redirection
US10659533B1 (en) * 2017-04-26 2020-05-19 EMC IP Holding Company LLC Layer-aware data movement control for containers
US10956222B2 (en) * 2017-05-04 2021-03-23 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a scheduler and workload manager with dynamic workload termination based on cost-benefit analysis
US11775475B2 (en) * 2019-03-05 2023-10-03 Microsoft Technology Licensing, Llc Deferred path resolution during container deployment
CN110119377B (zh) * 2019-04-24 2021-01-15 华中科技大学 面向Docker容器的在线迁移系统实现和优化方法
US11966769B2 (en) * 2019-05-23 2024-04-23 Microsoft Technology Licensing, Llc Container instantiation with union file system layer mounts

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924845A (zh) * 2022-07-21 2022-08-19 合肥中科类脑智能技术有限公司 适用于边缘ai场景的镜像延迟加载方法及系统

Also Published As

Publication number Publication date
KR20220091346A (ko) 2022-06-30
US20210208863A1 (en) 2021-07-08
JP2022100244A (ja) 2022-07-05
EP4020197A1 (en) 2022-06-29
EP4020197B1 (en) 2023-10-11
TW202225963A (zh) 2022-07-01

Similar Documents

Publication Publication Date Title
US20240048631A1 (en) Demand resources
US9880824B2 (en) On demand resources
US10656845B2 (en) System and method for managing container image
US10860380B1 (en) Peripheral device for accelerating virtual computing resource deployment
JP2011076605A (ja) 仮想マシン・イメージの実行方法及びシステム
US11586672B2 (en) Remote virtualized asset delivery and local provisioning
JP6188713B2 (ja) 自律ネットワーク・ストリーミング
JP2022076475A (ja) コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開)
US11029932B2 (en) Hydration of applications
US9594782B2 (en) Hierarchical file block variant store apparatus and method of operation
EP4020197B1 (en) Methods and apparatus for loading of a container image
US10417010B2 (en) Disk sector based remote storage booting
US11861402B2 (en) Methods and apparatus for tenant aware runtime feature toggling in a cloud environment
US11216286B2 (en) Method and device for the accelerated execution of applications
CN107667343B (zh) 用于加载按需加载资源的系统和方法
US11323331B2 (en) Cloud server and operating method of the same
CN114138451A (zh) 集群部署方法、装置、磁盘分配方法、电子设备和介质
CN114911574A (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