CN114546583A - 容器化的计算环境 - Google Patents
容器化的计算环境 Download PDFInfo
- Publication number
- CN114546583A CN114546583A CN202111385841.5A CN202111385841A CN114546583A CN 114546583 A CN114546583 A CN 114546583A CN 202111385841 A CN202111385841 A CN 202111385841A CN 114546583 A CN114546583 A CN 114546583A
- Authority
- CN
- China
- Prior art keywords
- command
- stateless
- commands
- image
- computer
- 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
- 238000000034 method Methods 0.000 claims abstract description 80
- 238000004590 computer program Methods 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 49
- 230000004044 response Effects 0.000 claims description 16
- 238000004458 analytical method Methods 0.000 claims description 12
- 238000010276 construction Methods 0.000 abstract description 12
- 238000013459 approach Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000007726 management method Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- XQMVBICWFFHDNN-UHFFFAOYSA-N 5-amino-4-chloro-2-phenylpyridazin-3-one;(2-ethoxy-3,3-dimethyl-2h-1-benzofuran-5-yl) methanesulfonate Chemical compound O=C1C(Cl)=C(N)C=NN1C1=CC=CC=C1.C1=C(OS(C)(=O)=O)C=C2C(C)(C)C(OCC)OC2=C1 XQMVBICWFFHDNN-UHFFFAOYSA-N 0.000 description 1
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了用于容器化的计算环境的方法、计算机程序产品和系统。构建实现改进先前构建的镜像层的利用的镜像。一种镜像构建系统在命令使用之前评估它们,并且区分有状态和无状态命令。采用这种方法能够使得无状态命令被标识(例如,标记),从而使得镜像构建系统能够以与有状态命令不同的方式处置无状态命令。这使得能够重新使用高速缓存的/存储的镜像层,从而通过避免创建新的镜像层来减小镜像大小。
Description
背景技术
本发明一般涉及计算环境,尤其涉及用于容器化计算环境的方法。本发明还涉及一种包括计算机可读程序代码的计算机程序产品,该计算机可读程序代码使得处理系统的处理器能够实现这种方法。本发明还涉及用于针对容器化计算环境构建镜像的系统。
操作系统级虚拟化已经广泛用于云计算和平台即服务(PaaS)框架中。操作系统级虚拟化是一种服务器虚拟化方法,其中操作系统内核允许多个隔离的用户空间实例(被称为容器)。在LINUX操作系统上,在来自内核名字空间和c组机制的支持下,诸如Docker和LXC的新兴容器解决方案已经吸引了越来越多的注意力,并且当前正在快速开发。(注意:术语“LINUX”、“DOCKER”和/或“LXC”可以受全世界各种管辖范围内的商标权的支配,并且在此仅参考由标记适当命名的产品或服务来使用,其中该标记的命名程度使得可以存在这种商标权)。
与传统虚拟机相比较,容器使用更小的镜像大小、更快地启动并且花费更少的资源(例如,存储器、处理时钟周期),因此使得容器成为轻量且快速的虚拟化解决方案。
容器是镜像的运行实例。这种镜像通常被构造为层的链。每个新的修改被表示为一个新层,被添加到其父(基)层的顶部。针对新的修改(例如,由命令引起的)创建新的镜像层可以导致大的镜像大小。
发明内容
在本发明的一个方面,一种用于针对容器化计算环境构建镜像的方法、计算机程序产品和系统包括:(i)分析包括用于构建镜像的一个或多个指令的命令,以确定命令是无状态命令还是有状态命令;以及(ii)基于分析的结果,将标识符与命令相关联,该标识符被配置为指示命令是有状态或是无状态。
根据本发明的一个方面,提供了一种处理用于针对容器化计算环境构建镜像的命令的计算机实现的方法。该方法包括分析包括用于构建镜像的一个或多个指令的命令,以确定该命令是无状态命令或是有状态命令。基于分析的结果,标识符与命令相关联,该标识符被配置为指示命令是有状态或是无状态。
根据本发明的另一方面,提供了一种用于针对容器化计算环境构建镜像的计算机实现的方法。该方法包括获取包括用于构建镜像的一个或多个指令的命令集,该命令集中的命令具有指示该命令是有状态或无状态的相关联的标识符。对于该命令,基于指示该命令是有状态或无状态的相关联的标识符来控制先前构建的镜像层的重新使用。
根据本发明的另一实施例,提供了一种用于处理用于构建用于容器化计算环境的镜像的命令的计算机程序产品,该计算机程序产品包括具有体现于其中的程序指令的计算机可读存储介质,该程序指令可由处理单元执行以使该处理单元在数据处理系统的至少一个处理器上执行时执行根据一个或多个提出的实施例的方法。
根据本发明的另一实施例,提供了一种用于构建用于容器化计算环境的镜像的计算机程序产品,该计算机程序产品包括具有与其一起实施的程序指令的计算机可读存储介质,该程序指令能够由处理单元执行以使该处理单元在数据处理系统的至少一个处理器上执行时执行根据一个或多个提出的实施例的方法。
根据本发明的又一方面,提供了一种处理系统,包括至少一个处理器和根据一个或多个实施例的计算机程序产品,其中至少一个处理器适于执行该计算机程序产品的计算机程序代码。
根据本发明的另一方面,提供了一种用于处理为容器化计算环境构建镜像的命令的系统。该系统包括分析组件,其被配置为分析包括用于构建镜像的一个或多个指令的命令,以确定该命令是无状态命令还是有状态命令。该系统还包括编辑器组件,其被配置为基于分析的结果将标识符与命令相关联,该标识符被配置为指示命令是有状态或是无状态。
根据本发明的又一方面,提供了一种用于为容器化计算环境构建镜像的镜像构建系统。该镜像构建系统包括接口组件,该接口组件被配置为获得包括用于构建镜像的一个或多个指令的命令集,该命令集中的命令具有指示该命令是有状态或无状态的相关联的标识符。该镜像构建系统还包括控制器,该控制器被配置为针对该命令,基于指示该命令是有状态或无状态的相关联的标识符来控制先前构建的镜像层的重新使用。
附图说明
现在将参考以下附图仅通过示例的方式描述本发明的实施例,其中:
图1示出了根据其实现本发明的一个或多个实施例的容器托管环境;
图2是示出根据示例性传统Docker文件实现的构建过程的表;
图3是示出根据提出的实施例的根据示例性(经修改的)Docker文件实现的构建过程的表;
图4描绘了根据提出的实施例的方法的流程图;
图5描绘了根据提出的实施例的系统的简化框图;
图6示出云系统节点;
图7示出了根据实施例的云计算环境;以及
图8示出了根据实施例的云抽象模式层。
具体实施方式
构建能够改进先前构建的镜像层的利用的镜像。一种镜像构建系统在命令使用之前评估它们,并且区分有状态和无状态命令。采用这种方法使得能够标识(例如,标记)无状态命令,从而使得镜像构建系统能够以与有状态命令不同的方式处置无状态命令。这使得能够重新使用高速缓存/存储的镜像层,从而通过避免创建新的镜像层来减小镜像大小。
本发明寻求提供用于构建镜像的概念,其使得能够改进对先前构建的镜像层(例如,经由镜像高速缓存存储器可用)的利用,从而潜在地避免创建新的镜像层,否则将例如增加镜像大小。
实施例可以与诸如Docker构建系统的传统/现有镜像构建系统结合使用。这样,实施例可以集成到传统系统中,以便改进和/或扩展它们的功能和能力。因此,所提出的实施例可以提供改进的(例如,减小的大小和/或更有效的)容器化计算环境。该系统可以适于预处理容器镜像构建命令,以便提供增强的/增强的命令,该命令使得能够在镜像群上实现改进的镜像高速缓存效用。
所提出的系统可以被并入到现有/传统的镜像构建系统中。因此,可以提出一种镜像构建系统,其在命令使用之前评估命令,并且区分有状态和无状态命令。采用这种方法可以使得能够标识(例如,标记)无状态命令,从而使得镜像构建系统能够以与有状态命令不同的方式处置无状态命令。这可以例如使得能够重新使用高速缓存的/存储的镜像层,从而通过避免创建新的镜像层来减小镜像大小。
应当理解,附图仅仅是示意性的,并且不是按比例绘制的。还应当理解,在所有附图中使用相同的附图标记来表示相同或相似的部件。
在本申请的上下文中,其中本发明的实施例构成方法,应当理解,这样的方法是用于由计算机执行的过程,即,是计算机可实现的方法。因此,该方法的各个步骤反映了计算机程序的各个部分,例如一个或多个算法的各个部分。
此外,在本申请的上下文中,(处理)系统可以是适于执行本发明的方法的一个或多个实施例的单个设备或分布式设备的集合。例如,系统可以是个人计算机(PC)、服务器或经由诸如局域网、因特网等网络连接的PC和/或服务器的集合,以便协作地执行本发明的方法的至少一个实施例。
可以参考示例性云基础设施、数据储存库、数据中心、数据处理系统、计算系统、数据存储系统和相关联的服务器、计算机、存储单元和设备以及其他处理设备来描述说明性实施例。然而,应当理解,本发明的实施例不限于与所示的特定说明性系统和设备配置一起使用。此外,如本文所使用的短语“云环境”、“云计算平台”、“云基础设施”、“数据储存库”、“数据中心”、“数据处理系统”、“计算系统”、“数据存储系统”、“数据库”等旨在被宽泛地解释,以便涵盖例如私有和/或公共云计算或存储系统,以及包括分布式虚拟基础设施的其他类型的系统。然而,给定实施例可以更一般地包括一个或多个处理设备的任何布置。
如上文在背景技术部分中所提及的,容器已经成为在云计算环境中托管应用程序(应用)的优于传统虚拟机的虚拟化选择。然而,现有的容器文件系统实现仍然面临各种挑战,包括容器镜像大小的管理。
为了解决上述和其它挑战,本发明的说明性实施例提供了用于改进(针对容器化的)镜像构建过程的概念。这样的概念可以实现对先前构建的镜像层(例如,经由镜像高速缓存存储器可用的)的改进的利用,从而潜在地避免创建新的镜像层,并且进而避免镜像大小的增加。具体地,所提出的概念是利用标识符(例如,标签、指示符、注释等)来增强镜像构建命令,以使得能够改进对先前镜像层(例如,来自所存储的镜像群)的利用。例如,标识符可以与无状态命令相关联,从而使镜像构建引擎能够清楚地区分有状态和无状态命令。
与常规的镜像构建系统(其不具有任何命令标识符)不同,所提出的实施例用标识符(例如,“提示”)来补充命令,这可以允许对有状态或无状态命令的更精细的控制。
“有状态命令”是指取决于(即,利用)先前或当前执行状态的命令。有状态命令因此取决于系统状态。这样,有状态命令跟踪之前的(先前的)执行状态。相反,“无状态命令”是指独立于当前执行状态的前者的命令。无状态命令因此是自包含的,即,包含在命令内的所有东西,并且在两个不同的阶段中被处置,即,“命令”和“响应”。因此,无状态命令不跟踪前者(先前)的执行状态。
对“镜像”的引用应当被认为是指可以被认为像是容器是其运行实例的静态文件的类似文件的实体。镜像通常被构造为层的链。由于容器是容器的运行实例,因此镜像可以另外被称为“容器镜像”,从而指示该镜像便于容器的创建。
在根据说明性实施例描述概念之前,将给出可以用来实现说明性实施例的容器系统的概述。
为了实现可移植性和可重新使用性,容器利用联合安装机构来构造和组合不同层以用于文件共享,而不是如传统虚拟机那样使用整个盘镜像文件。具体地,在容器初始化之后,容器联合将基本层(只读)和顶层(读写)安装在一起以构建根文件系统。在容器的生命周期期间,对根文件系统的所有修改以递增的方式被写在顶层上。提交操作使容器保存当前顶层,并且开始在所保存的顶层上的新层上写入,从而创建新的顶层。
如图1所示,容器集群100(例如Docker蜂群、Magnum和Kubernetes)包括主机102和集群控制器104。在云计算平台中,诸如图1所示的使用容器来托管应用的主机设备(主机)的集群被称为“容器托管环境”。主机102创建并且运行容器106,并且经由高速网络(由图1中的互连箭头表示)彼此连接。如上所述,在说明性实施例中,主机102创建一个或多个容器106以分别执行一个或多个容器化的有状态应用(即,在容器中执行并且跟踪前者(先前的)容器执行状态的应用)。集群控制器104负责管理容器主机102。例如,集群控制器104监视容器状态并且启动高可用性(HA)进程,并且执行用户命令,例如引起主机之间的容器迁移并且开始备份和恢复操作的命令。
运行(执行)容器从其容器镜像启动。在启动容器之前,主机需要从容器注册表获取对应的容器镜像。在Docker容器实现中,镜像被构造为层的链。每个新的修改被表示为一个新层,被添加到其父(基)层的顶部。
现在将描述可以提供改进的高速缓存利用的本发明的说明性实施例。
本发明的一些实施例针对被配置为区分有状态命令和无状态命令的镜像构建引擎,从而提供改进的容器层高速缓存可重新使用性。特别地,提出了通过将标识符(例如,提示、符号或特殊字符)与命令相关联来指示命令是有状态的还是无状态的。例如,标识符可以被放置在命令之前或与命令一起。
本发明的一些实施例涉及处理用于构建用于容器化计算环境的镜像(或“容器镜像”)的命令的概念。这可以允许命令被标识为有状态命令或无状态命令。这样,镜像构建引擎可以清楚地区分无状态和有状态命令,并且提高容器层高速缓存的可重新使用性。特别地,提出了使用标识符将允许镜像建立系统确定命令是无状态的还是有状态的。基于这样的确定,构建系统可以决定重新使用先前构建的镜像层。
本发明的一些实施例利用标签、提示或标识符来增强镜像构建命令,这些标签、提示或标识符使得能够在镜像的总体上实现更好的镜像高速缓存利用。这样的标签或标识符也可以被用于调试目的。
本发明的一些实施例针对预处理镜像构造命令的概念,其使得无状态命令能够与有状态命令清楚地区分开。作为示例,本发明的一些实施例可以被认为提供伴随命令的提示属性。这种提示可以在命令附近、之前、之内或旁边被提供。
示例性实施例可以提供一种处理用于构建用于容器化计算环境的镜像的命令的方法。在这样的示例性方法中,分析包括用于构建镜像的一个或多个指令的命令以确定该命令是无状态命令还是有状态命令。基于分析的结果,标识符与命令相关联,其中标识符被配置为指示命令是有状态或是无状态。
例如,将标识符与命令相关联可以包括将命令前缀或命令属性附加到命令以指示命令是无状态的。命令前缀或命令属性例如可以包括符号或注释串。这样,简单的、人类可读和/或计算机可读标识符可以被用于标识(例如,标记、突出显示或以其他方式标注)无状态命令,使得镜像构建引擎可以以例如可以产生提高的效率和/或减小的镜像大小的方式潜在地处置无状态命令。而且,使用简单的符号或字符串可以帮助降低实现的复杂度和/或成本。
分析命令可以包括:确定命令是否存在于先前镜像层中;响应于确定命令存在于先前层中,确定先前层中的命令的实例是否可以被重用;以及响应于确定先前层中的命令实例可以被重新使用,确定命令是有状态的。这样,实施例可以运行简单的检查来确定命令是否是无状态的,从而有助于减轻所提出的实施例的处理或资源需求。
本发明的一些实施例可以提供一种用于针对容器化计算环境构建镜像的方法。在这样的示例性方法中,获取包括用于构建镜像的一个或多个指令的命令集,其中命令集中的命令具有指示该命令是有状态或无状态的相关联的标识符。对于具有相关联的标识符的命令,基于指示该命令是有状态或无状态的相关联的标识符来控制先前构建的镜像层的重新使用。
在本发明的一些实施例中,控制先前构建的镜像层的重新使用可以包括:响应于与命令相关联的标识符指示命令是有状态的,重新使用先前构建的镜像层;以及响应于与命令相关联的标识符指示命令是无状态的,阻止使用先前构建的镜像层。因此,实施例可以使得镜像构建系统能够决定是否重新使用高速缓存的层或命令。这可以改进容器层高速缓存的可重新使用性,这可以产生更小的镜像大小、更好的高速缓存利用率和/或改进的性能。
在本发明的一些实施例中,控制先前构建的镜像层的重新使用可以包括:响应于与命令相关联的标识符指示命令是无状态的,忽略命令。因此,实施例可以提供在处理无状态命令方面具有灵活性的镜像构建系统。
本发明的一些实施例允许镜像构建引擎清楚地区别有状态和无状态命令,并且因此改善容器层高速缓存的可重新使用性。本发明的一些实施例特别有利于解决对镜像构建系统中的高效高速缓存利用的持续需要。
通过对本发明的一些实施例的进一步描述,现在将考虑镜像构建系统。镜像构建系统遵循在配置文件中定义的命令集(即,指令)。当镜像构建系统遇到下一命令时,它运行检查以确定该命令是否存在于任何先前的镜像层中,并且在层不能被重新使用的情况下,它附加地可以检查相关联的无状态命令标识符(其中该标识符指示该命令可以被忽略并且不影响层结构)。
无状态命令标识符可以作为注释的一部分被提供,或者可以是任何种类的附加命令属性。例如,无状态命令的标识符可以包括注释,诸如:“#+hint stateless…(提示无状态)#”,在命令定义之前。
根据另一示例,无状态命令的标识符可以包括作为前缀添加到命令定义(即,紧接在命令定义之前提供)的“*”(星号)字符,从而产生以下形式的命令定义:“*<COMMAND><ARGUMENTS>”。
根据又一示例,无状态命令的标识符可以包括“!”(感叹号)字符,其作为前缀被添加到命令定义(即,紧接在命令定义之前提供),从而产生以下形式的命令定义:“!<COMMAND><ARGUMENTS>”。
然而,应当理解,存在许多其他可能的将标识符与命令相关联的方式。
随后,在镜像创建过程期间,镜像创建系统可以决定考虑或忽略与命令相关联的无状态命令标识符。
容器层可以被标记为它具有某些属性(无状态、有状态等)。以这种方式构建的容器层可以在构建从这些层导出的或基于相同配置的其他镜像时被重新使用。
此外,命令可以被扩展为多个子命令(例如,`/bin/sh-c`解释器命令),其中每个子命令可以具有相关联的标识符。在这种情况下,子命令在链中越深,其具有在顶层命令上的优先级越高。
所标识的无状态命令(即,具有指示该命令是无状态的相关联标识符的无状态命令)可以结束,从而产生”短暂层“。
通过进一步示范本发明的一些实施例,将描述传统Docker构建系统的示例(参考图2),并且随后将描述根据所提出的实施例修改的这种系统的示例(参考图3)。
常规Docker构建系统的示例,并且更具体地,常规Docker文件的示例性命令集可以如下:
FFROM busybox
ARG UNIQUE_ARG=world
RUN echo Hello${UNIQUE_ARG}
COPY./files
参考图2,示出了根据上述传统Docker文件实现的针对命令行“RUN echo Hello${UNIQUE_ARG}”中的第一和第二自变量的构建过程的表格。对于第二自变量,来自构建过程的用于第一自变量的高速缓存是可用的。
图2示出了描述根据本发明实施例的第一方法的流程图250。图3示出了用于执行流程图250的方法步骤中的至少一些的程序300。现在将在以下段落的过程中,广泛参考图2(用于方法步骤框)和图3(用于软件框)来讨论该方法和相关联的软件。
从图2的第二(右手)列的第二行(第二框)可以看出,传统的构建过程没有高速缓存重新使用。
相反,现在将考虑根据所提出的实施例的Docker构建系统的示例。更具体地说,根据所提出的实施例的(经修改的)Docker文件的示例性命令集可以如下:
FROM busybox
ARG UNIQUE_ARG=world
#+hint stateless
RUN echo Hello${UNIQUE_ARG}
COPY./files
在根据所提出的实施例的上述(经修改的)Docker文件中,第三行的命令(“RUNecho Hello${UNIQUE_ARG}”)之前是无状态的“提示”。即,标识符与第三命令相关联,其中该标识符被提供为紧接在包含第三命令的行之前的行中的注释(或“提示”)。注释指示下一行(命令)是无状态的。
参考图3,示出了根据上述(经修改的)Docker文件实现的针对命令行“RUN echoHello${UNIQUE_ARG}”中的第一和第二自变量的构建过程的表。对于第二自变量,来自构建过程的用于第一自变量的高速缓存是可用的。
从图3的第二(右手)列的第二行(第二框)可以看出,Docker构造系统根据标识符确定第三命令。响应于该确定,Docker构建系统利用来自高速缓存的原始层。
因此,从以上描述中,将理解,根据所提出的实施例的具有标记指令的镜像构建系统可以实现改进的容器镜像高速缓存利用。这可以通过标识不影响最终容器镜像内容的命令并且然后避免为这样的命令创建新的容器镜像层(否则将增加容器镜像大小)来实现。本发明的一些实施例可以被认为是区分有状态和无状态命令以提高高速缓存的可重新使用性,并且可以通过将标识符与命令相关联以指示它们是否是无状态来实现这种有状态和无状态命令之间的区分。
现在参考图4,描述了根据本发明实施例的方法的流程图。该方法包括两个(子)方法:第一(子)方法400包括根据本发明实施例的处理用于构建镜像的命令的方法;而第二(子)方法450包括用于构建容器镜像(使用处理的命令)的方法。即,图4中描述的方法实现了(预)处理命令以识别无状态命令的方法,随后是所提出的用于根据(预)处理的命令构建镜像的方法。
第一(子)方法400用于处理用于为容器化计算环境构建镜像的命令集。每个命令包括用于构建容器镜像的一个或多个指令。
在步骤410中,分析每个命令以确定它是无状态命令还是有状态命令。举例来说,分析命令的过程包括:确定命令是否存在于先前镜像层中;响应于确定命令存在于先前层中,确定先前层中的命令的实例是否可以被重新使用;以及响应于确定先前层中的命令实例可以被重新使用,确定命令是有状态的。
在步骤420中,基于来自步骤410的分析结果,将相应的标识符与已经被确定为无状态的每个命令相关联。在该示例中,标识符包括字符/符号(诸如“!”的“*”),并且通过将字符/符号插入在命令之前(在相同的代码/命令行上),标识符与无状态命令相关联。这样,无状态命令由相应的标识符前缀来标识,该标识符前缀指示紧跟在该标识符前缀之后的命令是无状态命令。
将理解,作为完成第一(子)方法400以处理命令集合的结果,通过第一(子)方法提供新的(预)处理命令集。新的(预)处理的命令集包括一个或多个无状态命令,每个命令具有指示该命令的无状态性质的相关联的标识符。
将(预)处理命令的新集合提供给第二(子)方法450,以便使用(预)处理命令(来自第一子)方法400来构建容器镜像。
在步骤460中,例如经由通信接口获取(预)处理命令集合。如上所述,该集合中的一个或多个命令具有指示相关联的命令是无状态的相关联的标识符。
在步骤470中,对于每个命令,基于该命令是否具有指示该命令是无状态的相关联的标识符来控制先前构建的镜像层的(经由高速缓存存储器)重新使用。特别地,响应于与命令相关联的标识符指示命令是无状态的,防止使用先前构建的镜像层来响应命令。
现在参考图5,描述了根据所提出的实施例的系统500的简化框图。该方法包括两个(子)系统:第一(子)系统505包括根据所提出的实施例的用于处理用于构建镜像的命令的系统;并且第二(子)系统550包括根据本发明实施例的用于构建容器镜像(使用处理的命令)的镜像构建系统。即,图5中描绘的系统500结合了用于(预)处理命令以标识无状态命令的所提出的系统500,以及用于根据(预)处理的命令构建镜像的所提出的镜像构建系统550。
第一(子)系统505被配置成处理用于构建用于容器化计算环境的镜像的命令集。每个命令包括用于构建容器镜像的一个或多个指令。第一(子)系统505包括分析组件510和编辑器组件520。
分析组件510分析每个命令以确定它是无状态命令还是有状态命令。举例来说,分析命令的过程包括:确定命令是否存在于先前镜像层中;响应于确定命令存在于先前层中,确定先前层中的命令的实例是否可以被重新使用;以及响应于确定先前层中的命令实例可以被重新使用,确定命令是有状态的。
基于分析组件510的分析结果,编辑器组件将相应的标识符与已经被确定为无状态的每个命令相关联。在该示例中,标识符包括注释/提示串,并且通过在命令紧接前面的行中(在命令正上方的代码/命令行)插入注释/提示串,标识符与无状态命令相关联。这样,通过相应的标识符注释/提示来标识无状态命令,该相应的标识符注释/提示指示紧跟在注释/提示之后的命令是无状态命令。
将理解,作为处理命令集的结果,第一(子)系统505提供新的(预)处理命令集。(预)处理的命令的集合包括一个或多个无状态命令,每个命令具有指示命令的无状态性质的相关联的标识符。
将(预)处理命令的新集合提供给第二(子)系统550,以便使用(预)处理命令(来自第一子)系统505来构建容器镜像。第二(子)系统550包括接口组件560和控制器570。
接口组件560例如经由有线或无线通信链路来获取经(预)处理的命令集。如上所述,该组中的一个或多个命令具有指示相关联的命令是无状态的相关联的标识符。
对于每个命令,控制器基于命令是否具有指示命令是无状态的相关联的标识符来控制先前构建的镜像层的(经由高速缓存存储器)重新使用。特别地,响应于与命令相关联的标识符指示命令是无状态的,控制器阻止使用先前构建的镜像层来响应命令。
因此,从以上描述中,将理解,所提出的方法和系统提供了无状态命令和有状态命令之间的区分。基于这种区分,镜像构建系统/方法可以与有状态命令不同地处置无状态命令,从而提高高速缓存存储器的利用率。
本发明的一些实施例涉及一种用于为容器化计算环境构建镜像的计算机实现的方法,包括以下步骤:(i)获取包括用于构建镜像的一个或多个指令的命令集,其中命令集中的命令具有指示命令是有状态或无状态的相关联的标识符;以及(ii)对于命令,通过(a)响应于与命令相关联的标识符指示命令是有状态的,重新使用先前建立的镜像层,基于相关联的标识符指示命令是有状态的或无状态的,来控制先前建立的镜像层的重新使用;或者(b)响应于与命令相关联的标识符指示命令是无状态的,阻止使用先前构建的镜像层。
本发明的一些实施例忽略被标识为无状态的命令。
上述实施例仅包括用于指示命令是有状态还是无状态的标识符的有限示例集。然而,应当理解,所提出的概念可以被修改或修改以采用其它识别无状态(命令)的方式。
从以上描述中将显而易见的是,根据所提出的实施例的系统的全部或部分由云计算系统提供。此外,可以在混合云计算系统中提供或实现用于处理用于构建镜像的命令的系统。
参考以下关于云计算系统的描述,可以预先理解,尽管本公开包括关于云计算的详细描述,但本文中所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。云计算系统和环境的以下描述仅出于解释和理解的目的而作出。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供者的交互来快速供应和释放。该外部部署云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特性如下:按需自助:云消费者可以单方面地自动地根据需要提供诸如服务器时间和网络存储的计算能力,而不需要与服务的提供者进行人工交互。广域网接入:能力在网络上可用,并且通过促进由异构的薄或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。资源池化:供应商的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。快速弹性:在一些情况下,可以快速且弹性地提供快速向外扩展的能力和快速向内扩展的能力。对于消费者,可用于提供的能力通常看起来不受限制,并且可以在任何时间以任何数目购买。测量服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供者和消费者两者提供透明度。
服务模型如下:
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供者的应用。应用程序可通过诸如web浏览器(例如,基于web的电子邮件)等瘦客户机界面从各种客户机设备访问。消费者不管理或控制包括网络、服务器、操作系统、存储、或甚至个别应用能力的底层云基础结构,可能的例外是有限的用户专用应用配置设置。平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该消费者创建或获取的应用是使用由提供商支持的编程语言和工具创建的。消费者不管理或控制包括网络、服务器、操作系统或存储的底层云基础设施,但具有对部署的应用和可能的应用托管环境配置的控制。基础设施即服务(IaaS):提供给消费者的能力是提供处理、存储、网络和消费者能够部署和运行任意软件的其它基本计算资源,所述软件可以包括操作系统和应用。消费者不管理或控制底层云基础设施,但具有对操作系统的控制;存储、部署的应用以及可能对选择的联网组件(例如,主机防火墙)的有限控制。
部署模型如下:
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于建筑物内或建筑物外。社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内或场所外。公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。混合云:云基础设施是两个或更多云(私有、共同体或公共)的组合,所述云保持唯一实体,但是通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。云计算环境是面向服务的,其焦点在于无状态、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图6,示出了云计算节点的示例的示意图。云计算节点10仅是合适的云计算节点的一个示例,并且不旨在对本文描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,云计算节点10能够被实现和/或执行上文阐述的任何功能。
在云计算节点10中,存在计算机系统/服务器12,其可与许多其他通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器12一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图6所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移除和不可移除介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可以被提供用于从不可移除、非易失性磁介质(未示出,并且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移除、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移除、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本发明的实施例的功能。
具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可以作为示例而非限制存储在存储器28中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每个可以包括联网环境的实现。程序模块42通常执行这里描述的本发明实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14通信,诸如键盘、指示设备、显示器24等;一个或多个设备,其使得用户能够与计算机系统/服务器12交互;和/或任何使计算机系统/服务器12能够与一个或多个其它计算设备通信的设备(例如网卡、调制解调器等)。这种通信可以经由输入/输出(I/O)接口22发生,然而,计算机系统/服务器12可以经由网络适配器20与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它组件通信,应当理解,尽管未示出,其它硬件和/或软件组件可以与计算机系统/服务器12结合使用,示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
现在参考图7,描绘了说明性云计算环境或云计算系统50。在实施例中,这可以等同于例如图1中所描绘的云计算系统。如图所示,云计算环境50包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点10,所述本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境50提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图7中所示的计算设备54A-N的类型仅旨在说明,并且计算节点10和云计算环境50可以通过任何类型的网络和/或网络可寻址连接(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图8,示出了由云计算环境50(图7)提供的一组功能抽象层。应当预先理解,图8中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和相应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括大型机,在一个示例中是系统;基于RISC(精简指令集计算机)架构的服务器,在一个示例中是系统;IBM系统;IBM系统;存储设备;网络和网络组件。软件组件的示例包括网络应用服务器软件,在一个示例中为应用服务器软件;以及数据库软件,在一个实例中为IBM DB2数据库软件。(IBM、zSeries、pSeries、xSeries、BladeCerter、WebSphere和DB2是在全世界许多管辖区注册的国际商业机器公司的商标)。
虚拟化层62提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器;虚拟存储;虚拟网络,包括虚拟专用网络;虚拟应用和操作系统;以及虚拟客户端。
在一个示例中,管理层64可以提供以下描述的功能。资源供应提供了对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价提供了在云计算环境中利用资源时的成本跟踪,以及用于消耗这些资源的开账单或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户为消费者和系统管理员提供对云计算环境的访问。服务级别管理提供云计算资源分配和管理,使得满足所需的服务级别。镜像构建提供了根据如上详述的所提出的概念的集装箱镜像构建。
工作负载层66提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制和导航;软件开发和生命周期管理;虚拟教室教育传送;数据分析处理;交易处理;以及移动桌面。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、存储级存储器(SCM)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如其上记录有指令的打孔卡或凹槽中的凸起结构的机械编码设备,以及上述的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络,例如因特网、局域网、广域网和/或无线网络,下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言(例如Smalltalk、C++等)以及常规的过程式编程语言(例如“C”编程语言或类似的编程语言)。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。
在此参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,使得其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的(多个)逻辑功能的一个或多个可执行指令。在一些备选实现中,框中所提及的功能可不按图中所提及的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
Claims (9)
1.一种处理命令的计算机实现的方法,所述命令用于构建用于容器化计算环境的镜像,所述方法包括:
分析包括用于构建镜像的一个或多个指令的命令,以确定所述命令是无状态命令或是有状态命令;以及
基于所述分析的结果,将标识符与所述命令相关联,所述标识符被配置为指示所述命令有状态或者无状态。
2.根据权利要求1所述的方法,其中将标识符与所述命令相关联包括将命令前缀或命令属性附加到所述命令以指示所述命令无状态。
3.根据权利要求2所述的方法,其中所述标识符包括符号或注释串。
4.根据权利要求1所述的方法,其中分析命令包括:
确定所述命令是否存在于先前镜像层中;
响应于确定所述命令存在于先前层中,确定所述先前层中的所述命令的所述实例是否能够被重新使用;以及
响应于确定所述先前层中的所述命令的所述实例能够被重新使用,确定所述命令有状态。
5.根据权利要求4所述的方法,其中确定所述命令是否存在于所述先前镜像层中包括:
在高速缓存存储器中存储的镜像层数据中,针对所述命令进行搜索。
6.根据权利要求1所述的方法,其中所述命令是Docker构建系统的容器镜像构建命令。
7.一种用于处理命令的计算机程序产品,所述命令用于构建用于容器化计算环境的镜像,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令能够由处理单元执行以使所述处理单元执行根据权利要求1至6中任一项所述的方法的操作。
8.一种用于处理命令的计算机系统,所述命令用于构建用于容器化计算环境的镜像,所述计算机系统包括:
处理器集;以及
计算机可读存储介质,其中存储有程序指令;
其中:
所述程序指令在由所述处理器集执行时,使所述处理器集执行根据权利要求1至6中任一项所述的方法的操作。
9.一种用于处理命令的计算机系统,所述命令用于构建用于容器化计算环境的镜像,所述计算机系统包括用于执行根据权利要求1至6中任一项所述的方法的操作的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/102,470 US11573818B2 (en) | 2020-11-24 | 2020-11-24 | Containerized computing environments |
US17/102,470 | 2020-11-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546583A true CN114546583A (zh) | 2022-05-27 |
Family
ID=81658296
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111385841.5A Pending CN114546583A (zh) | 2020-11-24 | 2021-11-22 | 容器化的计算环境 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11573818B2 (zh) |
JP (1) | JP2022083436A (zh) |
CN (1) | CN114546583A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11995420B2 (en) * | 2021-08-19 | 2024-05-28 | Red Hat, Inc. | Generating a build process for building software in a target environment |
US20230315678A1 (en) * | 2022-03-29 | 2023-10-05 | International Business Machines Corporation | Storage driver for managing a multiple layer file system on the cloud |
US20240168743A1 (en) * | 2022-11-17 | 2024-05-23 | Capital One Services, Llc | Identifying deployed software packages in stateless containers |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107111519A (zh) * | 2014-11-11 | 2017-08-29 | 亚马逊技术股份有限公司 | 用于管理和调度容器的系统 |
CN109725980A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 生成镜像标签的方法、设备以及计算机可读介质 |
US20190243628A1 (en) * | 2018-02-08 | 2019-08-08 | Red Hat, Inc. | Container image building using shared resources |
US20190324786A1 (en) * | 2018-04-23 | 2019-10-24 | Hewlett Packard Enterprise Development Lp | Containerized application deployment |
US20200034258A1 (en) * | 2018-07-26 | 2020-01-30 | International Business Machines Corporation | Container replication and failover orchestration in distributed computing enviroments |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8091094B2 (en) * | 2007-10-10 | 2012-01-03 | Sap Ag | Methods and systems for ambistateful backend control |
US9336060B2 (en) * | 2011-06-17 | 2016-05-10 | Microsoft Technology Licensing, Llc | Middleware services framework for on-premises and cloud deployment |
US9965261B2 (en) | 2015-08-18 | 2018-05-08 | International Business Machines Corporation | Dependency-based container deployment |
US10169347B2 (en) | 2015-09-08 | 2019-01-01 | International Business Machines Corporation | Layer identification and dependency analysis for management of images |
US10469574B1 (en) | 2016-04-20 | 2019-11-05 | EMC IP Holding Company LLC | Incremental container state persistency and replication for containerized stateful applications |
US20180088926A1 (en) | 2016-09-27 | 2018-03-29 | Ca, Inc. | Container image management using layer deltas |
US10528337B1 (en) | 2018-10-24 | 2020-01-07 | International Business Machines Corporation | Container image layer reordering |
CN112955869A (zh) * | 2018-11-08 | 2021-06-11 | 英特尔公司 | 功能即服务(faas)系统增强 |
US11537523B2 (en) * | 2019-07-31 | 2022-12-27 | Red Hat, Inc. | Command result caching for building application container images |
-
2020
- 2020-11-24 US US17/102,470 patent/US11573818B2/en active Active
-
2021
- 2021-11-22 CN CN202111385841.5A patent/CN114546583A/zh active Pending
- 2021-11-22 JP JP2021189720A patent/JP2022083436A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107111519A (zh) * | 2014-11-11 | 2017-08-29 | 亚马逊技术股份有限公司 | 用于管理和调度容器的系统 |
CN109725980A (zh) * | 2017-10-27 | 2019-05-07 | 伊姆西Ip控股有限责任公司 | 生成镜像标签的方法、设备以及计算机可读介质 |
US20190243628A1 (en) * | 2018-02-08 | 2019-08-08 | Red Hat, Inc. | Container image building using shared resources |
US20190324786A1 (en) * | 2018-04-23 | 2019-10-24 | Hewlett Packard Enterprise Development Lp | Containerized application deployment |
US20200034258A1 (en) * | 2018-07-26 | 2020-01-30 | International Business Machines Corporation | Container replication and failover orchestration in distributed computing enviroments |
Non-Patent Citations (2)
Title |
---|
AMIT WARKE: "Storage Service Orchestration with Container Elasticity", 《2018 IEEE 4TH INTERNATIONAL CONFERENCE ON COLLABORATION AND INTERNET COMPUTING 》, 18 November 2018 (2018-11-18) * |
耿朋;陈伟;魏峻;: "面向Dockerfile的容器镜像构建工具", 计算机系统应用, no. 11, 15 November 2016 (2016-11-15) * |
Also Published As
Publication number | Publication date |
---|---|
US11573818B2 (en) | 2023-02-07 |
JP2022083436A (ja) | 2022-06-03 |
US20220164209A1 (en) | 2022-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11237812B2 (en) | Deploying an application in a cloud computing environment | |
US10324754B2 (en) | Managing virtual machine patterns | |
US9912760B2 (en) | Dynamically generating solution stacks | |
CN114546583A (zh) | 容器化的计算环境 | |
US11429791B2 (en) | Automated application composer with natural language processing | |
US9590859B2 (en) | Discovering resources of a distributed computing environment | |
CN114341847B (zh) | 对容器的外部操作与突变事件的对应关系 | |
US11250204B2 (en) | Context-aware knowledge base system | |
US11061739B2 (en) | Dynamic infrastructure management and processing | |
US10452454B1 (en) | Instructing the use of application programming interface commands in a runtime environment | |
US11360973B2 (en) | Generating multilingual queries | |
US20180129544A1 (en) | Suggesting Application Programming Interfaces Based on Feature and Context Analysis | |
US11561881B2 (en) | Out-of-date runbook detection | |
US9342527B2 (en) | Sharing electronic file metadata in a networked computing environment | |
US10902037B2 (en) | Cognitive data curation on an interactive infrastructure management system | |
US11941453B2 (en) | Containerized computing environments | |
US11789774B2 (en) | Optimization of workload scheduling in a distributed shared resource environment | |
US11640281B2 (en) | Tool for introspection in object-oriented source code | |
US20210141562A1 (en) | Output management in command line interface | |
US20200356531A1 (en) | Derived relationship for collaboration documents | |
US12124811B2 (en) | Generating and updating conversational artifacts from APIS | |
US20230153541A1 (en) | Generating and updating conversational artifacts from apis | |
US11822884B2 (en) | Unified model for zero pronoun recovery and resolution | |
US20160224558A1 (en) | Gauging credibility of digital content items |
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 |