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

用于容器部署的动态映像合成的制作方法

2022-03-19 18:32:35 来源:中国专利 TAG:

用于容器部署的动态映像合成


背景技术:

1.沙盒(sandboxing)是一种被设计成将操作系统和/或应用与主机设备上的底层计算资源和其他程序隔离的软件管理策略。例如,提供云计算服务的数据中心可以包括单独托管一个或多个虚拟机、容器或其他类型的虚拟化组件的大量服务器。虚拟化组件可以分开地为租户运行应用,而无需直接访问服务器的底层计算资源或彼此访问。沙盒因此可以提供安全层,安全层防止恶意软件或有害应用对主机设备或相同的主机设备上的其他虚拟化组件产生负面影响。


技术实现要素:

2.提供本概述是为了以简化的形式介绍将在下面的详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
3.尽管虚拟机和容器都可以用作虚拟化技术以适应计算、通信或其他类型的计算服务,但是虚拟机和容器具有不同特性。例如,虚拟机在资源方面的开销可以比容器大得多。虚拟机通常具有整个操作系统、一整套文件和目录结构、唯一配置、虚拟存储器分配以及应用,所有这些都可以达到几十千兆字节的大小。相比之下,容器(例如,基于docker的容器)是所提供的、促进需要运行的软件应用或服务的软件分组,诸如代码、运行时、工具、系统库等。容器可以共享主机设备的资源,诸如操作系统内核、设备驱动程序、数据文件、配置参数等。因此,容器通常具有比虚拟机低得多的存储器和映像(image)占用空间(例如,兆字节而不是千兆字节的大小)。
4.容器的软件分组或容器映像可以包括表示完整文件系统(例如,被组织为具有从属文件夹的文件夹)的数字数据,该完整文件系统包含操作系统内核、设备驱动程序、事件日志、临时文件/目录、应用和/或其他合适的组件。容器映像的大小通常约为几百兆字节。在计算/网络资源丰富的数据中心或其他计算环境中,部署这样的容器映像通常不会引起不必要的延迟。然而,在计算/网络资源稀缺的其他计算环境(例如,智能电话、物联网(iot)设备等)中,部署几百兆字节的容器映像可以引起不可接受的延迟。例如,经由慢速数据网络(例如,卫星数据网络、zigbee网络等)传输几百兆字节的数据可以占用大量时间。
5.一种减小容器映像的数据大小的技术包括在部署时间期间基于配方(recipe)文件动态地生成容器映像。配方文件可以标识软件组件的层,诸如:具有内核模块、设备驱动程序、应用等的“基础层”,可从主机设备处的主机操作系统获取;容器的一个或多个“修改层”,用于补充和/或修改基础层中的一个或多个文件;以及“暂存(scratch)层”,具有用于捕获对容器唯一的修改的文件。例如,基础层可以包括一组干净的、未修改的操作系统文件副本和一组作为重定向到主机/分组文件的占位符的重解析点(reparse point)。这种干净文件的示例可以包括注册表和通常在安装过程中修改的其他文件。
6.可以使用虚拟硬盘(“vhd”)或其他合适的技术来捕获容器映像的各个层。在部署期间,例如,主机设备上的容器管理器可以通过从主机操作系统复制或创建到所标识的组
件的硬链接来动态地生成完整容器映像,完整容器映像具有对容器唯一的文件以及根据配方文件的基础层和修改层。这样,为部署而传输的容器映像的大小可以从例如几千兆字节减小到几百兆字节。
7.尽管分层技术可以促进与主机操作系统的文件共享以减小所部署的容器映像的占用空间,但是前述容器映像生成技术在某些情况下也可以引起某些困难。例如,基础层和一个或多个修改层通常在配方文件中被定义,并且在实例化后不可修改。这样,在容器开始运行之后,可能不会向基础层和/或修改层添加最初未包括的附加组件(例如,新的重解析点)。为了将附加组件插入到基础层和/或修改层中,可以发起新的容器来代替原始容器。此外,使用虚拟硬盘(“vhd”)来存储用于将容器文件位置转换为主机文件位置的重解析点可能占用大量存储空间。vhd可以各自包括数千个重解析点,从而需要大量存储空间。此外,预定义的vhd堆栈可能变得不可靠,因为存储设备的第三方驱动程序有时会破坏预定义的vhd堆栈,从而导致不支持的错误。
8.此外,产生用于部署的容器映像可以需要大量的构建时间,并且导致高生产成本。例如,产生容器映像的一种实现可以包括两个构建过程来为部署产生和提供容器映像。为了构建容器映像,启动第一虚拟机,以例如通过生成捕获具有各种文件和重解析点的初始容器映像的vhd来根据配方文件在vhd上运行设置。然后可以实例化第二虚拟机,以提供在vhd中捕获的容器映像以用于部署。这样,通过使用两个虚拟机产生容器映像,工程/生产过程可能花费大量的构建时间,从而导致高生产成本。
9.所公开技术的几个实施例可以通过与映射表协作实现绑定过滤器(bind filter)来动态地标识和促进对基础层和/或修改层的附加的和/或不同的文件和组件的访问,从而解决前述困难的至少一些方面。在某些实施例中,主机上的容器管理器可以被配置为使用主机设备上托管的绑定过滤器(例如,经由使用窗口容器隔离fs文件过滤器驱动程序或“wcifs”)来虚拟化容器的文件系统。在其他实施例中,容器管理器可以被配置为使用被配置为重定向对于容器的文件的输入/输出(io)请求的其他合适的硬件/软件组件来虚拟化容器的文件系统。
10.在某些实现中,绑定过滤器可以被配置为在存储器中维护映射表或映射树(例如,分配给所部署的容器的虚拟存储器)。映射表可以包括单独包含引用的一个或多个条目,以将对于文件的io请求重定向到适当的文件位置。映射表可以由主机实例化,并且在每次将(多个)新文件或分组动态地添加到初始实例化的容器映像时更新。在一个示例中,分组设计者可以定义包含给定分组中所包括的每个文件的映射条目的映射配置文件。然后,配置文件可以用于生成被写入磁盘并被包括在容器映像中的绑定文件。绑定文件可以包含可由绑定过滤器用来构建和更新映射表的机器可读字节。
11.虽然分组和分组的(多个)文件可以被存储在主机上的任何合适的位置,但是绑定文件或作为“绑定分组”可以被放置在本地或全局绑定存储中。每个容器可以包括相对应的本地绑定存储,以用于存储和访问单容器特定绑定分组。单容器特定绑定分组的示例可以是可能只适用于某个容器的调试分组。全局绑定存储可以包含适用于主机上的多个或所有容器的绑定分组。全局绑定存储中的示例绑定分组可以包括与容器的主机的系统更新相关的绑定文件。
12.根据所公开技术的某些方面,容器的基础层可以包括与完整操作系统安装的目录
结构类似的目录结构。例如,基础层可以包括原始或“初始(pristine)”文件和重解析点的组合。例如,当由容器中运行的应用请求基础层中的重解析点时,容器管理器可以将相对应的io请求重定向到绑定过滤器。绑定过滤器进而可以在映射表中查找相对应的条目,并且将io请求定向到适当的位置,例如,基础层中的初始文件。在另一示例中,绑定过滤器可以针对存储在主机上的文件将io请求重定向到运行在主机上的主机文件共享服务器(例如,虚拟服务器消息块共享或“vsmb”共享)。主机文件共享服务器可以向访客(诸如容器)公开主机目录树,并且可以经由主机smb服务器在主机上进行重新配置。访客服务器消息块(“smb”)客户端(例如,运行在容器上)可以经由虚拟机总线(“vmbus”)与主机文件共享服务器进行通信。这样,经由主机文件共享服务器,io请求可以被重定向到可以访问来自主机的相对应的文件的合适位置。在一些实施例中,主机文件共享服务器可以是远程的,并且可以运行支持网络文件系统或设施来分发文件的任何合适类型的操作系统,诸如smb/cifs、网络文件系统(nfs)等。在一些实施例中,容器与主机之间的通信信道可以是不同于vmbus的事物,例如,通信信道可以被实现为网络连接,或者远程过程调用(rpc),或者经由其他合适的技术。
13.在进一步的示例中,重定向的io请求也可以被映射到远程位置(诸如公共/私有云计算系统)以提供容器的有效更新和/或其他服务。例如,操作系统更新的流程可以包括更新服务器(例如,在公共云中)向主机上的本地更新客户端发送更新通知。更新通知包括指向云中更新服务器的文件共享中的远程位置的绑定文件(例如,包含对现有映射表条目的更新)。更新客户端调用绑定过滤器,导致对存储器映射表的重定向更新被引导到更新共享的位置。当接收到新的io请求时,绑定过滤器根据更新的映射表将io请求重定向到更新文件在云中的位置,这可以触发现有文件的新版本的本地下载过程。如果另一过程当前正在使用现有文件的旧版本,则该文件的新版本将被复制到主机上的临时位置中。在被现有文件的旧版本的过程使用完成后,旧版本就可以被覆写。在一些实施例中,映射表条目可以包含推迟路径(deferred path),例如,包含别名目录、别名卷根、用户定义的目录位置、身份定义的目录位置等的部分路径。推迟路径可以取决于系统配置而在设置时或运行时由容器引擎解析。在一些实施例中,可能存在仅向容器公开主机上的一些文件的独立的或集成的策略或配置。
14.在一些实施例中,备份和/或高速缓存系统可以在映射表和/或支持映射表的组件中实现。在一个示例中,对于目标文件,映射表可以具有相同的目标文件的主要位置和备份位置。在另一示例中,对于目标文件,映射表可以具有相同的文件的带有不同安全配置文件(例如,托管位置、容器位置、数字签名等)的两个实例。在操作期间,映射表可以被配置为基于安全性、可用性或一些其他参数来选择文件的实例之一或从文件位置之一中选择。例如,如果请求容器在安全网络之外,则映射表可能更喜欢来自安全位置的文件的实例。然而,如果请求容器在安全网络中,并且本地文件源可用,则映射表可以从该本地网络中选择文件的实例。在又一示例中,可以实现高速缓存系统来确保映射表具有文件的最新版本。映射表可以被配置为基于文件版本号、发布日期或其他合适的元数据来提供文件的特定版本(例如,最新版本、最后版本等)。
15.在其他实现中,主机文件共享服务器还可以被配置为检查来自容器的文件请求,并且提供所请求文件。在一些实施例中,主机文件共享服务器可以检查请求文件的容器,分
析容器的配置文件(例如,硬件配置、位置或其他元数据),并且基于容器的配置文件来确定提供哪个文件。在一个示例中,容器可以具有某些硬件要求,并且主机文件共享服务器可以向容器提供适当的文件或文件的版本(例如,软件驱动程序)。在另一示例中,容器可以位于不安全的位置,并且主机文件共享服务器只能提供众所周知的文件,而不能提供对实现专有功能或商业秘密的文件的访问。
16.所公开技术的几个实施例因此可以允许计算系统中容器映像的灵活部署和更新。在一个方面,所公开技术的几个实施例避免使用vhd存储重解析点,因为每个链接现在被存储在主机的存储器中,作为由绑定过滤器维护的映射表中的条目。多个容器可以根据相对应的映射表来引用相同的共享文件。这样,可以消除对vhd堆栈的依赖,从而节省磁盘空间并减少由于第三方驱动程序引起的vhd堆栈的不支持错误而引起的不稳定性。通过不在vhd中存储重解析点,可以消除使用第一虚拟机设置和捕获基础分组的构建过程,从而将构建过程减少一半。此外,可以经由对映射表的更改来动态地修改所部署的容器映像。这些更改可以在容器运行时“实时地”发生,因为绑定过滤器被配置为实时地重新映射文件位置和解析对于文件/分组的查询。
附图说明
17.图1是根据所公开技术的实施例的实现用于部署容器的动态映像合成的计算系统的示意图。
18.图2a和图2b是示出根据所公开技术的实施例在部署容器映像的某些阶段期间图1的计算系统中的主机的某些硬件/软件组件的示意图。
19.图3a和图3b是示出根据所公开技术的实施例在运行应用的某些阶段期间图1的计算系统中的主机的某些硬件/软件组件的示意图。
20.图4a和图4b是示出根据所公开技术的实施例在更新容器映像的某些阶段期间图1的计算系统中的主机的某些硬件/软件组件的示意图。
21.图5a和图5b是示出根据所公开技术的实施例的用于部署容器的推迟路径解析的各个过程的流程图。
22.图6是合适于图1中计算系统的某些组件的计算设备。
具体实施方式
23.下面描述用于在计算设备上部署容器的动态映像合成的系统、设备、组件、模块、例程、数据结构和过程的某些实施例。在以下描述中,包括了组件的具体细节,以提供对所公开技术的某些实施例的透彻理解。相关领域的技术人员也将理解,该技术可以具有附加的实施例。该技术也可以在没有下面参考图1-图6描述的实施例的几个细节的情况下实现。
24.如本文中所使用的,“主机”或“主机设备”通常是指被配置为实现例如一个或多个虚拟机、容器或其他合适的虚拟化组件的计算设备。例如,主机可以包括具有管理程序的远程服务器,该管理程序被配置为支持一个或多个虚拟机、容器或其他合适类型的虚拟组件。在另一示例中,主机还可以包括台式计算机、膝上型计算机、智能电话、支持网络的器具(例如,相机)、或者被配置为实现一个或多个容器或其他合适类型的虚拟组件的其他合适的计算设备。
25.同样在本文中使用的术语“容器”通常是指包含完整文件系统中的一段软件(例如,应用)的软件分组,该完整文件系统具有计算机代码(例如,可执行指令)、运行时环境、系统工具、系统库、设备驱动程序或足以运行该段软件的其他合适的组件。运行在单个主机或虚拟机上的容器都可以共享相同的操作系统内核,并且可以利用系统存储器或虚拟存储器。容器可以具有与虚拟机类似的资源隔离和分配优势。然而,不同的架构方法允许容器比虚拟机更具可移植性和效率。例如,虚拟机通常包括一个或多个应用、必要的二进制文件和应用库、以及整个操作系统。相比之下,容器可以包含应用及其所有依赖项,但与相同的主机上的其他容器共享操作系统内核。这样,容器可以比虚拟机更具资源效率和灵活性。一个示例容器是华盛顿雷德蒙的微软公司的windows服务器容器。另一示例容器是linux容器或lxc。docker是一种由加利福尼亚州旧金山的docker公司提供的流行的打包和交付容器的机制。
26.同样在本文中使用的“容器映像”通常是指可部署在主机设备上的容器的软件分组。容器映像可以包括表示完整文件系统(例如,被组织为具有从属文件夹的文件夹)的数字数据,该完整文件系统包含操作系统内核、设备驱动程序、事件日志、临时文件/目录、应用和/或其他合适的组件或其引用。根据所公开技术的实施例,容器映像可以包括表示对容器唯一的文件的数字数据。这种唯一文件的示例可以包括不可从主机设备获取的事件日志文件、临时文件、应用文件等。容器映像还可以包括多个符号链接、软链接、重解析点、或者可从主机设备获取的附加文件的其他合适的引用占位符。在文本中另外使用的“容器过程”通常是指由主机设备的处理器运行的容器映像的实例。容器的实例通常包含程序代码和容器的相关活动。
27.本文中还使用的“文件系统”通常是指被配置为控制如何存储数据和从主机设备上的存储设备取回数据的软件组件。存储设备的示例可以包括硬盘驱动器、固态设备、磁带、网络驱动器或其他合适的持久性存储设备。示例文件系统可以包括文件分配表(fat)、新技术文件系统(ntfs)、扩展文件系统(xfs)等。用户可以经由“文件管理器”访问文件系统中的文件,“文件管理器”是提供用户界面来管理文件和文件夹的计算机程序。文件管理器通常提供诸如创建、打开(例如,查看、播放、编辑或打印)、重命名、移动或复制、删除、搜索文件以及修改文件特性、属性和文件权限等功能。一个示例文件管理器是华盛顿雷德蒙的微软公司提供的windows文件管理器。
28.本文中另外使用的“文件路径”或“路径”通常是指指定文件系统中相对应的文件、目录或驱动器的唯一位置的数据。路径可以包括驱动器、目录、文件名或由分隔字符(诸如斜杠(“/”)、反斜杠(“\”)或冒号(“:”))分隔开的其他合适的组成部分。“绝对”或“完整路径”指向文件系统中的位置,而不管当前工作目录如何。完整路径的示例是“c:\windows\system32\ntdll.dll”。相比之下,“相对路径”从给定工作目录(例如,“c:\windows”)开始,避免了提供完整路径的需要。相对路径的示例是“\system32\ntdll.dll”,如果工作目录是“c:\windows”,则可以连接该相对路径以获得完整路径“c:\windows\system32\ntdll.dll”。
29.同样在本文中使用的“绑定过滤器”通常是指被配置为根据映射表将文件系统命名空间绑定到文件系统外部的不同位置的软件过滤器。在某些实现中,这种绑定对于用户来说是透明的。这样,对于用户来说,绑定文件和本地文件是不可区分的。术语“映射表”通
常是指包含单独地标识到重解析点的文件路径或位置的条目的表或其他合适的数据结构。各个条目可以包括标识虚拟根、目标根、异常根和其他相关选项的数据。在某些实现中,映射表可以以树数据结构进行布置。例如,树的每个节点可以对应的组成部分为虚拟根,并且包含指向相对应的目标根的指针。在其他实现中,映射表可以被布置为表、数组或其他合适的数据结构。
30.本文中另外使用的“分组”或“文件分组”通常是指与功能相对应的一个或多个文件的逻辑分组。文件可以彼此靠近地存储在文件系统中,或者可以被存储在不同的位置(例如,本地或远程位置)中。除了文件之外,分组还可以包括映射文件,映射文件包含映射到分组中每个文件的位置的条目。映射文件可以存在于磁盘上,以供绑定过滤器用来构建映射表。这样,映射文件可以用作绑定过滤器的映射配置。映射文件的存储模型可以分为(每个容器的)本地绑定存储和(多个容器的)全局绑定存储。本地绑定存储包括用于容器本地的绑定的映射配置数据。例如,调试分组可以被存储在本地绑定存储中,因为一次只调试一个容器。全局绑定存储包括适用于多个容器的映射配置。示例映射配置可以包括分组,诸如由华盛顿雷德蒙的微软公司提供的.net。
31.即使容器映像比虚拟机映像小得多,在低资源计算系统中部署容器映像仍然是挑战。一种进一步减小容器映像的数据大小的技术包括在部署时间期间除了对容器唯一的文件之外还基于容器映像中所包括的配方文件来动态地生成容器映像。配方文件还可以包括存储在vhd中的重解析点。重解析点可以标识可从主机设备处的主机操作系统获得的软件组件,诸如内核模块、设备驱动程序、应用等。在部署期间,主机设备上的容器管理器可以通过从主机操作系统复制所标识的组件或者创建到主机操作系统的所标识的组件的硬链接,根据重解析点动态地生成完整的容器映像。这样,为部署而传输的容器映像的大小可以进一步减小,例如,从几千兆字节减小到几百兆字节。
32.然而,前述动态生成技术在某些情况下可以引起其他操作问题。例如,在部署期间,配方文件中标识的组件通常是预定义的。这样,在容器开始运行之后,可能不会添加最初部署的容器映像的附加组件(例如,附加的文件或重解析点)。此外,使用vhd存储重解析点仍然会占用大量存储空间。此外,预定义的vhd堆栈可以变得不可靠,因为存储设备的第三方驱动程序有时会破坏预定义的vhd堆栈,从而导致不支持的错误。此外,为部署产生容器映像可以需要大量的构建时间,并且导致高生产成本。例如,为了构建容器映像,发起第一虚拟机,以根据配方文件在vhd上运行设置。然后可以创建第二虚拟机,以提供在vhd中捕获的容器映像用于部署。这样,通过使用两个虚拟机为部署产生和提供容器映像,部署过程可以花费大量的构建时间,从而导致高生产成本。
33.所公开技术的几个实施例可以通过实现绑定过滤器以基于映射表动态地标识和促进对容器映像的附加和/或不同的文件和组件的访问,来解决前述缺点的某些方面。在某些实施例中,容器映像可以包括具有多个文件标识的配方文件以及具有条目的映射配置数据,该条目单独地标识容器映像中标识的多个文件中的每个文件的位置。在接收到配方文件后,主机设备上的容器管理器可以启动绑定过滤器,并且基于映射配置数据为绑定过滤器构建映射表。所构建的映射表可以包括条目,这些条目单独地标识容器映像中标识的多个文件中的每个文件的位置。在操作期间,当由例如所运行的应用请求容器映像中的文件时,容器管理器(或其他合适的组件)将相对应的io请求重定向到绑定过滤器。反过来,绑定
过滤器可以从映射表中查找所请求文件的位置,并且将io请求重定向到所标识的位置。这样,所公开技术的几个实施例因此可以进一步将容器映像的数据大小从几百兆字节减小到小于一百兆字节,并且允许容器映像在主机设备上的灵活部署和更新,如下面参考图1-图6更详细描述的。
34.图1是示出根据所公开技术的实施例的在容器部署期间实现动态映像合成的计算系统100的示意图。在图1和本文的其他附图中,各个软件组件、对象、类、模块和例程可以是以c、c 、c#、java和/或其他合适的编程语言编写为源代码的计算机程序、过程或进程。组件可以包括但不限于一个或多个模块、对象、类、例程、属性、进程、线程、可执行文件、库或其他组件。组件可以是源代码或二进制的形式。组件可以包括编译之前源代码的各方面(例如,类、属性、过程、例程)、编译后的二进制单元(例如,库、可执行文件)、或者在运行时实例化和使用的工件(例如,对象、进程、线程)。在某些实施例中,下面描述的各种组件和模块可以用参与者(actor)来实现。在其他实施例中,应用和/或相关服务的生成还可以使用单片应用、多层应用或其他合适的组件来实现。
35.系统内的组件在系统内可以采取不同的形式。作为一个示例,包括第一组件、第二组件和第三组件的系统可以涵盖但不限于第一组件是源代码中的属性、第二组件是二进制编译库、第三组件是在运行时创建的线程的系统。计算机程序、过程或进程可以被编译成目标代码、中间代码或机器代码,并且呈现给个人计算机、网络服务器、膝上型计算机、智能电话和/或其他合适的计算设备的一个或多个处理器来执行。同样,组件可以包括硬件电路。
36.本领域普通技术人员将认识到,硬件可以被认为是固化的软件,并且软件可以被认为是液化的硬件。仅举一个示例,组件中的软件指令可以被烧录到可编程逻辑阵列电路中,或者可以被设计为具有适当集成电路的硬件电路。同样,硬件也可以由软件来模拟。源代码、中间代码和/或目标代码以及相关数据的各种实现可以被存储在计算机存储器中,包括只读存储器、随机存取存储器、磁盘存储介质、光存储介质、闪存设备和/或除传播信号外的其他合适的计算机可读存储介质。
37.如图1所示,计算系统100可以包括主机102,主机102经由计算机网络125与一个或多个映像服务器120互连,映像服务器120与包含容器映像124的副本的网络存储装置122互连。计算机网络125可以包括内联网、广域网、互联网(例如,因特网)或其他合适类型的网络。即使计算系统100的特定组件在图1中示出,在其他实施例中,计算系统100也可以包括附加的和/或不同的组件或布置。例如,在某些实施例中,计算系统100还可以包括附加的主机、服务器和/或其他合适的组件(未示出)。在其他实施例中,可以省略映像服务器120。相反,容器映像124可以经由可移除存储设备(例如,闪存驱动器)或以其他合适的方式提供给主机102。
38.映像服务器120可以包括一个或多个远程服务器或其他合适类型的计算设备,其被配置为生成、组织容器映像124的副本并将其从网络存储装置122提供到主机102或其他合适的主机设备(未示出)。在某些实施例中,映像服务器120可以被配置为生成容器映像124,容器映像124包括对容器114唯一的文件或者已经存在于主机102上的文件107的标识。在其他实施例中,映像服务器120可以被配置为将容器映像124生成为文件夹、目录、压缩文件和/或其他合适类型的软件分组。如图1所示,在接收到来自主机102的请求后,映像服务器120可以被配置为经由计算机网络125向主机102提供所请求的容器映像124的副本。如下
文更详细描述的,所提供的容器映像124可以包括与容器映像124中标识的多个文件相对应的映射配置数据,并且可以用于将io请求重定向到主机102上的主机存储装置104中的某些文件107。
39.主机100可以是服务器、台式或膝上型计算机、智能电话或其他合适类型的计算设备。如图1所示,主机102可以包括主机操作系统103,主机操作系统103具有与包含文件107和映射表110的主机存储装置104互连的容器引擎105和文件管理器106。主机文件系统108可以被配置为组织文件107。映射表110可以包括条目,每个条目包含引用占位符(例如,重解析点)和主机102上的主机文件系统108或其他合适位置中相对应的文件107。尽管图1中示出了主机操作系统103的特定组件,但是在其他实施例中,主机操作系统103还可以包括设备驱动程序、事件日志、临时文件、实用程序和/或其他合适的软件组件。
40.主机存储装置104可以包括被配置为包含数字数据的任何合适的计算机可读存储设备。示例主机存储装置104可以包括硬件/软件组件,诸如硬盘驱动器、固态驱动器和相关联的文件系统。在所示实施例中,映射表110被示为存储在主机存储装置104中。在其他实施例中,映射表110也可以被存储在可移除存储设备(例如,闪存驱动器)、远程服务器(未示出)或文件管理器106可经由计算机网络125访问的其他合适的位置上。虽然在图1中仅示出一个映射表110,但是在其他实施例中,与多个容器114相对应的多个映射表110可以被存储在相对应的本地存储装置、本地绑定存储(未示出)中,而适用于多个容器114的其他映射表110可以被存储在全局绑定存储(未示出)中。
41.同样如图1所示,主机操作系统103可以被配置为支持一个或多个访客操作系统,诸如单独运行一个或多个应用116(分别示为第一应用116a和第二应用116b)的容器114(分别显示为第一容器114a和第二容器114b)。在其他实施例中,主机操作系统103还可以包括虚拟交换机(未示出)、虚拟路由器(未示出)或被配置为促进容器114和/或应用116的操作的其他合适的虚拟组件。出于说明的目的,在图1中示出了各自运行一个应用116a和116b的第一容器114a和第二容器114b。在其他实施例中,主机操作系统103可以支持各自执行任何合适数目的应用116的三个、四个或任何其他合适数目的容器114。
42.如图1所示,安全边界112将容器114与主机操作系统103隔离。安全边界112可以被实现为主机操作系统103中的一组规则(未示出),以限制或防止容器114和/或应用116访问主机操作系统103中的某些硬件/软件资源。例如,安全边界112可以限制或防止容器114访问计算、存储装置、网络或主机操作系统103可用的其他合适类型的资源。
43.容器引擎105可以被配置为管理容器114和应用116的部署和运行。例如,容器引擎105可以被配置为收集容器度量,实例化、启动、暂停、停止一个或多个容器114,管理容器114可用的资源,促进容器命令的运行,以及其他合适的操作。根据所公开技术的实施例,容器引擎105还可以被配置为基于从例如映像服务器120接收的容器映像124来部署容器114。容器映像124可以包括文件、文件标识以及与每个文件和文件标识相对应的映射配置数据。下面参考图2a和图2b描述根据所公开技术的实施例部署容器114的示例操作,而下面参考图3a-图3c描述容器114的操作。
44.文件管理器106可以被配置为提供用户界面来管理存储在主机存储装置104处的文件107和文件夹(未示出)。在某些实施例中,文件管理器106可以包括一个或多个文件系统过滤器,文件系统过滤器被单独地配置为执行某些文件系统功能,以便适应主机存储装
置104中的数据存储。示例功能可以包括创建时间戳、创建上次更改时间戳等。根据所公开技术的实施例,绑定过滤器115可以被配置为在运行时期间解析容器映像124中所包括的重解析点。这样,文件管理器106可以被配置为定位和提供容器114的所请求文件107,如下面参考图3a-图3c更详细描述的。在一些实施例中,容器映像124可以被自动更新。在其他实施例中,映像服务器120还可以向“基线”容器映像提供差异化的(或“差分”)映像,在这种映像中存在修补和/或更新的文件以提供有效的更新机制。
45.图2a和图2b是示出根据所公开技术的实施例在部署容器114的某些阶段期间图1的主机102的某些硬件/软件组件的示意图。在图2a和图2b以及本文的其他附图中,为了简洁起见,省略了计算系统100的某些组件。如图2a所示,用户101可以向容器引擎105提交对于在主机102上部署容器114(图1)的请求160。响应于从用户101接收到请求160,容器引擎105可以经由计算机网络125向映像服务器120发送映像请求162。作为响应,映像服务器120可以取回合适的容器映像124,并且将定位的容器映像124发送到主机102。在其他实施例中,容器引擎105可以从主机存储装置110或其他合适的位置取回容器映像162的副本。
46.容器映像124可以以许多合适的方式而被组织。例如,如图2a所示,容器映像124可以被配置为文件夹170(即,“examplecontainer\”),其中在文件夹170中有多个文件107'。文件107'可以包括由文件标识符172单独地标识的文件107a'的第一子集。在所示实施例中,文件标识符172各自包括各种文件107的标识,例如,“ntdll.dll”和“ole32.dll”。在图2a所示的示例中,文件标识符172各自由相对应的文件名标识。在其他示例中,文件标识符172可以由唯一的文件标识符、字母数字串或其他合适的标识符标识。容器映像124还可以包括由硬链接174单独地标识的文件107b'的第二子集。硬链接174可以标识对容器114唯一的文件107b'。在所示示例中,硬链接174标识名为“application.exe”的应用的可执行文件。在其他实施例中,硬链接174还可以标识容器114的事件日志、临时文件或其他合适的文件107'。
47.如图2a所示,容器映像124还可以包括具有条目的映射配置数据176,该条目单独地标识容器映像124中的文件107'之一和将访问文件107'的相对应的位置。例如,将从“c:\windows\system32”访问“ntdll.dll”和“ole32.dll”,而将经由“c:\application”访问“application.exe”。尽管映射配置数据176在图2a中被示出为表,但是在其他实现中,映射配置数据176可以作为文件标识的元数据或者以其他合适的方式被存储。
48.在接收到容器映像124后,容器引擎105可以被配置为部署由文件管理器106促进的容器114。例如,在一个实施例中,容器引擎105可以被配置为使用映射配置数据172为实例化的容器114生成映射表110。如图2b所示,容器映像124的各种组件可以被组织为树128,树128具有与目录和/或文件107'相对应的虚拟根和各种分支。树128中的每个节点可以对应于由映射配置数据176标识的位置。例如,表示虚拟根的节点可以对应于主机102上的“c:\”,而“/system/32”对应于主机102的“c:\”上的相同目录。如下面参考图3a和图3b更详细描述的,文件标识符172可以由文件管理器106在运行时期间解析,从而在运行时期间重定向文件请求和取回。
49.所公开技术的几个实施例可以通过不包括各种文件107的重解析点来进一步减小容器映像124的数据大小,这些文件107的副本将从主机存储装置104获得。如上所述,各种文件107的重解析点可能占用大量存储空间。通过消除重解析点并且改为仅包括文件标识
符172和相对应的位置,容器映像124可以显著地被减小。
50.图3a和图3b是示出根据所公开技术的实施例在运行时期间执行文件位置重定向的某些阶段期间图1的计算系统100中的主机102的某些硬件/软件组件的示意图。如图3a所示,在运行时期间,容器引擎105可以启动容器过程,以运行容器114中的应用116。在运行期间,容器过程可以经由容器引擎105传输对于容器映像124(图2b)中的文件107的文件请求164。在所示示例中,所请求文件107由文件标识符172“ntdll.dll”标识。
51.在接收到文件请求164后,文件管理器106的绑定过滤器115可以被配置为通过查找映射表110来将文件标识符172绑定到相对应的文件107,以获取所请求文件107的重定向位置,例如“c:\windows\system32\ntdll.dll”。然后,绑定过滤器115(或文件管理器106的其他合适的组件)可以根据所获得的所请求文件107的重定向位置(例如,经由文件107的完整路径)从存储设备104中取回文件107的副本或指针,并且将取回到的文件107'的副本或指针提供给容器过程,如图3b所示。
52.在一些实施例中,备份和/或高速缓存系统(未示出)可以在映射表110和/或支持映射表110的组件中实现。在一个示例中,对于目标文件107,映射表110可以具有相同的目标文件107的主要位置和备份位置。在另一示例中,对于目标文件107,映射表110可以具有相同的文件107的具有不同安全配置文件(例如,托管位置、容器位置、数字签名等)的两个实例。在操作期间,映射表110和/或绑定过滤器115可以被配置为基于安全性、可用性或一些其他参数来选择文件107的实例之一或从文件位置之一中选择。例如,如果请求容器114在安全网络之外,则映射表110和/或绑定过滤器115可能更喜欢来自安全位置的文件107的实例。然而,如果请求容器114在安全网络中,并且本地文件源可用,则映射表110和/或绑定过滤器115可以从该本地网络中选择文件107的实例。在又一示例中,例如,可以在主机存储装置104上实现高速缓存系统(未示出),以确保映射表110具有文件107的最新版本。映射表110可以被配置为基于文件版本号、发布日期或其他合适的元数据来提供文件107的特定版本(例如,最新版本、最后版本等)。
53.在其他实现中,文件管理器106(或主机102的其他合适的组件)也可以被配置为检查针对来自容器114的文件107的文件请求164,并且基于容器114的配置文件来提供所请求文件107。在一些实施例中,文件管理器106可以检查请求文件107的容器114,分析容器114的配置文件(例如,硬件/软件配置、位置或其他元数据),并且确定提供哪个文件107。在一个示例中,容器114可以具有某些硬件要求,并且文件管理器106可以被配置为向容器114提供适当的文件107或文件107的版本(例如,软件驱动程序)。在另一示例中,容器114可能处于不安全的位置,并且文件管理器106只能提供众所周知的文件107,而不能提供对实现专有功能或商业秘密的文件的访问。
54.图4a和图4b是示出根据所公开技术的实施例在更新容器映像124的某些阶段期间图1的计算系统100中的主机102的某些硬件/软件组件的示意图。如图4a所示,在所示示例中,将使用新的文件“ntdll_new.dll”来代替原始的“c:\windows\system32\ntdll.dll”。这种更新可以通过用与文件107相对应的新条目更新映射表110来执行。这样,由文件标识符172“ntdll.dll”标识的文件可以对应于位于“c:\temp\ntdll_new.dll”的新文件。在运行时期间,在接收到对于“ntdll.dll”的另一文件请求后,文件管理器106的绑定过滤器115可以被配置为通过查找映射表110来将文件标识符172绑定到文件107,以根据更新的条目
获取所请求文件的新重定向位置,例如,“c:\temp\ntdll_new.dll”。然后,绑定过滤器115(或文件管理器106的其他合适的组件)可以根据所获取的文件107'的新重定向位置从存储设备104取回文件107'的副本,并且将取回到的文件107'的副本提供给容器过程,如图4b所示。这样,容器映像124(图1)的组件可以实时地更新,而无需关闭容器114。
55.上述更新操作可以周期性地应用于主机系统更新(例如,对主机操作系统103的更新)以及以不规则节奏发生的独立特征更新。独立的特征更改由上述内容特别好地解决,因为当前难以确定地知道主机102上的特征是什么版本。所公开技术使得即使当容器114正在运行时,文件或文件的分组也能够被添加到容器114的“基线”版本,从而实现文件或分组的动态添加。绑定过滤器115的实现也可以加速容器114的调试。当前,为了调试容器114,通过为容器114中的每个单个文件分配重解析点来创建调试层。这种过程需要花费大量的时间(例如,20至30秒)和i/o来设置。所公开技术的几个实施例可以实现选择性调试,因为只有到被测试的文件107的映射可以被映射到调试器可访问的过滤器中。
56.尽管上面在部署容器114的上下文中描述了所公开技术的特定方面,但是所公开技术的实施例也可以应用于更新例如虚拟机(未示出)上的操作系统或主机操作系统103(图1)。当前的操作系统更新管道具有各种安全风险和攻击向量(vector)。恶意程序和其他恶意软件可以禁用主机102上的操作系统更新。
57.所公开技术的几个实施例可以允许对主机操作系统进行高效且安全的更新。在一个实现中,更新云存储通知目标主机102。该通知包括具有映射配置数据176的轻量级分组,映射配置数据176包含到云托管的文件位置的映射。对于文件107的每个新文件请求,绑定过滤器115检查文件位置是本地的还是在云中。如果位置在云中,则绑定过滤器115可以确定当前操作是主机102第一次尝试使用更新的文件107。然后,绑定过滤器115可以将请求引导到云托管的位置,并且从云中本地复制文件。在复制更新的文件107之后,如果在文件107的旧版本上存在指示旧版本的副本当前正在使用中的活动句柄,则绑定过滤器115可以将该副本存储在临时位置,或者如果在旧版本上没有活动句柄,则立即覆写文件107的现有本地副本。然后,绑定过滤器115可以根据更新文件的新位置继续更新映射表110,直到最终更新的文件出现在预期的本地位置中。前述更新管道可以通过云中/网络上的文件加密应用或者经由诸如飞地(enclave)的技术来进一步保护。
58.图5a-图5c是示出根据所公开技术的实施例的用于部署容器的推迟路径解析的各种过程的流程图。尽管下面参考图1的计算系统100描述了这些过程,但是在其他实施例中,这些过程可以在具有附加和/或不同的组件的计算系统中实现。
59.如图5a所示,过程200可以包括在阶段202接收对部署容器的请求。响应于接收到该请求,在某些实施例中,过程200可以可选地包括在阶段204启动主机102(图1)上的虚拟机来托管容器。在其他实施例中,可以省略阶段204的操作。过程200然后可以包括在阶段212获取容器映像。在一个示例中,容器映像可以从映像服务器120(图1)获取。在其他示例中,容器映像可以经由可移除存储设备或其他合适的来源获取。如上参考图2a和图2b所述,所获取的容器映像可以包括用于在运行时期间重定向文件访问的一个或多个映射配置数据。过程200还可以包括在阶段208在运行时期间运行容器映像。下面参考图5b更详细地描述执行容器映像的示例操作。
60.如图5b所示,运行容器映像的示例操作可以包括在阶段214接收对于容器映像中
的文件的请求。响应于接收到该请求,操作包括在阶段216将对所请求文件的访问重定向到由映射表标识的位置。操作然后可以包括在阶段218根据该位置从主机102(图1)访问文件。
61.图6是适合于图1中计算系统100的某些组件的计算设备300。例如,计算设备300可以适合于图1的主机102或映像服务器120。在基础配置302中,计算设备300可以包括一个或多个处理器304和系统存储器306。存储器总线308可以用于处理器304与系统存储器306之间的通信。
62.取决于期望的配置,处理器304可以是任何类型,包括但不限于微处理器(μp)、微控制器(μc)、数字信号处理器(dsp)或其任意组合。处理器304可以包括一级或多级高速缓存(诸如一级高速缓存310和二级高速缓存312)、处理器核314和寄存器316。示例处理器核314可以包括算术逻辑单元(alu)、浮点单元(fpu)、数字信号处理核(dsp核)或其任意组合。示例存储器控制器318也可以与处理器304一起使用,或者在一些实现中,存储器控制器318可以是处理器304的内部部分。
63.取决于期望的配置,系统存储器306可以是任何类型,包括但不限于易失性存储器(诸如ram)、非易失性存储器(诸如rom、闪存等)或其任意组合。系统存储器306可以包括操作系统320、一个或多个应用322和程序数据324。
64.计算设备300可以具有附加的特征或功能以及附加的接口,以促进基础配置302与任何其他设备和接口之间的通信。例如,总线/接口控制器330可以用于促进基础配置302与一个或多个数据存储设备332之间经由存储接口总线334的通信。数据存储设备332可以是可移除存储设备336、不可移除存储设备338或其组合。可移除存储设备和不可移除存储设备的示例包括磁盘设备(诸如软盘驱动器和硬盘驱动器(hdd))、光盘驱动器(诸如光盘(cd)驱动器或数字多功能盘(dvd)驱动器)、固态驱动器(ssd)和磁带驱动器等。示例计算机存储介质可以包括以用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术来实现的易失性和非易失性的、可移除和不可移除的介质。术语“计算机可读存储介质”或“计算机可读存储设备”不包括传播信号和通信介质。
65.系统存储器306、可移除存储设备336和不可移除存储设备338是计算机可读存储介质的示例。计算机可读存储介质包括但不限于ram、rom、nvram、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光学存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储设备,或者可用于存储所需信息并可由计算设备300访问的任何其他介质。任何这样的计算机可读存储介质都可以是计算设备300的一部分。术语“计算机可读存储介质”不包括传播信号和通信介质。
66.计算设备300还可以包括用于促进经由总线/接口控制器330从各种接口设备(例如,输出设备342、外围接口344和通信设备346)到基础配置302的通信的接口总线340。示例输出设备342包括图形处理单元348和音频处理单元350,其可以被配置为经由一个或多个a/v端口352与诸如显示器或扬声器的各种外部设备通信。示例外围接口344包括串行接口控制器354或并行接口控制器356,其可以被配置为经由一个或多个i/o端口358与外部设备(诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)通信。示例通信设备346包括网络控制器360,网络控制器360可以被布置为促进经由一个或多个通信端口364在网络通信链路上与一个或多个其他本地设备362通信。
67.网络通信链路可以是通信介质的一个示例。通信介质通常可以由计算机可读指令、数据结构、程序模块或诸如载波或其他传输机制的调制数据信号中的其他数据来实现,并且可以包括任何信息传递介质。“调制数据信号”可以是一种其一个或多个特性以在信号中编码信息的方式被设置或改变的信号。作为示例而非限制,通信介质可以包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、射频(rf)、微波、红外(ir)和其他无线介质)。本文中使用的术语计算机可读介质可以包括存储介质和通信介质。
68.计算设备300可以被实现为小型便携式(或移动)电子设备的一部分,诸如蜂窝电话、个人数据助理(pda)、个人媒体播放器设备、无线网络观看设备、个人耳机设备、专用设备或包括任何上述功能的混合设备。计算设备300也可以被实现为包括膝上型计算机和非膝上型计算机配置的个人计算机。
69.出于说明的目的,上面已经描述了该技术的特定实施例。然而,在不偏离前述公开的情况下,可以进行各种修改。此外,除了或代替其他实施例的元件,一个实施例的许多元件可以与其他实施例组合。相应地,除了由所附权利要求限制之外,该技术不受其他限制。
再多了解一些

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

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

相关文献