一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

具有联合文件系统层装载的容器实例化的制作方法

2022-06-08 23:04:57 来源:中国专利 TAG:

具有联合文件系统层装载的容器实例化


背景技术:

1.在计算技术的上下文中,“虚拟化”可以被用于创建具有比该事物的原始版本更大通用性或更大灵活性的事物版本。例如,计算机硬件平台、数字存储设备和计算机网络资源各自具有绑定到特定物理硬件项的非虚拟版本,以及利用软件而被实现的虚拟版本,该软件可以在各种不同类型的物理硬件上执行。虚拟化可以具有比它们的非虚拟化对应物更大的通用性(例如,在不同硬件上运行的能力)和更大的灵活性(例如,相对容易进行功能改变),因为更大量的虚拟化功能被实现为软件。
2.虚拟化可以在各种各样的物理项上执行,并且可以以各种等级而被执行。例如,在云计算的内容中,虚拟化帮助提供底层硬件之上的不同等级的功能。这些等级包括“基础设施即服务”(iaas),“平台即服务”(paas)和“软件即服务”(saas)。云计算通常以更精细的粒度使用作为物理计算机系统的虚拟化的“虚拟机”而被执行;虚拟机在管理程序上运行,管理程序是底层计算、存储和联网硬件的虚拟化。


技术实现要素:

3.一些实施例使用或执行在云或其它计算系统中的实例化位置处实例化容器的操作。从实例化位置的角度来看,这些操作可以包括:向容器注册表发送容器镜像拉取请求,其中拉取请求标识容器镜像;接收列出共同构成容器镜像的多个层的镜像清单,其中每个层具有相应的层标识和相应的层内容;向容器注册表发送层装载请求,其中层装载请求标识容器镜像的层;接收层装载,层装载提供对在层装载请求中所标识的层的注册表驻留形式的内容的访问,而不提供对共同构成容器镜像的所有层的所有内容的访问;创建联合文件系统,联合文件系统跨越共同构成容器镜像的层并且基于至少一个所接收的层装载;以及基于联合文件系统,在实例化位置处启动容器过程。这些操作避免了在启动容器过程之前,将所标识的层的层内容的至少部分从容器注册表通过网络传输到实例化位置。
4.从容器注册表的角度来看,为支持在实例化位置处实例化容器而执行的操作可以包括:容器注册表接收容器镜像拉取请求,拉取请求标识容器镜像;容器注册表发送镜像清单,镜像清单列出共同构成容器镜像的多个层,每个层具有相应的层标识和相应的层内容;容器注册表接收层装载请求,层装载请求标识容器镜像的层;以及容器注册表发送层装载,层装载提供对在层装载请求中所标识的层的注册表驻留形式的内容的访问,而不提供对共同构成容器镜像的所有层的所有内容的访问。容器注册表避免在实例化位置处容器过程启动之前,发送所标识的层的层内容的至少部分。
5.本文所呈现的教导的一些实施例包括容器实例化功能或与容器实例化功能通信,容器实例化功能包括被配置为执行某些操作的数字硬件。所配置的硬件包括存储器和处理器,两者均位于诸如特定虚拟机或服务器的实例化位置处。操作可以包括:(a)向容器注册表发送容器镜像拉取请求,拉取请求标识容器镜像,(b)接收列出共同构成容器镜像的多个层的镜像清单,每个层具有相应的层标识和相应的层内容,(c)向容器注册表发送层装载请求,层装载请求标识容器镜像的层,(d)接收层装载,层装载提供对在层装载请求中所标识
的注册表驻留形式的层内容的访问,而不提供对共同构成容器镜像的所有层的所有内容的访问,(e)创建联合文件系统,该联合文件系统跨越共同构成容器镜像的层,以及(f)基于联合文件系统,在实例化位置处启动容器过程,而不首先在实例化位置处获得共同构成容器镜像的所有层的所有内容。存储器至少由镜像清单和联合文件系统配置;处理器由执行操作的指令来配置。
6.与本文中的教导相关的其它技术活动对于本领域技术人员来说也是明显的。所给出的示例仅是示例性的。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。相反,提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些技术概念。本发明利用权利要求书而被限定,并且在本发明内容与权利要求书冲突的程度上,权利要求书应当占主导。
附图说明
7.将参考附图给出更具体的描述。这些附图仅图示了所选择的方面,并且因此没有完全确定覆盖范围或范围。
8.图1是总体上图示计算机系统,并且还总体上图示所配置的存储介质的框图;
9.图2是图示了容器实例化计算环境和容器注册表计算环境的框图;
10.图3是图示了容器实例化环境的一些示例的框图;
11.图4是图示了被配置为使用联合文件系统和容器层装载功能用于快速容器实例化的系统的各方面的框图;
12.图5是图示了一些容器实例化通信的框图;
13.图6是图示了可以在层装载与容器的一个或多个静态层之间实现的一些关系的框图;
14.图7是图示了其中下载层的所有内容而不使用层装载的容器实例化方法的数据流程图;
15.图8是图示了其中仅在已经启动包括层的容器之后下载层的大部分或全部内容的容器实例化方法的数据流程图;
16.图9是图示了一些容器实例化方法中的步骤的流程图;以及
17.图10是进一步图示了一些容器实例化方法中的步骤的流程图。
具体实施方式
18.概述
19.许多创新扩展到其起源之外,但是理解创新的起源可以帮助人们更充分地理解创新。在当前情况下,本文描述的一些教导由减少针对冷启动容器(即,未被本地缓存的容器)的启动时间的技术挑战所激发。从以下提供的讨论中,由此处所教导的创新解决的其它技术挑战对于本领域技术人员也是明显的。
20.容器是虚拟化的。在该方面,它们类似于虚拟机。但是虚拟机将计算机硬件虚拟化,因此每个虚拟机通常具有其自己的操作系统副本,而容器系统将操作系统虚拟化。不同的容器可以向相应的用户地址空间提供到底层共享操作系统中的相应可见性。因此,以容器形式的多个工作负载可以在单个操作系统实例上运行。在没有容器虚拟化的计算机上的
操作系统上运行的计算机程序具有访问(至少默认地)该计算机的大部分(如果不是全部)计算资源的权限,诸如所连接的设备、文件和目录、网络共享和处理器。然而,在容器内运行的程序只能看到容器的内容和已经被分配给容器的设备。
21.取决于上下文,容器可以由其它名称来指代,诸如“os级虚拟化实例”、“区域”、“虚拟专用服务器”、“分区”、“虚拟环境”、“虚拟内核”或“监狱(jail)”。然而,本领域技术人员将认识到,这些名称中的一些名称还具有不必然涉及容器的其它含义,例如,“分区”可以指代磁盘分区,而“区域”可以指代数据中心可用性区域。
22.容器具有层,层具有相应的内容。容器作为容器过程运行。因此,本文中使用的“容器”可以指代访问层的过程、构成容器的层、层内容、诸如层列表的元数据或其组合。通过诸如“容器过程”的限定术语的存在或通过上下文,预期的含义对于本领域技术人员将是清楚的。任何剩余的模糊应当以给出涉及其最广泛的有效性和操作意义的描述或权利要求的方式来解决。
23.在一些系统中,容器的执行生命周期可以包括:从远程储存库拉取(即,下载)内容、启封(unpackage)内容、在内容的上方创建联合文件系统,以及最后创建基于新限定的文件系统的过程。启封内容可以包括:从周围数据中提取所选择的内容,例如,从不仅包括层l的内容而且包括其它层的内容的较大镜像文件中复制层l的内容。启封内容还可以包括:解封装(unpack),本文中使用解封装作为“解压缩”的同义词。启封内容还可以包括解密内容。在一些系统中,在容器实例化被请求之后并且在容器过程的执行开始之前所花费的大部分时间是在内容的拉取和解封装期间被花费的。
24.本文提供的教导的一些实施例允许使用混合文件系统来进行容器快速实例化。当容器过程被启动并且具有(直接或经由层装载)对属于容器的所有层内容的访问时,容器被“实例化”。如本文中所使用的,作为容器过程的容器的“快速”实例化是实例化序列,其(a)在容器过程被启动之前,使用一个或多个层装载,以给予容器过程对层内容的访问,以及(b)花费少于十分之一的时间,该时间原本由在容器过程启动之前下载(并且还可以解封装)层内容的备选实例化序列所使用,而不是使用一个或多个层装载。快速容器实例化使用如本文所教导的层装载,而不是在容器过程被启动之前下载和(在需要时)解封装层内容。一些实施例极大地减少或消除了内容的拉取和解封装,从而允许它们实现近即时容器实例化。
25.本文描述的一些实施例可以由一些人在更广泛的上下文中审阅。例如,诸如内容、下载、标识、启动、列表和计算过程等概念一般可以被认为与特定实施例相关。然而,它并不遵循广泛上下文的可用性,即在本文中针对抽象概念寻求独占权;它们不是。相反,本公开集中于提供其技术效果完全或部分地解决特定技术问题(诸如,容器的缓慢实例化和复制或下载不必要的层内容)的适当的特定实施例。涉及内容、下载、标识、启动、列表或计算过程的其它配置的存储介质、系统和过程通常在本范围之外。因此,在正确理解本公开的情况下,也避免了模糊性、单纯的抽象性、缺乏技术特征和伴随的证明问题。
26.更一般地,本领域技术人员将认识到,并非本公开的每个部分或其中的任何具体细节都必须满足诸如启用、书面描述或最佳模式等法律标准。此外,各实施例不限于特定文件系统、软件开发环境、编程语言、容器格式示例、开发工具、标识符、文件、数据结构、符号、控制流、伪代码、安全机制或本文所述的其它实现选择。与任何其他专利公开的任何明显冲
突,即使是本创新的所有者,在解释本专利公开中提出的权利要求中也不起作用。
27.技术特征
28.本文中描述的实施例的技术特征对于本领域的普通技术人员而言将是明显的,并且对于广泛关注的读者而言在多个方面也将是明显的。一些实施例解决了诸如实例化容器和测量容器实例化性能的技术活动,这些技术活动是深深植根于计算技术中的活动。所讨论的一些技术机制包括例如层装载、联合文件系统、变更集、清单、高速缓存、储存库和注册表。所讨论的一些技术效果包括例如更快的容器实例化、避免镜像克隆、避免层内容中的虚拟机设置、容器之间的层共享、尽管缺少足以保存所有容器的层内容的本地存储但仍然实例化容器、以及无需使用快照而访问层内容。因此,排除了纯粹的心理过程。一些实施例通过使容器在实践中更快速地可用、通过减少层内容存储需求、或通过扩大可供使用的容器镜像格式的范围而不招致性能冲击来改进计算系统的功能。基于所提供的描述,基于教导的技术特征的其他优点对于本领域技术人员而言也是明显的。
29.关于超链接的注释
30.本公开可以包含各种uri、超链接、ip地址和/或可以被认为是浏览器可执行代码的其它项。这些项仅作为礼节(“courtesy”)而被包括在本公开中,而不是被包括来参考网站或文件的内容,网站或文件的内容被标识为对实施例的描述的必要支持。申请人不旨在使这些uri、超链接、ip地址或其它这样的代码成为活动链接。这些项均不旨在作为位于本公开文件之外的材料的参考而引入。因此,本文中不应当反对包含这些项。在这些项尚未被禁用的情况下,假定专利局在准备将该文档的文本加载到其官方web数据库时将禁用它们(使它们作为链接不活动)。参见例如美国专利和商标手册检查程序
§
608.01(vii)。
31.首字母缩略词、缩写、名称和符号
32.下文定义了一些首字母缩略词、缩写、名称和符号。其它在本文其它地方定义,或为了本领域技术人员理解不需要在本文定义。
33.alu:算术和逻辑单元
34.api:应用程序接口
35.bios:基本输入/输出系统
36.cd:压缩盘
37.cpu:中央处理单元
38.dvd:数字通用光盘或数字视频盘
39.fpga:现场可编程门阵列
40.fpu:浮点处理单元
41.gpu:图形处理单元
42.gui:图形用户界面
43.iaas或iaas:基础设施即服务
44.id:标识或身份
45.ide:集成开发环境,有时也被称为“交互式开发环境”46.iot:物联网
47.ip:因特网协议
48.lan:局域网
49.os:操作系统
50.paas或paas:平台即服务
51.ram:随机存取存储器
52.rom:只读存储器
53.ssd:固态驱动器
54.uefi:统一可扩展固件接口
55.uri:统一资源标识符
56.url:统一资源定位符
57.vm:虚拟机
58.vhd:虚拟硬盘
59.vhdx:虚拟硬盘扩展
60.wan:广域网
61.一些附加术语
62.本文参考如附图中所示的示例性实施例,并且本文使用特定语言来描述该示例性实施例。但是,本文所示特征的改变和进一步修改以及由本文中特定实施例所示的抽象原理的附加技术应用应当被认为在权利要求书的范围内,这些改变和进一步修改以及附加技术应用对于拥有本公开的相关领域技术人员来说是明显的。
63.在本公开中阐明了术语的含义,因此应当仔细阅读权利要求书来了解这些阐明。给出了具体实例,但是(多个)相关领域的技术人员将理解,其它实例也可以落入所使用的术语的含义内,并且落入一个或多个权利要求的范围内。术语在此不必然具有与它们在一般使用中(特别是在非技术使用中)、或在特定行业的使用中、或在特定字典或字典集中相同的含义。附图标记可以与各种短语一起使用,以帮助示出术语的宽度。从给定文本中省略附图标记不必然意味着该文本没有讨论附图的内容。本发明人主张并且行使特定和选择的词典编纂的权利。所引用的术语被明确地限定,但是术语也可以不使用引号而被隐含地限定。术语可以在本文的具体实施方式中和/或在申请文件中的其它地方明确地或隐含地限定。
64.如在本文中所使用的,“计算机系统”(即“计算机系统”)可以包括例如一个或多个服务器、主板、处理节点、膝上型计算机、平板计算机、个人计算机(便携式或非便携式)、个人数字助理、智能电话、智能手表、智能带、蜂窝或移动电话、具有至少处理器和存储器的其它移动设备、视频游戏系统、增强现实系统、全息投影系统、电视、可穿戴计算系统和/或提供至少部分地由指令控制的一个或多个处理器的其它(多个)设备。指令可以是存储器和/或专用电路中的固件或其它软件的形式。
[0065]“多线程”计算机系统是支持多个执行线程的计算机系统。术语“线程”应当被理解为包括能够或服从调度并且可能同步的代码。在本公开之外,线程还可以被称为诸如“任务”、“过程”或“协同程序(coroutine)”等别名。然而,本文在线程和过程之间作出区别,因为线程限定过程内的执行路径。此外,过程的线程共享给定的地址空间,而不同的过程具有不同的相应地址空间。过程的线程可以并行、顺序或以并行执行和顺序执行(例如,时间分片)的组合来运行。
[0066]“处理器”是线程处理单元,诸如同时多线程实现中的核心。处理器包括硬件。给定
芯片可以容纳一个或多个处理器。处理器可以是通用的,或者它们可以被定制用于诸如矢量处理、图形处理、信号处理、浮点算术处理、加密、i/o处理、机器学习等的特定用途。
[0067]“内核”包括操作系统、管理程序、虚拟机、bios或uefi代码以及类似的硬件接口软件。
[0068]“代码”意味着处理器指令、数据(其包括常数、变量和数据结构)或指令和数据两者。“代码”和“软件”在本文中可互换使用。可执行代码、解释代码和固件是代码的一些示例。
[0069]“程序”在本文中被广泛使用,以包括应用、内核、驱动程序、中断处理程序、固件、状态机、库和由程序员(也称为开发方)编写和/或自动生成的其它代码。
[0070]“服务”是指在云计算环境或其它网络或计算系统环境中提供对多个程序的资源或资源访问的可消费程序。
[0071]“云”是指用于计算、存储和联网的汇集资源,其可弹性地用于所测量的按需服务。云可以是私有的、公共的、共同体的或混合的,并且云服务可以以基础设施即服务(iaas)、平台即服务(paas)、软件即服务(saas)或另一服务的形式提供。除非另有说明,否则对从文件读取或写入文件的任何讨论包括读取/写入本地文件或通过网络读取/写入,网络可以是云网络或其它网络或两者(本地和联网读取/写入)。
[0072]“iot”或“物联网”是指可寻址的嵌入式计算节点的任何联网集合。这些节点是如本文所限定的计算机系统的示例,但它们也具有以下特性中的至少两个特性:(a)无本地人类可读显示器;(b)无本地键盘;(c)输入的原始来源是跟踪非语言数据来源的传感器;(d)无本地转盘存储装置,ram芯片或rom芯片仅提供本地存储器;(e)无cd或dvd驱动装置;(f)嵌入家用器具或家用夹具中;(g)嵌入植入式或可穿戴医疗设备中;(h)嵌入在交通工具中;(i)嵌入过程自动化控制系统中;或者(j)专注于以下一项的设计:环境监测、公民基础设施监测、工业设备监测、能源使用监测、人或动物健康监测、物理安全或物理运输系统监测。iot存储装置可以是经由云、经由另一网络或经由直接本地访问尝试的未授权访问的目标。
[0073]
在容器实例化的上下文中,“本地”在本文中是指实例化位置204的本地。实例化位置204也不必然是请求实例化或其动作被引导到实例化的开发方104的本地,并且也不一定是管理实例化容器的集成开发环境或虚拟机或其它工具122的本地。
[0074]
如本文所使用的,除非另有说明,否则“包括”允许附加元素(即,包括意味着包含)。
[0075]“优化”意指改进,不必然要完美。例如,可以进一步改进已经优化的程序或算法。
[0076]“过程”有时在本文中用作计算科学领域的术语,并且在该技术意义上包括资源用户,即,例如,协同程序、线程、任务、中断处理程序、应用程序过程、内核过程、程序和对象方法。例如,在描述与系统权利要求或制品(所配置的存储介质)权利要求相对的过程权利要求中,“过程”在本文中也用作专利法的术语。类似地,本文有时使用“方法”作为计算科学领域中的技术术语(一种“例程”),也作为专利法领域术语(“过程”)。专利法意义上的“过程”和“方法”在本文中可互换使用。本领域的技术人员将了解在特定实例中打算使用哪个意义,并且还将了解,给出的所要求保护的过程或方法(在专利法意义上)有时可以使用一个或多个过程或方法(在计算科学意义上)来实现。
[0077]“自动地”意味着使用自动化(例如,由软件配置的通用计算硬件,用于本文所讨论
的特定操作和技术效果),与没有自动化相对。具体地,“自动地”执行的步骤不是通过手在纸上或在人的心中执行,但是它们可以由人发起或由人交互地引导。自动化步骤利用机器来执行,以获得在没有由此提供的技术交互的情况下不能实现的一个或多个技术效果。
[0078]
本领域技术人员理解,技术效果是技术实施例的假定目的。例如,在实施例中涉及计算,并且在没有技术组件的情况下也可以执行一些计算(例如,通过纸和笔,或者甚至作为精神步骤)的事实并不消除技术效果的存在或者改变实施例的具体和技术性质。诸如发送或接收镜像拉取请求或清单或层装载请求或层装载、创建联合文件系统、启动容器过程以及所讨论的许多其它操作的操作在本文中被理解为固有数字的。人类思维不能与cpu或其它处理器或与ram或其它数字存储装置直接对接来读取和写入必要的数据来执行本文所教导的容器实例化步骤。鉴于本公开内容,本领域技术人员将完全理解这点,但有时可能需要通知或提醒其他人员这些事实。
[0079]“计算地”同样意味着正在使用计算设备(至少是处理器加存储器),并且排除仅通过人类思想或仅通过人类动作而获得结果。例如,利用纸和笔进行算术并不是如本文所理解的那样进行算术计算。计算结果更快、更宽、更深、更准确、更一致、更全面和/或以其他方式提供超出人类执行范围的技术效果。“计算步骤”是在计算上执行的步骤。“自动地”或“计算地”不必然意味着“立即地”。“计算地”和“自动地”在本文中可互换使用。
[0080]“主动地”意味着没有来自用户的直接请求。实际上,用户甚至不可能意识到实施例的主动步骤是可能的,直到该步骤的结果已经被呈现给用户。除非另有说明,否则本文描述的任何计算和/或自动步骤也可以主动地完成。
[0081]
在本文件中,使用可选的多个“(多个)”、“(多)”或“(多个的)”是指存在一个或多个所示特征。例如,“(多个)处理器”意味着“一个或多个处理器”或等效地“至少一个处理器”。
[0082]
出于美国法律和实践的目的,在本文中、在权利要求书或其它地方使用词语“步骤”并不旨在调用装置加功能、步骤加功能或美国法典第112节第六段/第112(f)节权利要求解释。因此明确反驳了对该效果的任何推测。
[0083]
出于美国法律和实践的目的,除非权利要求使用短语“用于
……
的装置”,否则它们不旨在调用装置加功能解释。如果有,意图被解释为装置加功能语言的权利要求语言将通过使用短语“用于
……
的装置”来明确地叙述该意图。当应用装置加功能解释时,无论通过使用“用于
……
的装置”和/或通过法院的权利要求语言的法律结构,在说明书中对于给定名词或给定动词叙述的装置应当被理解为链接到权利要求语言,并且在本文中通过以下任何项而被链接在一起:在附图的框图中的相同框内出现、由相同或相似名称表示、由相同附图标记表示、在任何附图中描绘的功能关系、在本公开文本中指出的功能关系。例如,如果权利要求限制引用了“zac小部件”并且该权利要求限制变得服从装置加功能解释,则至少在说明书中的任何地方在提及“zac小部件”的任何图框、段落或示例中标识的所有结构或者由分配给zac小部件的任何附图标记绑定在一起,或者被公开为与zac小部件的结构或操作具有功能关系,将被认为是在针对zac小部件应用中所标识的结构的部分并且将帮助限定针对zac小部件结构的等同物集。
[0084]
本领域技术人员将认识到,本创新公开讨论了各种数据值和数据结构,并且认识到这些项驻留在存储器(ram、磁盘等)中,从而配置存储器。本领域技术人员还将认识到,本
创新公开讨论了在给定实现中以可执行代码实现的各种算法步骤,并且这种代码还驻留在存储器中,并且它有效地配置执行它的任何通用处理器,从而将它从通用处理器变换为功能专用硬件的专用处理器。
[0085]
因此,本领域技术人员不会将(a)权利要求中所述的存储器与(b)权利要求中所述的数据结构或数据值或代码错误地视为非重叠项。即使当权利要求没有明确地叙述所提及的、针对每个数据结构或数据值或代码片段的驻留时,数据结构和数据值以及代码也被理解为驻留在存储器中。因此,不需要这种驻留的明确叙述。然而,它们也不被禁止,并且可以存在一个或两个选择记录用于强调,而不由此从驻留中排除所有其它数据值和数据结构以及代码。同样地,在权利要求中记载的代码功能被理解为配置处理器,而不管在权利要求中是否明确地引用了配置质量。
[0086]
在整个本文件中,除非另有明确说明,否则对过程中的步骤的任何引用假定该步骤可以由感兴趣方直接执行和/或由该方通过介入机构和/或介入实体而间接执行,并且仍然在该步骤的范围内。即,不要求感兴趣方直接执行该步骤,除非直接执行是明确说明的要求。例如,关于目的地或其他主题,涉及感兴趣方动作的步骤(诸如,访问、确定、基于、缓存、克隆、配置、构成、创建、扩展、标识、启动、列出、定位、测量、装载、省略、封装、提供、接收、取回、发送、共享、跨越、存储、传输(发送或接收或两者)、统一化、解除装载、解封装、使用(以及访问、已访问、确定、已确定等,以及避免任何步骤步骤)可以涉及由其他方的介入动作,诸如转发、复制、上传、下载、编码、解码、压缩、解压缩、加密、解密、认证、调用等(包括本文档中所述的任何动作),仍然被理解为由感兴趣方直接执行。
[0087]
每当参考数据或指令时,应当理解,这些项配置计算机可读存储器和/或计算机可读存储介质,从而将其转换为特定制品,这与例如简单地存在于纸上、人的思想中或作为仅在线路上传播的信号相反。出于美国专利保护的目的,存储器或其它计算机可读存储介质不是传播信号或载波或仅是在美国专利商标局(uspto)对in re nuijten案件的解释下的可专利主题范围之外的能量。在美国没有权利要求覆盖信号本身或仅能量,并且鉴于本公开以其他方式断言的任何权利要求解释在其表面上是不合理的。除非在美国以外授予的权利要求中另有明确说明,否则权利要求不涵盖信号本身或仅涵盖能量。
[0088]
此外,尽管在本文的其它地方显然存在任何相反的情况,但是在(a)一方面,计算机可读存储介质和计算机可读存储器与(b)另一方面,传输介质(也被称为信号介质)之间应当理解清楚的区别。传输介质是传播信号或载波计算机可读介质。相比之下,计算机可读存储介质和计算机可读存储器不是传播信号或载波计算机可读介质。除非在权利要求中另有明确说明,否则“计算机可读介质”是指计算机可读存储介质,而不是传播信号本身,并且不仅是能量。
[0089]
本文中的“实施例”是示例。术语“实施例”与“本发明”不可互换。实施例可以自由地共享或借用各方面来创建其它实施例(只要结果是可操作的),即使所得到的各方面的组合本身未在本文中明确地描述。要求明确地和单独地描述每个和每一个所允许的组合对于本领域技术人员是不必要的,并且将与认识到专利说明书是针对本领域技术人员的读者编写的策略相反。关于从即使少量的可组合特征产生的可能组合的数目的正式组合计算和非正式常见直觉也将指示针对本文所描述的方面的大量的方面组合存在。因此,要求明确地叙述每个和每种组合将与要求专利说明书简明和要求读者了解有关技术领域的知识的策
略相反。
[0090]
附图标记列表
[0091]
提供以下列表是为了方便和支持附图以及作为通过参考多个项来描述创新的说明书文本的部分。此处未列出的项仍然可以是给定实施例的部分。为了文本的更好易读性,在文本中所引用的项的一些但不是全部的记载附近引用给定的附图标记。参考给定项的不同示例或不同实例使用相同附图标记。附图标记列表为:
[0092]
100 操作环境,也被称为计算环境;
[0093]
102 计算机系统,也被称为计算的系统或计算系统;
[0094]
104 用户;
[0095]
106 外围设备;
[0096]
108 网络,通常包括例如lan、wan、软件定义网络、云和其它有线或无线网络;
[0097]
110 处理器;
[0098]
112 计算机可读存储介质,例如ram、硬盘;
[0099]
114 可移动配置的计算机可读存储介质;
[0100]
116 利用处理器可执行的指令;可以在可移动存储介质上或在其它存储器(易失性或非易失性或两者)中;
[0101]
118 数据
[0102]
120 (多个)内核,例如(多个)操作系统、bios、uefi、设备驱动程序;
[0103]
122 工具,例如,防病毒软件、防火墙、数据包嗅探器软件、入侵检测系统、入侵预防系统、调试器、简档器、编译器、解释器、软件开发工具和工具套件、硬件开发工具和工具套件、诊断程序;
[0104]
124 应用,例如,文字处理器、web浏览器、电子表格、游戏、电子邮件工具;
[0105]
126 显示屏,也被称为“显示器”;
[0106]
128 与附图标记106、108、110、112、114不相关联的计算硬件;
[0107]
202 实例化环境
[0108]
204 实例化位置,例如特定虚拟机、服务器、网络节点、uri或url、或群集、或硬件框、或虚拟位置;
[0109]
206 注册表,即,标识一个或多个储存库中存储的计算资源以及这些资源的位置的列表或其他数据结构;“注册表”还指代包含计算资源列表的服务器或其它计算系统;
[0110]
208 注册表环境;包括注册表和存储注册表中标识的计算资源的所有储存库;
[0111]
210 容器,例如,提供用户空间虚拟化并且本身不包括操作系统的计算构造;
[0112]
212 容器镜像;也指代保存容器镜像的(多个)文件;
[0113]
214 容器层;也指代保存容器层的(多个)文件;
[0114]
216 用于将容器实例化的数字或其它电子通信;
[0115]
302 云;也可以被称为“云计算环境”;
[0116]
304 虚拟机,例如,提供硬件虚拟化并包括操作系统的计算构造;
[0117]
306 生产环境;
[0118]
402 容器过程;
[0119]
404 联合文件系统;
[0120]
406 容器层内容;
[0121]
408 容器镜像清单;
[0122]
410 层装载,即,uri或其它数据,其标识层内容的位置并且可以在装载点处被使用来为容器过程提供对层内容的访问;
[0123]
412 变更集,例如,对容器层的文件系统进行添加、删除或其他修改的指令集;
[0124]
414 容器层的文件系统;
[0125]
416 容器镜像配置,例如,根文件系统更改和用于容器运行时中使用的对应执行参数的有序组;
[0126]
418 元数据储存库;
[0127]
502 请求将容器镜像的副本从注册表或储存库拉到另一位置;
[0128]
504 针对层装载410的请求;
[0129]
506 层的标识;也被称为“层标识符”;例如可以是层内容的哈希;还指代标识层的动作;
[0130]
600 将一个或多个层装载映射到一个或多个静态层的关系;
[0131]
602 一对一,亦称为1-对-1或1:1,意味着一个层装载对应于一个静态层,并且具体地,一个层装载对应于一个并且仅一个静态层的内容;
[0132]
604 一对多,亦称为1-对-多或1:n,意味着一个层装载对应于多个静态层,并且具体地,一个层装载对应于多于一个静态层的内容,但不对应于感兴趣的特定容器的所有静态层;
[0133]
700 图示了在容器过程启动和不使用层装载之前,具有内容下载的容器实例化的数据流程图;
[0134]
702 容器镜像或容器层的下载;也指代下载动作;本领域认识到,解封装通常在下载之后进行;
[0135]
704 容器镜像高速缓存;
[0136]
706 容器镜像标识符;还指代标识镜像的动作;
[0137]
708 容器镜像储存库;
[0138]
710 容器镜像储存库标识符;
[0139]
712 容器镜像标签,例如版本指示符或其他元数据;
[0140]
714 例如千兆字节或其他存储单位的容器镜像的大小;
[0141]
716 容器层高速缓存;
[0142]
718 发送容器镜像拉取请求502;除非另有说明,否则所有发送和接收动作都被假定为包括通过计算机网络的数字通信传输;
[0143]
720 接收容器镜像清单408;
[0144]
722 发送对增量层的请求,例如,也存储其他层的周围容器镜像内的层;
[0145]
724 增量层;通常可以具有与层214相同的内容;
[0146]
726 接收层url;
[0147]
728 层url;
[0148]
730 针对请求中的url处存储的层内容的请求;
[0149]
732 层内容406的压缩版本;
[0150]
800 图示了在容器过程启动和使用层装载之后,具有内容下载的容器实例化的数据流程图;
[0151]
802 请求层装载410;还指代发送层装载请求504的动作;
[0152]
804 接收层装载410;
[0153]
806 扩展(即,从未压缩或现在未压缩,从未封装或以前封装并且现在解封装)层214;在高速缓存的上下文中与“解封装”互换使用;
[0154]
900 流程图;900还指代图9的流程图所示出的或与之一致的容器实例化方法;
[0155]
902 列出构成容器镜像的层,例如,标识清单或其它数据结构中的层;
[0156]
904 构成容器镜像,即,至少共同限定容器镜像的静态(运行前)层内容;
[0157]
906 访问层内容,例如,提供访问的机制;也指代通过读取或写入或两者来访问层内容的动作;
[0158]
908 创建联合文件系统;
[0159]
910 跨越层,例如,通过单个统一文件系统来提供对层内容的访问;
[0160]
912 基于,例如,源自或依赖于;
[0161]
914 传输,即,通过数字或其他电子功能发送或接收;类似于在本文中讨论的其他动作,可以在“避免”之前指示该动作被避免或阻止,该避免本身就是动作;
[0162]
916 启动容器过程;
[0163]
918 具有位置,位于特定地点(物理的或虚拟的)处;
[0164]
920 将容器实例化;
[0165]
1000 流程图;1000还指代由图10的流程图(其并入图9的步骤)图示或与其一致的容器实例化方法;
[0166]
1002 测量经过的时间;
[0167]
1004 经过的时间;可以以处理器周期、毫秒或其他单位来表示;
[0168]
1006 提供性能增益;
[0169]
1008 性能增益,例如,所定义的任务的更快完成、存储器或网络带宽或另一计算资源的更低使用、或改进的安全性(数据机密性、数据完整性或数据可用性);
[0170]
1010 接收容器镜像拉取请求;
[0171]
1012 发送容器清单;
[0172]
1014 接收层装载请求;
[0173]
1016 发送层装载;
[0174]
1018 发送层内容;
[0175]
1020 压缩(即,封装)层内容;
[0176]
1022 解压缩(即,解封装)层内容;
[0177]
1024 将数据存储在高速缓存中;
[0178]
1026 从高速缓存中取回数据;
[0179]
1028 在多个容器之间共享层内容;
[0180]
1030 使用回送装载;在“避免”之前指代避免使用回送装载;
[0181]
1031 回送装载;
[0182]
1032 克隆容器镜像;在“避免”之前指代避免克隆容器镜像
[0183]
1034 在容器层中使用或存储虚拟机设置;在“避免”之前指代避免在容器层中使用或存储虚拟机设置;
[0184]
1036 虚拟机设置;
[0185]
1038 在文件中存储层内容;
[0186]
1040 文件;
[0187]
1042 访问(读取或写入)层内容;
[0188]
1044 容器镜像快照;
[0189]
1046 确定层内容的副本被本地存储;
[0190]
1048 本地存储装置,例如磁盘、ram高速缓存或高速网络连接存储装置;
[0191]
1050 从装载请求中省略层l,即,不请求针对该层l的层装载;
[0192]
1052 使用存储驱动器插件;在“避免”之前指代避免使用存储驱动器插件;
[0193]
1054 存储驱动器插件;
[0194]
1056 在本公开中讨论的未被赋予一些其它附图标记的任何步骤。
[0195]
操作环境
[0196]
参考图1,针对一个实施例的操作环境100包括至少一个计算机系统102。计算机系统102可以是多处理器计算机系统,也可以不是多处理器计算机系统。操作环境可以包括给定计算机系统中的一个或多个机器,计算机系统可以是集群的、客户端-服务器联网的和/或云中的对等联网的。单个机器是计算机系统,并且协作机器组也是计算机系统。给定计算机系统102可以被配置用于终端用户(例如,具有应用)、用于管理员、作为服务器、作为分布式处理节点和/或以其它方式。
[0197]
人类用户104可以通过使用显示器、键盘和其他外围设备106,经由键入的文本、触摸、语音、移动、计算机视觉、手势和/或其他形式的i/o来与计算机系统102交互。屏幕126可以是可移动外围设备106或者可以是系统102的整体部分。用户界面可以支持实施例与一个或多个人类用户之间的交互。用户界面可以包括命令行界面、图形用户界面(gui)、自然用户界面(nui)、语音命令界面和/或其他用户界面(ui)呈现,其可以被呈现为不同的选项或者可以被集成。
[0198]
系统管理员、网络管理员、云管理员、安全分析员和其它安全人员、操作人员、开发方、测试者、工程师、审计员和最终用户各自是特定类型的用户104。代表一个或多个人动作的自动代理、脚本、回放软件、设备等也可以是例如便于测试系统102的用户104。取决于它们与处理器110的可拆卸性,在一些实施例中,存储设备和/或联网设备可以被认为是外围设备,而在其它实施例中,存储设备和/或联网设备可以被认为是系统102的部分。例如,图1中未示出的其它计算机系统可以以技术方式与计算机系统102或使用经由网络接口设备到网络108的一个或多个连接而与另一系统实施例交互。
[0199]
每个计算机系统102包括至少一个处理器110。计算机系统102(像其他合适的系统)还包括一个或多个计算机可读存储介质112。存储介质112可以是不同的物理类型。存储介质112可以是易失性存储器、非易失性存储器、被固定在适当位置中的介质、可移动介质、磁介质、光介质、固态介质和/或其它类型的物理耐用存储介质(与仅传播信号或仅能量相反)。具体而言,诸如便携式(即,外部)硬盘驱动装置、cd、dvd、记忆棒或其它可移动非易失性存储器介质等所配置的存储介质114在插入或以其它方式安装时可以在功能上成为计算
机系统的技术部分,从而使得其内容可由处理器110访问,以供与处理器110交互和使用。可移动配置的存储介质114是计算机可读存储介质112的示例。计算机可读存储介质112的一些其它示例包括内置ram、rom、硬盘和不易由用户104移除的其它存储器存储设备。为了符合当前美国专利要求,计算机可读介质或计算机可读存储介质或计算机可读存储器在美国未决或授权的任何权利要求下都不是信号本身或仅是能量。
[0200]
存储介质114利用可由处理器110执行的二进制指令116来配置;“可执行”在本文中广义地用于包括例如机器代码、可解释代码、字节码和/或在虚拟机上运行的代码。存储介质114还利用数据118来配置,数据118通过执行指令116来创建、修改、引用和/或以其他方式用于技术效果。指令116和数据118对它们所驻留的存储器或其它存储介质114进行配置;当该存储器或其它计算机可读存储介质是给定计算机系统的功能部分时,指令116和数据118也对该计算机系统进行配置。在一些实施例中,数据118的一部分表示真实世界项,诸如产品特性、存货、物理测量、设置、图像、读数、目标、体积等。这样的数据还通过备份、恢复、提交、中止重新格式化和/或其它技术操作来变换。
[0201]
给定操作环境100可以包括集成开发环境(ide)122,其本身是向开发方提供诸如编译器、解释器、反汇编器、汇编器、反汇编器、源代码编辑器、简档器、调试器、模拟器、模糊器、注册表和储存库访问工具、版本控制工具、优化器、协作工具等的经协调的计算技术开发工具集122。具体地,一些软件开发实施例的一些合适的操作环境包括或帮助创建被配置为支持程序开发的可视化开发环境(微软公司的商标)。一些合适的操作环境包括环境(甲骨文美国公司的商标),并且一些包括利用诸如c 或c#(“c调”)的语言的环境,但是本文中的许多教导可以应用于各种编程语言、编程模型和程序。
[0202]
虽然实施例可以被描述为被实现为由计算设备(例如,通用计算机、服务器或集群)中的一个或多个处理器执行的软件指令,但是这样的描述并不意味着穷举所有可能的实施例。本领域技术人员将理解,相同或相似的功能通常也可以全部或部分地直接在硬件逻辑中实现,以提供相同或相似的技术效果。备选地或者除了软件实现方式之外,本文中所描述的技术功能可以至少部分地由一个或多个硬件逻辑组件来执行。例如并且不排除其它实现方案,实施例可以包括硬件逻辑组件110、128,诸如现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、片上系统组件(soc)、复杂可编程逻辑器件(cpld)和类似组件。例如,实施例的组件可以基于其输入、输出和/或其技术效果而被分组为交互功能模块。
[0203]
除了处理器110(例如,cpu、alu、fpu和/或gpu)、存储器/存储介质112和显示器126之外,操作环境还可以包括其它硬件128,诸如电池、总线、电源、有线和无线网络接口卡。名词“屏幕”和“显示器”在本文中可互换使用。显示器126可以包括一个或多个触摸屏,响应于来自笔或输入板的输入的屏幕,或者仅用于输出的屏幕。在一些实施例中,诸如人类用户i/o设备(屏幕、键盘、鼠标、输入板、麦克风、扬声器、运动传感器等)的外围设备106将与一个或多个处理器110和存储器可操作地通信。
[0204]
在一些实施例中,系统包括通过有线和/或无线网络108连接的多个计算机。联网接口设备128可以使用诸如分组交换网络接口卡、无线收发器或电话网络接口等的网络组件来提供对网络108的访问,这些网络组件可以存在于给定计算机系统中。联网接口设备和
诸如交换机或路由器或防火墙等的其它网络组件的虚拟化也可以存在于例如软件定义网络或沙箱化或其它安全云计算环境中。给定实施例还可以通过直接存储器访问、可移除非易失性存储介质或其它信息存储取回和/或传输方法来通信技术数据和/或技术指令。
[0205]
本领域技术人员将理解,本文在“操作环境”下所呈现的前述方面和其它方面可以形成给定实施例的部分。本文档的标题并不旨在将特征严格分类为实施例和非实施例特征集。
[0206]
一个或多个项在图中以大纲形式示出或在括号内列出,以强调它们不必然是所示操作环境或所有实施例的部分,而是可以与操作环境中的项或如本文所讨论的一些实施例交互操作。在任何附图或任何实施例中,不遵循必须要求不在大纲或括号形式中的项。具体地,图1为了方便而提供;图1中包括项并不意味着该项或该项的所描述的使用在当前创新之前已知。
[0207]
更多关于系统的
[0208]
参考图1至图8,一些实施例使用或提供功能增强型系统400。功能增强通过提供技术机制来促进容器实例化效率,该技术机制可以(a)在远离容器注册表的实例化位置处将容器实例化,而不将所有层内容首先下载到实例化位置,(b)不仅在实例化之前而且甚至在容器过程启动之后,避免下载不属于特定容器的层内容,以及(c)避免现有方法的各种技术限制和要求,包括诸如回送装载、快照、容器镜像克隆、虚拟机设置、容器系统供应方锁定、本地存储不足和存储驱动器插件等项或情况。这些技术机制中的一些技术机制包括层装载、层内容的即时下载、层内容在每个层文件而不是每个镜像文件中的存储以及符合被称为开放容器倡议(oci)的行业规范的数据结构格式(例如,见opencontainers dot org)。本文中所呈现的教导可以被选择性地应用,并且以各种方式混合。并非每个实施例都提供相同的容器实例化效率集或范围,并且在本段落中未列出的其他效率和优点也可以由一些实施例提供。此外,不是每个实施例以相同的方式提供或使用相同的技术机制集合,并且在本段落中未列出的其他技术机制也可以用于一些实施例中。
[0209]
图2图示了容器实例化计算环境100、202和容器注册表计算环境100、208。虽然为了图示的清楚起见利用分离的框来示出,但是在给定实现方式中,环境202和208可以重叠或者一个环境可以包括另一环境。
[0210]
所图示的实例化环境202包括实例化位置204,其中一个或多个容器210将被实例化920。实例化位置204具有专用实例化技术,其可以包括专用硬件128或者可以包括通用硬件110、112,通用硬件110、112利用数据118和指令116而被配置为执行如本文所教导的容器实例化操作。
[0211]
所图示的注册表环境208包括容器注册表206,并且因此隐含地包括由注册表206引用的储存库708。储存库708存储容器镜像212。每个镜像包括层214。通常,注册表环境208中所存储的层214是静态的,并且当将容器实例化时,动态(可写入的)层214在实例化位置204处被添加到静态层214。实例化环境202和注册表环境208通过容器实例化通信216进行通信。
[0212]
图3示出了容器实例化环境202的一些示例。所示示例包括网络108、云302、虚拟机304和生产环境306。然而,本领域技术人员将认识到,容器210也可以在其它环境中运行,并且这些环境中的一些环境可以重叠,例如虚拟机304可以驻留在云302中。
[0213]
图4图示了被配置用于快速容器实例化的系统102、400;实例化包括所配置的容器过程402的启动。系统400包括:跨越实例化容器210的镜像212的层214的联合文件系统404。层214在镜像清单408中被标识。至少一个层214的内容406通过层装载410可访问;其它层内容406可以被本地存储在实例化位置204处。根据oci或在其它上下文中,容器还可以包括描述层214文件系统的更改集412、镜像配置416或两者。
[0214]
图5图示了一些容器实例化通信216。所示示例包括镜像清单408、层装载410、容器镜像拉取请求502和层装载请求504。在图7和图8中示出了一些其他实例化通信216、406、410、702、718、720、722、724、726、728、730、802、804。
[0215]
图6图示了层装载410与一个或多个静态容器层214之间的一些关系600。所示的示例包括一对一关系602(一个层装载对一个静态层)和一对多(但不是全部)关系604(一个层装载对容器的多个静态层但不是全部静态层)。一些传统方法以在图6中未示出的一对一的关系,将容器的所有静态层214放入单个镜像文件1040中。
[0216]
图7图示了容器实例化方法,其中层214的所有内容406被下载702,而不使用层装载410。在使用所示方法的一些情况下,容器实例化可能仅在所有静态层被下载之后发生,但在其它情况下,在实例化之前,少于全部的静态层被下载,并且至少一个层装载410被使用来代替实例化前下载。因此,虽然图7与容器实例化的一些严格传统方法一致,但是图7也与容器实例化的一些非传统创新方法的一些方面一致,并且在其它情况下建议是误导性的。
[0217]
在图7所示的方法和架构中,用作实例化位置204的本地系统102具有镜像高速缓存704和层高速缓存716。在备选实施例中,这些高速缓冲中的一个高速缓冲或两者不存在于本地系统处。
[0218]
所图示的镜像高速缓存704包括零个或多个镜像条目,其中在图7中为了例示而示出了一个镜像条目。所示的镜像高速缓存条目包括镜像id 706、储存库id 710、用于诸如版本号、作者、许可、修订历史、开发方注释等元数据的标签字段712、以及大小字段714。在备选实施例中,这些条目字段中的一个或多个条目字段不存在,并且附加字段也可以存在于镜像高速缓存条目中。
[0219]
所图示的层高速缓存704包括零个或多个层条目,其中在图7中出于例示目的而示出一个层条目。所示的层高速缓存条目包括层id 506。在备选实施例中,附加字段也可以存在于层高速缓存条目中,并且本地驻留层内容406可以存在于高速缓存中。
[0220]
图7还示出了具有一个或多个成员储存库708的注册表206。为了方便起见,当实现在通过注册表处存储的数据将项进行定位之后,将项实际存储在储存库处时,可以引用注册表处存储的项。在这个意义上,所示的注册表保存压缩的容器层732、214。注册表还保存容器清单408;这些通常被存储在注册表本身的本地,而不是存储在储存库中。
[0221]
图7还以容器实例化通信216的形式从本地系统102、204的角度图示了数据移动。因此,图7显式地示出了发送718容器镜像拉取请求502并且隐式地示出了接收1010拉取请求,隐式地示出了发送1012容器镜像清单408并且显式地示出了接收720清单,显式地示出了发送722容器增量层724请求并且隐式地示出了接收增量层请求,隐式地示出了发送层url 728并且显式地示出了接收726增量层url,显式地示出了发送730针对层内容406的请求并且隐式地示出了接收层内容请求,并且隐式地示出了发送层内容406并且显式地示出
了接收702层内容406。本领域技术人员理解,当在本地系统102、204和注册表206之间改变角度时,交换发送和接收。即,从本地系统角度来看是发送操作的通信216,从注册表角度来看是接收操作,反之亦然。
[0222]
图8图示了容器实例化方法,其中仅在包括该层的容器已经被启动之后,层214的大部分或全部内容才被下载702。除了以上结合图7讨论的一些项和操作之外,图8示出了扩展的(未压缩的)层内容406,为了方便被称为扩展层806。图8还示出了显式地发送802层装载请求504并且隐式地示出了接收1014该请求,并且隐式地示出了发送1016层装载410并且显式地示出了接收804层装载。
[0223]
一些实施例使用或提供容器实例化系统400、102,容器实例化系统400、102包括存储器112以及在实例化位置204处与存储器可操作地通信的处理器110。处理器被配置为执行以下步骤:(a)向容器注册表206发送718容器镜像拉取请求502,拉取请求标识706容器镜像212,(b)接收720镜像清单408,镜像清单408列出902共同构成904容器镜像的多个层214,每个层具有相应的层标识506和相应的层内容406,(c)向容器注册表发送802层装载请求504,层装载请求标识506容器镜像的层,(d)接收804层装载410,层装载410提供对在层装载请求中所标识的注册表驻留形式的层内容的访问906,而不提供对共同构成容器镜像的所有层的所有内容的访问,(e)创建908联合文件系统404,其跨越910共同构成容器镜像的层,以及(f)基于912联合文件系统,在实例化位置处启动916容器过程402,而不首先在实例化位置处获得914共同构成容器镜像的所有层的所有内容。在一些实施例中,存储器112至少包括(例如,包含、由其配置)镜像清单408和联合文件系统404。本领域技术人员将认识到,联合文件系统实现用于其它文件系统的联合装载,并且可以使用诸如unionfs软件、aufs软件、overlayfs软件或提供联合装载功能的其它软件的软件来实现。
[0224]
在这些实施例中,技术人员将确认层装载不是快照id,因为层装载提供对在层装载请求中所标识的层的注册表驻留形式的内容的访问,而不提供对共同构成容器镜像的所有静态层的所有内容的访问。快照id提供对所有容器的静态层的所有内容的访问。
[0225]
本领域技术人员还将理解,容器过程402被启动,而不没有首先下载和提取所有静态层214,因为容器过程被启动“而不首先在实例化位置处获得共同构成容器镜像的所有层的所有内容”。
[0226]
一些实施例支持将特定层动态地平坦化,但仍允许1:1关系602。在一些实施例中,多个层装载410在实例化位置204处被接收,并且每个所接收的所述层装载以一对一的方式602对应于容器镜像212的一个静态层214。在一些实施例中,所接收的层装载410以一对多的方式604对应于容器镜像的多个静态层,但是所接收的层装载不对应于共同构成904所存储的容器镜像的所有静态层。
[0227]
一些实施例支持混合文件系统覆盖。在一些实施例中,所启动的联合文件系统404包括在此处被表示为本地装载的层装载410,本地装载提供对解封装的本地驻留层内容406的访问,解封装的本地驻留的层内容406驻留在对实例化位置204本地的本地存储设备106、112中,并且所启动的联合文件系统404还包括:在此处被表示为注册表装载的层装载410,注册表装载提供对解封装的注册表驻留的层内容806的访问906,该解封装的注册表驻留的层内容驻留在对实例化位置非本地的注册表存储设备112中,但是也可以是在例如注册服务器或储存库服务器本地。
[0228]
在一些实施例中,本地系统可以启动916容器210,其镜像212太大而不能被本地存储。假设在向容器注册表206发送718容器镜像拉取请求502之前,在实例化位置204处,可用于保存来自容器镜像212实例化的容器的存储量不大于f。尽管明显缺少足够的空间,但是层装载410的使用允许容器被启动。即,即使容器镜像212在容器注册表206(或隐式地,注册表的储存库708)处占用大于f的存储量,容器也在本地位置204处被实例化。
[0229]
在一些实施例中,联合文件系统404将单个文件系统414的不同实例统一化,但在其它实施例中,联合文件系统404将不同的文件系统414统一化。即,在一些实施例中,容器镜像212的多个层214中的每个层具有相应的文件系统414,并且联合文件系统404将彼此不同的至少两个层文件系统414组合,例如,一个可以是(莱纳斯特瓦尔滋的商标)文件系统414,而另一个可以是(微软公司的商标)文件系统414。或者,文件系统414可以基于不同分布而在意义上不同。
[0230]
一些实施例与开放式容器主动兼容。在一些实施例中,存储器112由描述该层的文件系统414的更改集412来配置,并且存储器112还被配置为描述容器镜像的多个层的排序的容器镜像212的配置416。除非另有说明,否则应当理解,更改集412和配置416各自与在适用专利法下的当前公开的优先权日时可用的那些相应项的开放式容器主动规范的最近公开版本兼容。
[0231]
在本文中还描述了其他系统实施例,这些系统实施例直接地或可导出为所描述的过程或所配置的介质的系统版本,由在此对计算硬件的广泛讨论来告知。
[0232]
尽管在附图中示出了特定架构示例,但是实施例可以脱离这些示例。例如,在不同的图中所示出的项可以被一起包括在实施例中,在图中所示出的项可以被省略,在不同的项中所示出的功能可以被组合为更少的项或单个项、项可以被重命名、或者项可以彼此不同地连接。
[0233]
本文提供示例来以帮助例示技术的各方面,但本文中给出的示例并未描述所有可能的实施例。实施例不限于本文提供的特定组件名称、优化、通信序列、环境、算法选择、数据、数据类型、配置、实现方式、布置、显示、特征、方法或场景。给定实施例可以包括:例如附加的或不同的技术特征、机制、序列、数据结构或功能,并且可以以其他方式脱离在本文中提供的示例。
[0234]
过程(又被称为:方法)
[0235]
图9图示了方法900,方法900是可以由增强型系统400执行或辅助的方法的示例。所示方法包括(a)向容器注册表206发送718容器镜像拉取请求502,拉取请求标识706容器镜像212,(b)接收720镜像清单408,镜像清单408列出902共同构成904容器镜像的多个层214,(c)向容器注册表发送802层装载请求504,层装载请求标识506容器镜像的层,(d)接收804层装载410,层装载410提供对共同构成容器镜像的静态层的一些但不是所有内容的访问906,(e)创建908联合文件系统404,其跨越910共同构成容器镜像的层,以及(f)启动916容器过程402,该容器过程402位于918实例化位置处并且基于912联合文件系统,同时避免在启动过程402之前传输914至少一些层内容。
[0236]
图10进一步图示了适于在容器实例化920期间使用的方法(也被称为过程),方法包括图9所示步骤的细化、补充或上下文动作。除非另外指明,否则图中所示或以其它方式
公开的技术过程将被自动执行(例如,由容器系统软件或云302基础设施软件)。过程也可以部分自动地和部分手动地执行到涉及人类管理员或其他人的动作的程度,例如,在一些实施例中,人可以指定需要哪个联合文件系统软件。在本文中没有设想为创新的过程是完全手动的。
[0237]
在给定实施例中,过程的零个或多个所示步骤可以被重复,可能利用不同的参数或数据来操作。实施例中的步骤也可以以与图9和图10中所示的从上到下的顺序不同的顺序来进行。步骤可以以部分重叠的方式串行执行,或者完全并行执行。具体地,流程图900动作项或流程图1000动作项被遍历来指示在过程期间执行的步骤的顺序可以从过程的一个执行变化到过程的另一执行。流程图遍历顺序也可以从一个过程实施例到另一过程实施例而变化。如果所执行的过程可操作并且符合至少一个权利要求,则步骤也可以被省略、组合、重命名、重新分组、在一个或多个机器上执行或者以其他方式脱离所图示的流程。
[0238]
一些实施例使用或提供了用于在计算系统中的实例化位置处将容器实例化的方法,方法包括:向容器注册表206发送718容器镜像拉取请求502,拉取请求标识706容器镜像212;接收720镜像清单408,镜像清单列出了共同构成904容器镜像的多个层214,每个层具有相应的层标识506和相应的层内容406;向容器注册表发送802层装载请求504,所述层装载请求标识506容器镜像的层;接收804层装载410,层装载410提供对在层装载请求中标识的注册表驻留形式的层内容的访问906,而不提供对共同构成容器镜像的所有层的所有内容的访问;创建908联合文件系统404,联合文件系统404跨越910共同构成容器镜像的层并且基于912所接收的至少一个层装载;基于联合文件系统,在实例化位置处启动916容器过程402;以及在启动容器过程之前,避免914将所标识的层的层内容的至少部分从容器注册表通过网络108传送到实例化位置。
[0239]
一些实施例提供1006显著的性能增益1008。在一些实施例中,在发送718容器镜像拉取请求时、在接收720镜像清单时、在发送802一个或多个层装载请求时(层装载请求共同标识未存储在实例化位置本地的容器镜像的所有层)、在响应于一个或多个层装载请求而接收804一个或多个层装载时、以及完成创建基于所接收的至少一个层装载的联合文件系统时,此处表示为新时间的第一时间1004测量1002经过的时钟时间。在发送718容器镜像拉取请求时、在接收720镜像清单时、在从容器注册表将还未被存储在实例化位置本地的容器镜像的所有层的层内容下载702到实例化位置时、在将以压缩形式下载的任何下载层内容解压缩1022时,以及在创建908跨越共同构成容器镜像的层的本地化联合文件系统时,此处表示为旧时间的第二时间1004测量1002经过的时钟时间。在这些实施例的一些实施例中,旧时间是新时间的至少15倍。在一些实施例中,旧时间是新时间的至少30倍。在某些情况下,旧时间是新时间的15至30倍。
[0240]
一些实施例跨越不同的容器有效地共享层高速缓存存储器。在一些实施例中,方法包括在高速缓存716中存储1024层内容406,以及在两个不同的容器过程402之间共享1028经高速缓存的层内容。即,静态层内容的单个经高速缓存的副本由两个或更多个不同容器过程402中的每个容器过程来访问。
[0241]
在一些实施例中,容器实例化920方法的第一执行包括:接收804层装载,层装载提供对在第一层装载请求中标识的层的注册表驻留形式的内容的访问906,而不提供对共同构成第一容器镜像的所有层的所有内容的访问908;创建908第一联合文件系统,该第一联
合文件系统跨越910共同构成904第一容器镜像的层;以及基于第一联合文件系统,在第一实例化位置处启动916容器a过程402。容器实例化920方法的第二执行包括:接收804相同的层装载,层装载提供对在第二层装载请求中标识的相同层的相同内容的相同注册表驻留形式的访问906,而且也不提供对共同构成904第二容器镜像的所有层的所有内容的访问;创建908跨越共同构成第二容器镜像的层的第二联合文件系统;以及基于第二联合文件系统,在第二实例化位置处启动916容器b过程402。第一联合文件系统还基于在此处被表示为层a的层214的层装载,层a不是容器b的部分,并且第二联合文件系统还基于在此处被表示为层b的层的层装载,层b不是容器a的部分。因此,该实施例涉及在两个容器之间共享1028层内容的单个实例,同时还向两个容器中的每个容器提供不是另一容器的部分的层内容。
[0242]
在一些实施例中,如本文所教导的通信和操作以及数据结构和软件的使用导致以下项一项或多项:避免1030使用回送装载1031来扩展快照1044;避免1032克隆容器镜像来获得待下载的层内容副本;避免1034将虚拟机设置1036存储在静态层内容406中;将容器的每个层存储1038在与容器的其它层不同的文件1040中;或者避免1052使用存储驱动器插件1054来利用层内容填充容器。在一些实施例中,方法避免1052使用任何存储驱动器插件发送802层装载请求并且还避免1052使用任何存储驱动器插件接收804层装载。
[0243]
一些实施例检查来确定哪些层214已经在本地高速缓存716中或者其它本地存储库1046中,以避免不必要的内容406下载。一些实施例包括确定1046镜像清单中列出的层l被存储在实例化位置的本地,并且省略1050来自任何层装载请求的层l的标识,该任何层装载请求发送到容器注册表作为将容器实例化的部分。
[0244]
在一些实施例中,可以提供扩展或压缩文件系统格式的装载。在一些实施例中,方法包括:接收804第一层装载410,第一层装载410提供对属于容器镜像的第一层的解封装的注册表驻留形式806的第一内容的访问;以及接收804第二层装载410,第二层装载410提供对属于容器镜像的第二层的封装的注册表驻留形式732的第二内容的访问。
[0245]
经配置的存储介质
[0246]
一些实施例包括经配置的计算机可读存储介质112。存储介质112可以包括磁盘(磁的、光的或其它)、ram、eeprom或其它rom和/或其它可配置存储器,特别地包括计算机可读存储介质(其不仅是所传播的信号)。所配置的存储介质具体可以是诸如cd、dvd或闪存的可移动存储介质114。通用存储器可以是可移动的或不可移动的,并且可以是易失性的或不可易失性的,通用存储器可以被配置为使用从可移动存储介质114和/或诸如网络连接的另一源读取的数据118和指令116形式的项的实施例(诸如,层装载410、更改集412、镜像配置416、容器实例化通信216、联合文件系统404以及实现图8所示的数据流或图9和图10所示的方法的软件),形成经配置的存储介质。如本文所公开的,所配置的存储介质112能够使计算机系统400或206或两者执行用于容器实例化920的技术过程步骤。附图因此有助于图示所配置的存储介质实施例和过程(又称为方法)实施例,以及系统和过程实施例。具体地,图9或图10中所示或本文中教导的任何过程步骤可以被用于帮助将存储介质配置为形成经配置的存储介质实施例。
[0247]
一些实施例使用或提供利用数据118和指令116配置的计算机可读存储介质112、114,数据118和指令116在由处理器110执行时,执行支持在计算系统中的实例化位置204处的容器实例化920的注册表方法。该方法包括:容器注册表206接收1010容器镜像拉取请求
502,拉取请求标识容器镜像212;容器注册表发送1012镜像清单408,镜像清单列出共同构成904容器镜像的多个层,每个层具有相应的层标识506和相应的层内容406;容器注册表接收1014层装载请求504,层装载请求标识容器镜像的层;容器注册表发送1016层装载410,层装载410提供对在层装载请求中标识的层的注册表驻留形式的内容的访问,而不提供对共同构成容器镜像的所有层的所有内容的访问;以及容器注册避免914在基于容器镜像的容器过程的实例化位置处启动之前,向远离容器注册表的实例化位置发送所标识的层的层内容的至少部分。
[0248]
在一些实施例中,多个层装载从容器注册表发送1016,并且每个所述层装载以一对一的方式对应于602容器镜像的一个层。
[0249]
在一些实施例中,方法还包括:在高速缓存中存储1024层内容,以及在两个不同的容器过程之间共享1028经高速缓存的层内容。
[0250]
在一些实施例中,方法以以下方式中的至少一个方式而被表征:方法避免响应于层装载请求而克隆1032容器镜像;每个层内容不含虚拟机设置1036;每个层内容能够以不访问任何快照1044的方式被访问1042;或者,容器的每个层被存储1038在与容器的另一层不同的文件1040中。
[0251]
在一些实施例中,方法包括:容器注册表发送1016第一层装载,第一层装载提供对属于容器镜像的第一层的解封装的注册表驻留形式806的第一内容的访问;以及容器注册表发送1016第二层装载,第二层装载提供对属于容器镜像的第二层的的封装的注册表驻留形式732的第二内容的访问。
[0252]
附加实施例和观察
[0253]
本领域技术人员将认识到,并非本公开的每个部分或其中的任何具体细节都必须满足诸如启用、书面描述或最佳模式等法律标准。此外,实施例不限于本文中描述的特定网络、工具、标识符、字段、数据结构、函数、常数或其它实现方式选择。与任何其他专利公开的任何明显冲突,即使是本创新的所有者,在解释本专利公开中提出的权利要求中也不起作用。在涉及本公开的所有部分的这种理解下,提供了一些附加的实例和观察。
[0254]
示例。一些实施例减少了未被本地高速缓存的容器(例如,冷启动容器)的启动时间。在一个内部实现中,在容器拉取期间,本地系统400向容器注册表206(微软公司的商标)通信本地系统想要得到解封装的内容806(如果可用)。注册表206以与镜像中的每个层相关的装载点410的列表(如果它封装)来响应1016。本地系统将这些装载点存储在元数据存储库418中,并且将其与从注册表返回的清单408相关联。本地系统检索这些装载点并且使用诸如aufs或overlayfs的联合文件系统将它们组合908来允许镜像运行。
[0255]
该内部实现方式被构建为与开放式容器主动性(oci)一致,其支持所有熟悉的容器镜像格式。该实现方式不限于仅与容器系统(docker公司的商标)一起使用,并且不需要对应的存储驱动器插件。本文中所教导的一些方法允许开发方进一步开发并且在各种运行时间使用,因为它们不限于容器软件的上下文。本文中所教导的一些方法可以利用用于相关文件系统子系统的特定系统调用来优化。本文中所教导的一些方法支持混合文件系统414覆盖404,例如,容器210中的一个层214可以被表示为ext4文件系统,另
一层可以被表示为公共互联网文件系统(cifs),另一层可以被表示为用户空间中的文件系统(fuse),以及另一层可以被表示为回送装载1031。然而,注意,使用环回装载来扩展容器快照1044和镜像克隆可以被避免作为层内容的源,因为层214可以使用层装载410而被单独装载,并且层214可以被存储1038在单独的相应文件1040中。在一些实施例中,容器中的每个层214可以设置为单独的装载,或者每个镜像可以被表示为单独的装载。
[0256]
关于快照的一些备注。在许多(如果不是全部)传统容器上下文中,快照1044表示来自虚拟机304的检查点。因此,包括容器的快照保存超出容器本身范围的附加信息1036(诸如,虚拟机设置和虚拟盘)。存储器快照还可以保存来自虚拟机的活动运行状态或从其它程序创建的其它文件。因此,快照大致可与管理程序120(微软公司商标)或另一管理程序120的一些盘(特别是vhd/vhdx格式)相比。在一个传统方法中,单个快照可以被用来组成整个容器。这使人想起对于其中整个容器由单个文件表示的扁平文件系统。层214被扁平化,因此装载任何一层将提供可以由容器使用的文件系统的完整视图。然而,在一些情况下,框架(诸如,软件的至少一个版本)不具有扁平化层的概念。当这样的框架拉取镜像时,它获得所有的层,利用施加差异的操作将每个层传递到驱动器。结果,产生了计算上昂贵的克隆。
[0257]
相反,在根据本文教导的一些实施例中,装载410表示一个或多个层214。一个实施例可以具有将某些层动态地扁平化的能力,但是仍然允许1:1的关系。在传统模型中,单个快照以扁平格式表示容器的所有层214。
[0258]
此外,在根据本文的教导的一些实施例中,装载410可以提供对扩展或压缩文件系统格式的访问。具体地,一些可以支持vhd/vhdx/vmstore或扩展文件系统。一个传统的方法仅允许来自快照的vmstore表示,其使用回送装载来扩展。作为推论,该创新实施例不需要超出容器范围(更具体地,超出一个或多个层的范围)的任何层内容1036。层内容406可以被保持没有虚拟机设置、虚拟机盘和存储器信息。
[0259]
而且,当传统方法表示容器的整个文件系统时,该方法不支持跨不同容器来有效地共享1028层高速缓存存储器。例如,考虑容器a和容器b。如果它们共享层z,则该传统方式使用两个不同的快照:快照f和快照g。快照f和g将不能共享存储器,因为它们是不同的文件并且因此将比本文中教导的至少一些方法执行得更差。根据本文教导,容器a和b可以直接共享1028层z,其中层z由单个文件(例如,以vhd/vhdx/其它磁盘形式)或许多文件(以扩展形式)来表示,从而共享来自内核的本地存储器内高速缓存。
[0260]
而且,在装载过程期间,本文教导的至少一些方法不浪费任何存储器或对层内容406的不必要的副本进行计算。增强型系统400可以简单地针对每个层执行一个装载;由于装载表示一个或多个层,所以不存在像在制作或使用针对于多层镜像的快照克隆的传统方法中那样的浪费。这些传统方法中的一些方法从除了顶层之外的任何地方有效地丢弃所有信息,因为顶层具有扁平格式的所有信息。因此,对于具有足够层数的任何镜像,本文教导的实施例将比传统方法表现得更好。例如,内部测试在35层镜像的情况下显示出与具有更少层的镜像类似的性能。即使对于35层镜像,内部测试也揭示了来自镜像212的传统下载的三十到三十五个加速因子。
[0261]
一些附加测试结果。一个特定的内部测试集使用35层的jupyter笔记本容器镜像
212,其在盘上消耗大约5.75gb并且以压缩形式消耗大约2gb。作为本地系统,在这些测试中采用具有8个虚拟cpu、30gb的虚拟磁盘和32gb的存储器的虚拟机304,具有两个磁盘选项中的每个选项:标准ssd和高级ssd。在没有本文所教导的快速容器实例化增强的情况下,该jupyter笔记本容器的实例化利用标准ssd而花费10分钟4秒,利用高级ssd而费6分钟44秒。与之形成明显对比的是,对于本文所教导的快速容器实例化增强,该jupyter笔记本容器的实例化920利用标准ssd花费0分15秒,利用高级ssd花费0分13秒。因此,在该测试中,针对标准ssd系统的性能增益是超过40的加速因子,并且针对高级ssd的性能增益是超过31的加速因子。
[0262]
一些附加组合和变化
[0263]
代码、数据结构、逻辑、组件、通信和/或它们的功能等同物的这些组合中的任何组合也可以与上文描述的系统和其变化中的任何系统组合。过程可以包括可操作的任何子集或组合或序列中的本文所述的任何步骤。每个变型可以单独出现,或者与任何一个或多个其它变型组合出现。每个变型可以与任何过程一起发生,并且每个过程可以与任何一个或多个其他过程组合。每个过程或过程的组合(包括变型)可以与上述任何配置的存储介质组合和变型进行组合。
[0264]
结论
[0265]
简而言之,本文提供的教导可以被应用于增强计算系统102,以使容器实例化920更快,减少层214内容406存储需求并且使更多的容器镜像212格式可用。在容器实例化位置204处的系统102、400向容器注册表206发送718容器镜像拉取请求502,接收720镜像清单408,向注册表发送802层装载请求504,而不是层内容下载请求730(其稍后在实例化920之后并且当且如果实际需要内容时被发送),接收804层装载410,可选地重复步骤802和804来获得针对附加层的层装载410,创建908跨越910层的联合文件系统404,并且基于912联合文件系统而启动916容器过程402,而不首先下载702所有静态层内容。一些其它方法的低效率和技术限制被避免,诸如避免1030用于快照1044扩展的回送装载1031,避免创建或传输额外快照1044或额外容器镜像克隆1032,避免将层内容406与虚拟机设置1036混杂1034,避免容器系统厂商锁定(例如,系统锁定),避免由于本地存储不足而在本地系统处缺少容器实例化920,以及由于避免1052存储驱动器插件1054的使用而允许系统调用优化。
[0266]
实施例被理解为还包括或受益于经测试的和适当的安全控制和隐私控制(诸如,通用数据保护规则(gdpr)),例如,应当理解,为了注入或传播恶意软件的目的,应当采取适当的安全措施来帮助防止容器实例化的误用,并且帮助避免篡改运行中的容器可能处理的任何个人或私有信息。本文中教导的工具和技术的使用与这样的控制的使用兼容。
[0267]
尽管本文中将特定实施例清楚地图示和描述为过程、经配置的存储介质或系统,但是应当理解,对一个类型的实施例的讨论通常也扩展到其它实施例类型。例如,结合图9与图10对过程的描述还有助于描述所配置的存储介质,并且有助于描述如结合其它图所讨论的系统和制品的技术效果和操作。并不遵循必须将来自一个实施例的限制读入另一实施例。具体地,过程不必限于在讨论诸如所配置的存储器的系统或制品时所呈现的数据结构和布置。
[0268]
本领域技术人员将理解,实现细节可以涉及特定代码,诸如特定api、特定字段、特定种类的组件和特定样本程序,并且因此不必出现在每个实施例中。本领域技术人员还将
理解,在讨论细节中使用的程序标识符和一些其它术语是实现方式特定的,并且因此不需要涉及每个实施例。尽管如此,虽然在此处不一定要求存在这些细节,但是这些细节可以通过提供上下文来帮助一些读者和/或可以例示本文中讨论的技术的许多可能实现中的一些实现。
[0269]
除非这样的排除在本文中明确说明,否则本文中参考的具有某些特征x的实施例和本文中别处所参考的具有某些特征y的实施例不排除具有特征x和特征y两者的本公开实施例。所有可能的否定性权利要求限制都在本公开的范围内,在这种意义上,即使在本文的任何示例中没有给出具体的排除,也可以明确地将作为实施例部分的任何特征从包括在另一实施例中去除。术语“实施例”在本文中仅用作“过程、系统、制品、经配置的计算机可读存储介质和/或本文教导的以符合适用法律的方式应用的其他示例”的更方便的形式。因此,给定“实施例”可以包括在本文中所公开的特征的任何组合,只要该实施例与至少一个权利要求一致。
[0270]
并非图中所示的每个项都需要出现在每个实施例中。相反,实施例可以包含图中未明确示出的项。虽然在文本和附图中通过特定示例图示了一些可能性,但是实施例可以脱离这些示例。例如,示例的特定技术效果或技术特征可以被省略、重命名、不同地分组、重复、以硬件和/或软件不同地实例化、或者是出现在两个或更多个示例中的效果或特征的混合。在一些实施例中,还可以在不同的位置处提供在一个位置处所示出的功能;本领域技术人员认识到,功能模块可以在给定实现方式中以各种方式来限定,而不必从整体看作为交互模块的集合中省略期望的技术效果。由于空间限制或为了方便起见,不同的步骤在单个框中可以被一起示出,但是不同的步骤仍然可以单独执行,例如,在给定方法执行中,一个步骤可以在没有另一步骤的情况下而被执行。
[0271]
附图标记始终表示附图。在附图或文本中,与给定附图标记相关联的短语中的任何明显不一致应当被理解为简单地拓宽了该附图标记所参考的范围。给定附图标记的不同实例可以指代不同的实施例,即使相同的附图标记被使用。类似地,给定附图标记可以被用于指代动词、名词和/或指代每个的对应实例,例如,处理器110可以通过执行指令来处理110指令。
[0272]
如本文所使用的,诸如“一”、“一个”和“所述”的术语包括所指示的项或步骤中的一个或多个。具体地,在权利要求中,对项的参考通常意味着存在至少一个这样的项,并且对步骤的参考意味着该步骤的至少一个实例被执行。类似地,当上下文允许时,“是”和其它单数动词形式应当被理解为涵盖“都是”和其它复数形式的可能性,以避免语法错误或误解。
[0273]
标题仅为方便;关于给定主题的信息可以在其标题指示该主题的部分之外找到。
[0274]
所提交的所有权利要求和摘要是说明书的部分。
[0275]
就本文所使用的任何术语涉及或以其它方式指代工业标准而言,并且就适用法律要求标识诸如标准的特定版本而言,本公开应当被理解为指代该标准的最近版本,最近版本已以至少草案形式(如果更近则最终形式优先)在适用专利法下的本公开的最早优先权日公布。
[0276]
虽然在附图中示出了示例性实施例并且在上文进行了描述,但是对于本领域的普通技术人员来说明显的是,在不脱离权利要求中所阐述的原理和概念的情况下可以进行许
多修改,并且这样的修改不需要涵盖整个抽象概念。尽管主题以结构特征和/或过程动作专用的语言进行了描述,但是应当理解,所附权利要求中所限定的主题不必然限于权利要求中所描述的特定技术特征或动作。在给定定义或示例中所标识的每个装置或方面或技术效果不必然在每个实施例中存在或利用。相反,所描述的具体特征和动作以及效果是作为实现权利要求时考虑的示例而被公开。
[0277]
所有未涵盖整个抽象概念但是在权利要求的含义和等效范围内的变更均应在法律允许的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献