CN111492347B - 用于更新容器的系统和方法 - Google Patents

用于更新容器的系统和方法 Download PDF

Info

Publication number
CN111492347B
CN111492347B CN201980006604.8A CN201980006604A CN111492347B CN 111492347 B CN111492347 B CN 111492347B CN 201980006604 A CN201980006604 A CN 201980006604A CN 111492347 B CN111492347 B CN 111492347B
Authority
CN
China
Prior art keywords
container
application
data volume
application container
auxiliary code
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.)
Active
Application number
CN201980006604.8A
Other languages
English (en)
Other versions
CN111492347A (zh
Inventor
V·戈埃尔
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.)
Veritas Technologies LLC
Original Assignee
Veritas Technologies LLC
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 Veritas Technologies LLC filed Critical Veritas Technologies LLC
Publication of CN111492347A publication Critical patent/CN111492347A/zh
Application granted granted Critical
Publication of CN111492347B publication Critical patent/CN111492347B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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
    • 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/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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

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)

Abstract

所公开的用于更新容器的计算机实现的方法可包括(i)识别从静态应用程序容器图像实例化的应用程序容器;(ii)识别辅助代码,该辅助代码被设计为修改在该应用程序容器中执行的应用程序的执行;(iii)将辅助代码打包到要部署到托管该应用程序容器的主机系统的数据量容器图像中;(iv)通过该应用程序容器发现从该主机系统上的该数据量容器图像实例化的数据量容器;以及(v)通过该应用程序容器至少部分地通过利用指向含有该辅助代码的该数据量容器的位置的指针实例化该应用程序容器,来利用该辅助代码修改在该应用程序容器中执行的该应用程序的该执行,而不修改该静态应用程序容器图像。本发明还公开了各种其他方法、系统和计算机可读介质。

Description

用于更新容器的系统和方法
背景技术
在过去,大型计算项目仅限于拥有具有计算机塔架的大型物理数据中心的个人和企业。现在,分布式计算允许具有资源的任何人购买服务器空间,以根据需要运行他们首选的计算设备的许多实例。已经以应用程序容器的形式引入了进一步的效率改进,该应用程序容器允许管理员在不需要模拟每个虚拟化应用程序的整个虚拟化操作系统所需的资源的情况下运行应用程序。容器可减少每个应用程序的处理要求,从而允许在同一主机上运行更多数量的应用程序。容器可用于从持续数分钟的短期操作到持续数周或数月的长期操作的任何操作,并且可被配置为运行各种应用程序以便完成各种计算任务。
许多用于容器分布的传统系统利用容器图像,容器图像是容器代码的静态版本,它们是易携带的并且可用于对容器进行实例化。更新或以其他方式修改从图像生成的基于容器的应用程序通常涉及重建该图像并将新图像重新分布到托管该容器的所有位置。遗憾的是,重建和重新分布图像的过程可能消耗大量计算资源并且涉及潜在不期望的延迟。因此,本公开识别并解决了对用于更新容器的系统和方法的需求。
发明内容
如将在下文更详细地描述,本公开描述了用于通过在由应用程序容器发现的数据量容器中分布辅助代码来更新容器的各种系统和方法。
在一个示例中,用于更新容器的计算机实现的方法可包括(i)识别应用程序容器,该应用程序容器从静态应用程序容器图像实例化并且将在应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与其他软件共享内核空间;(ii)识别辅助代码,该辅助代码被设计为修改在该应用程序容器中执行的应用程序的执行;(iii)将该辅助代码打包到要部署到托管该应用程序容器的主机系统的数据量容器图像中;(iv)通过该应用程序容器发现指向从该主机系统上的该数据量容器图像实例化的数据量容器的位置的指针;以及(v)通过该应用程序容器至少部分地通过利用指向含有该辅助代码的该数据量容器的位置的指针实例化该应用程序容器,来利用该辅助代码修改在该应用程序容器中执行的该应用程序的该执行,而不修改该静态应用程序容器图像。
在一个实施方案中,通过应用程序容器发现指向从主机系统上的数据量容器图像实例化的数据量容器的位置的指针可包括在创建静态应用程序容器图像时,用脚本配置该静态应用程序容器图像,该脚本在该应用程序容器被从该静态应用程序容器图像实例化时扫描查找新的辅助代码;以及通过执行该脚本的应用程序容器发现该数据量容器的位置。在一个实施方案中,用扫描查找新的辅助代码的脚本配置静态应用程序容器图像可包括配置该脚本以扫描预先确定的目录;将辅助代码打包到要部署到托管该应用程序容器的主机系统的数据量容器图像中可包括配置该数据量容器图像以在主机系统上的预先确定的目录中将数据量容器实例化,并且通过该脚本发现辅助代码可包括发现该预先确定的目录中的数据量容器。
在一个实施方案中,通过应用程序容器发现指向从主机系统上的数据量容器图像实例化的数据量容器的位置的指针可包括用脚本配置在主机系统上实例化应用程序容器的容器平台,该脚本在通过该容器平台实例化该应用程序容器时扫描查找新的辅助数据。该实施方案还可包括通过在对该应用程序容器进行实例化时执行该脚本的容器平台发现该数据量容器的位置。在一些示例中,通过应用程序容器利用辅助代码修改在应用程序容器中执行的应用程序的执行可包括通过应用程序容器在数据量容器内的数据量中定位安装脚本,以及执行该安装脚本。
在一些示例中,利用指向含有辅助代码的数据量容器的位置的指针来实例化应用程序容器可包括重启该应用程序容器。在一个实施方案中,计算机实现的方法还可包括(i)利用指向含有附加辅助代码的新数据量容器的位置的附加指针重启应用程序容器;(ii)通过该应用程序容器发现新数据量容器的位置;(iii)通过应用程序容器自动重新发现指向从主机系统上的数据量容器图像实例化的数据量容器的位置的指针;以及(iv)通过应用程序容器利用辅助代码和附加辅助代码修改在应用程序容器中执行的应用程序的执行。
在一个实施方案中,辅助代码可包括在应用程序容器中执行的应用程序的插件。附加地或另选地,辅助代码可包括在应用程序容器中执行的应用程序的补丁。在一个实施方案中,通过应用程序容器发现指向数据量容器在主机系统上的位置的指针可包括在主机系统上的数据量容器的位置与主机系统上的新位置之间创建符号链接。
在一个实施方案中,计算机实现的方法还可包括(i)识别托管应用程序的第一实例的第一应用程序容器和托管应用程序的第二实例的第二应用程序容器;(ii)识别附加辅助代码,该附加辅助代码被设计为修改该应用程序的执行;(iii)将该附加辅助代码打包到附加数据量容器图像中;(iv)通过该第一应用程序容器发现指向从该附加数据量容器图像实例化的附加数据量容器的位置的指针;(v)通过该第一应用程序容器利用附加辅助代码而不是利用辅助代码修改在该第一应用程序容器中执行的应用程序的第一实例的执行;以及(vi)通过该第二应用程序容器利用辅助代码而不是利用附加辅助代码修改在该第二应用程序容器中执行的应用程序的第二实例的执行。
在一个实施方案中,用于实施上述方法的系统可包括(i)存储在存储器中的识别模块,该识别模块(a)识别应用程序容器,该应用程序容器从静态应用程序容器图像实例化,并且将在该应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与其他软件共享内核空间,以及(b)识别辅助代码,该辅助代码被设计为修改在该应用程序容器中执行的应用程序的执行;(ii)打包模块,该打包模块存储在存储器中,该打包模块将该辅助代码打包到要部署到托管该应用程序容器的主机系统的数据量容器图像中;(iii)发现模块,该发现模块存储在存储器中,该发现模块通过该应用程序容器发现指向从主机系统上的数据量容器图像实例化的数据量容器的位置的指针;(iv)修改模块,该修改模块存储在存储器中,该修改模块通过应用程序容器至少部分地通过利用指向含有辅助代码的数据量容器的位置的指针实例化该应用程序容器,来利用该辅助代码修改在该应用程序容器中执行的应用程序的执行,而不修改静态应用程序容器图像;以及(v)至少一个物理处理器,该至少一个物理处理器执行识别模块、打包模块、发现模块和修改模块。
在一些示例中,上述方法可被编码为非暂态计算机可读介质上的计算机可读指令。例如,计算机可读介质可包括一个或多个计算机可执行指令,该一个或多个计算机可执行指令当由计算设备的至少一个处理器执行时,可以使计算设备(i)识别应用程序容器,该应用程序容器从静态应用程序容器图像实例化并且将在应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与其他软件共享内核空间;(ii)识别辅助代码,该辅助代码被设计为修改在该应用程序容器中执行的应用程序的执行;(iii)将该辅助代码打包到要部署到托管该应用程序容器的主机系统的数据量容器图像中;(iv)通过该应用程序容器发现指向从该主机系统上的该数据量容器图像实例化的数据量容器的位置的指针;以及(v)通过该应用程序容器至少部分地通过利用指向含有该辅助代码的该数据量容器的位置的指针实例化该应用程序容器,来利用该辅助代码修改在该应用程序容器中执行的该应用程序的该执行,而不修改该静态应用程序容器图像。
来自任意上述实施方案的特征可根据本文所述的一般原理彼此结合使用。在结合附图和权利要求阅读以下详细描述后,将更全面地理解这些以及其他实施方案、特征和优点。
附图说明
附图示出多个示例性实施方案,并且是说明书的一部分。这些附图与以下描述一起展示并说明本公开的各种原理。
图1是用于更新容器的示例性系统的框图。
图2是用于更新容器的附加示例性系统的框图。
图3是用于更新容器的示例性方法的流程图。
图4是用于更新容器的示例性计算系统的框图。
图5是用于更新容器的示例性计算系统的框图。
在整个附图中,相同的参考字符和描述指示类似但未必相同的元件。虽然本文所述的示例性实施方案易存在各种修改形式和另选形式,但是附图中以举例的方式示出了具体实施方案,这些实施方案将在本文中详细描述。然而,本文所述的示例性实施方案并非旨在限于所公开的特定形式。相反,本公开涵盖落在所附权利要求范围内的所有修改形式、等同形式和替代形式。
具体实施方式
本公开整体涉及用于更新容器的系统和方法。如将在下文更详细地解释,通过配置应用程序容器图像和/或容器平台以通过每当应用程序容器被实例化时搜索新的辅助代码来自动发现包含附加组件(add-on)、热修复补丁、插件等的数据量容器,本文所述的各种系统和方法可以能够在具有最少的用户干预并且不需要改变基础应用程序容器图像的情况下有效地利用新代码更新应用程序容器。此外,本文所述的系统和方法可以通过改善在计算设备上的容器内执行的应用程序的功能和/或改善将更新应用于计算设备上的应用程序容器的效率来改善计算设备(诸如云服务器)的功能和/或性能。这些系统和方法还可通过提供用于更新在虚拟化容器中执行的应用程序的有效过程和/或通过用辅助代码简化用于定制应用程序容器的过程来允许在不同上下文中使用相同的应用程序容器图像来改善虚拟化领域。
以下将参考图1、图2、图4和图5提供用于更新容器的示例性系统的详细描述。还将结合图3提供对应的计算机实现的方法的详细描述。
图1是用于更新容器的示例性系统100的框图。如该图所示,示例性系统100可以包括用于执行一个或多个任务的一个或多个模块102。例如,并且如将在下文更详细地解释,示例性系统100可包括识别模块104,该识别模块识别应用程序容器,该应用程序容器从静态应用程序容器图像实例化,并且将在该应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与其他软件共享内核空间。在一些示例中,识别模块104还可识别辅助代码,该辅助代码被设计为修改在应用程序容器中执行的应用程序的执行。示例性系统100可另外包括打包模块106,该打包模块将辅助代码打包到要部署到托管应用程序容器的主机系统的数据量容器图像中。示例性系统100还可包括发现模块108,该发现模块通过应用程序容器发现指向从主机系统上的数据量容器图像实例化的数据量容器的位置的指针。示例性系统100可另外包括修改模块110,该修改模块通过应用程序容器至少部分地通过利用指向含有辅助代码的数据量容器的位置的指针实例化该应用程序容器,来利用辅助代码修改在该应用程序容器中执行的应用程序的执行,而不修改静态应用程序容器图像。虽然示出为单独元件,但图1的模块102中的一个或多个可表示单个模块或应用程序的若干部分。
在某些实施方案中,图1中的模块102中的一个或多个可表示一个或多个软件应用程序或程序,其在由计算设备执行时可使计算设备执行一个或多个任务。例如,并且如将在下文更详细地描述的,模块102中的一者或多者可以表示被存储并且被配置为在一个或多个计算设备上运行的模块,这些计算设备诸如为图2中所示的设备(例如,计算设备202和/或主机系统206)。图1中的模块102中的一个或多个还可表示被配置为执行一个或多个任务的一个或多个专用计算机的全部或部分。
如图1所示,示例性系统100还可以包括一个或多个存储器设备,诸如存储器140。存储器140通常表示能够存储数据和/或计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。在一个示例中,存储器140可以存储、加载和/或维护模块102中的一个或多个。存储器140的示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器、硬盘驱动器(HDD)、固态驱动器(SSD)、光盘驱动器、高速缓存、上述一者或多者的变体或组合、或任何其他合适的存储器。
如图1所示,示例性系统100还可以包括一个或多个物理处理器,诸如物理处理器130。物理处理器130通常表示能够解释和/或执行计算机可读指令的任何类型或形式的硬件实现的处理单元。在一个示例中,物理处理器130可以访问和/或修改存储在存储器140中的模块102中的一个或多个。附加地或另选地,物理处理器130可执行模块102中的一个或多个,以促进更新容器。物理处理器130的示例包括但不限于微处理器、微控制器、中央处理单元(CPU)、实现软核处理器的现场可编程门阵列(FPGA)、专用集成电路(ASIC)、上述一者或多者的部分、上述一者或多者的变体或组合、或任何其他合适的物理处理器。
如图1所示,示例性系统100还可包括一个或多个附加元件120,诸如应用程序容器122、辅助代码124、数据量容器图像126和/或数据量容器128。应用程序容器122通常表示能够托管应用程序的任何类型或形式的虚拟化平台。辅助代码124通常表示可应用于应用程序和/或可修改应用程序的行为的任何类型或形式的代码。数据量容器图像126通常表示可用于将数据量容器实例化的任何类型或形式的代码。数据量容器128通常表示能够存储和/或执行辅助代码的任何类型或形式的虚拟化容器。
图1中的示例性系统100可以以各种方式实现。例如,示例性系统100的全部或一部分可以表示图2中的示例性系统200的部分。如图2所示,系统200可包括计算设备202,所述计算设备经由网络204与主机系统206通信。在一个示例中,模块102的全部或部分功能可以由计算设备202、主机系统206和/或任何其他合适的计算系统来执行。如下文将更详细地描述的,当由计算设备202和/或主机系统206的至少一个处理器执行时,图1中的模块102中的一者或多者可以使计算设备202和/或主机系统206能够更新容器。
计算设备202通常表示能够读取计算机可执行指令的任何类型或形式的计算设备。在一些实施方案中,计算设备202可以是由开发者使用的个人计算设备。在其他实施方案中,计算设备202可以是云服务器。计算设备202的附加示例包括但不限于膝上型计算机、平板电脑、台式计算机、服务器、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统、可穿戴设备(例如,智能手表、智能眼镜等)、智能车辆、所谓的物联网设备(例如,智能器具等)、游戏机、上述一个或多个的变体和组合或任何其他合适的计算系统。
主机系统206通常表示能够托管一个或多个虚拟化容器的任何类型或形式的计算设备。在一些实施方案中,主机系统206可以是云服务器。主机系统206的附加示例包括但不限于存储服务器、数据库服务器、应用程序服务器和/或web服务器,其被配置为运行某些软件应用程序和/或提供各种存储、数据库和/或web服务。虽然在图2中被示出为单个实体,但主机系统206可包括和/或表示彼此协同工作和/或操作的多个服务器。
网络204通常表示能够促进通信或数据传送的任何介质或架构。在一个示例中,网络204可促进计算设备202与主机系统206之间的通信。在该示例中,网络204可使用无线和/或有线连接促进通信或数据传送。网络204的示例包括但不限于:内联网、广域网(WAN)、局域网(LAN)、个人区域网(PAN)、互联网、电力线通信(PLC)、蜂窝网络(例如,全球移动通信系统(GSM)网络)、上述一者或多者的部分、上述一者或多者的变体或组合、或任何其他合适的网络。
应用程序208通常表示任何类型或形式的可执行代码。应用程序容器图像210通常表示可用于将应用程序容器实例化的任何类型或形式的代码。
许多其他设备或子系统可以连接到图1中的系统100和/或图2中的系统200。相反,图1和图2中所示的所有部件和设备不必都存在来实践本文描述和/或示出的实施方案。上文提及的设备和子系统也可以按照与图2所示不同的方式互连。系统100和200也可以采用任何数量的软件配置、固件配置和/或硬件配置。例如,本文所公开的示例性实施方案中的一个或多个可以被编码为计算机可读介质上的计算机程序(也被称为计算机软件、软件应用程序、计算机可读指令和/或计算机控制逻辑)。
如本文所用,术语“计算机可读介质”通常是指能够存储或携带计算机可读指令的任何形式的设备、载体或介质。计算机可读介质的示例包括但不限于传输型介质,诸如载波,和非暂态型介质,诸如磁存储介质(例如,硬盘驱动器、磁带驱动器和软盘)、光存储介质(例如,光盘(CD、)、数字视频盘(DVD)、BLU-RAY磁盘)、电子存储介质(例如,固态驱动器和闪存介质)和其他分配系统。
图3是用于更新容器的示例性计算机实现的方法300的流程图。图3中所示的步骤可由任何合适的计算机可执行代码和/或计算系统执行,包括图1中的系统100、图2中的系统200和/或上述一者或多者的变体或组合。在一个示例中,图3中示出的每个步骤可以表示其结构包括和/或由多个子步骤表示的算法,其示例将在下文更详细地提供。
如图3所示,在步骤302处,本文所述的系统中的一个或多个可识别应用程序容器,该应用程序容器从静态应用程序容器图像实例化,并且将在该应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与其他软件共享内核空间。例如,识别模块104可作为图2中的计算设备202的一部分识别应用程序容器122,该应用程序容器从静态应用程序容器图像210实例化并且将在应用程序容器122内执行的应用程序208的用户空间与主机系统206上的其他软件隔离,同时与这些其他软件共享内核空间。
如本文所用的术语“应用程序”通常是指能够启动进程的任何可执行代码。在一些实施方案中,应用程序可以是软件。附加地或另选地,应用程序可为脚本。在一些示例中,应用程序可以是独立应用程序。在其他示例中,应用程序可以是较大系统的前端,诸如用于Web应用程序的接口。在一些示例中,应用程序可包括相互配合的程序和/或可执行对象的集合。在一个示例中,应用程序可以是备份、存储和/或重复数据删除应用程序。
如本文所用的术语“容器”通常是指不包括整个操作系统但包括足够的计算资源以在由来自主机计算系统的操作系统的计算资源补充时执行至少一个进程和/或应用程序的任何类型的虚拟环境。在一些实施方案中,容器内的资源和/或进程可与容器外部的资源和/或进程隔离。例如,容器可将部署系统的用户空间与部署系统上的其他软件隔离,同时与这些其他软件共享内核空间。如本文所用的术语“用户空间”通常是指在计算环境中存储器的执行应用软件的部分。在一些实施方案中,用户空间可包括库、图形引擎、用于某些设备的设备驱动程序和/或系统守护进程。如本文所用的术语“内核空间”通常是指计算环境中存储器的被保留用于执行操作系统内核、内核扩展和设备驱动程序的部分。相比之下,不是容器(诸如虚拟机)的虚拟化环境可能不与其他软件共享内核空间。也不是容器的其他形式的应用程序虚拟化可以与其他应用程序共享内核空间和用户空间两者。在一些实施方案中,容器可仅执行单个进程和/或应用程序,而在其他实施方案中,容器可执行多个进程和/或应用程序。在一些实施方案中,容器可为DOCKER容器。如本文所用的术语“应用程序容器”通常是指存储和/或托管应用程序的容器。在一些示例中,应用程序容器还可以托管用于应用程序的捆绑部件。
如本文所用的术语“容器图像”通常是指存储描述容器的数据和/或可重建到执行中的容器中但其本身不是执行中的容器的数据的数据对象。在一些实施方案中,容器图像可为包含执行容器所必需的数据的压缩文件。在一些示例中,容器图像可以由父容器图像构建。在一些示例中,从由容器图像创建容器实例的系统的角度来看,容器图像可为只读的。在一些示例中,本文所述的系统中的一个或多个可以从单个容器图像创建多个容器实例。
识别模块104可以以各种方式和/或情境识别应用程序容器。例如,识别模块104可以响应于接收到更新可用于在容器中执行的应用程序的信息来识别应用程序容器。在另一个示例中,识别模块104可以通过搜索当前正在托管特定应用程序的所有容器来识别应用程序容器。附加地或另选地,识别模块104可以响应于用户指定应用程序容器而识别该应用程序容器。
在步骤304处,本文所述的系统中的一者或多者可识别辅助代码,该辅助代码被设计为修改在应用程序容器中执行的应用程序的执行。例如,识别模块104可作为图2中的计算设备202的一部分,识别辅助代码124,该辅助代码被设计为修改在应用程序容器122中执行的应用程序208的执行。
如本文所用的术语“辅助代码”通常是指被设计为修改另一个应用程序的行为的任何代码。在一些实施方案中,辅助代码可包括应用程序,该应用程序通过向另一应用程序提供参数、限制该另一应用程序可用的动作、拦截去往和/或来自该另一应用程序的消息和/或执行其他动作来修改该另一个应用程序的行为。在其他实施方案中,辅助代码可以不是独立应用程序,而是被设计为应用于应用程序的代码。例如,辅助代码可以是被设计为解决应用程序的问题和/或向应用程序添加功能的热修复补丁、补丁、插件、更新或其他代码。在一些示例中,辅助代码可包括内部逻辑以更新配置参数和/或处理除安装新二进制数和/或库之外的现有应用程序数据。在一些实施方案中,辅助代码可包括创建二进制数和/或库和/或对应用程序进行配置改变的安装脚本。
识别模块104可以各种方式识别辅助代码。在一个示例中,辅助代码可以是应用程序的自动更新,并且识别模块104可经由应用程序的更新服务来识别辅助代码。在另一个示例中,开发者可以将辅助代码指定给识别模块104。附加地或另选地,识别模块104可通过执行对与应用程序相关的辅助代码的搜索来识别辅助代码。
在步骤306处,本文所述的系统中的一者或多者可将辅助代码打包到要部署到托管应用程序容器的主机系统的数据量容器图像中。例如,打包模块106可以作为图2中的计算设备202的一部分将辅助代码124打包到要部署到托管应用程序容器122的主机系统206的数据量容器图像126中。
如本文所用的术语“数据量容器”通常是指包含被配置为暴露于其他容器的一个或多个数据量的任何容器。在一些实施方案中,数据量容器可以是只读的和/或可包含暴露为只读的数据量。在一些示例中,数据量容器可以是和/或包含被命名的量。在一些实施方案中,除了被当做容器之外或者替代被当做容器,数据量容器可以被容器平台当做数据量。在一些实施方案中,多个应用程序容器可以从相同的只读数据量容器中读取。如本文所用,术语“数据量”通常是指存储可由应用程序和/或进程读取的一个或多个文件的任何目录。在一些示例中,数据量可包含二进制数、库和/或配置文件的组合。
打包模块106可以各种方式和/或情境打包辅助代码。例如,打包模块106可以通过从基础容器图像复制来创建容器图像以托管辅助代码。在一些实施方案中,辅助代码可被打包到容器中,因为辅助代码可能不能够被独立地执行。
在一些示例中,打包模块106可将单条辅助代码(诸如插件)打包在数据量容器图像中。在其他示例中,打包模块106可将旨在用于相同应用程序的多条辅助代码打包到一个数据量容器图像中。在一些实施方案中,打包模块106可以将多条辅助代码打包到不同的数据量中,然后打包模块106将这些不同的数据量打包到单个数据量容器图像中。在一些示例中,数据量容器可仅包括辅助代码,从而导致数据量容器图像占据与辅助代码中文件占据的总存储器相同量的存储器。
在步骤308处,本文所述的系统中的一者或多者可通过应用程序容器发现指向从主机系统上的数据量容器图像实例化的数据量容器的位置的指针。例如,发现模块108可作为图2中的计算设备202的一部分通过应用程序容器122发现数据量容器128在主机系统206上的位置。
发现模块108可以多种方式发现指向从数据量容器图像实例化的数据量容器的位置的指针。在一些实施方案中,应用程序容器和/或执行应用程序容器的容器平台可以被用脚本配置,该脚本发现数据量容器和/或数据量容器图像的位置。在一些示例中,数据量容器图像可以存储在主机系统的容器图像高速缓存中,并且数据量容器图像可以被配置为在预先确定的位置中将数据量容器实例化。在一些实施方案中,发现模块108可发现数据量容器图像的位置,然后可以在应用程序容器被实例化之前和/或之时从数据量容器图像将数据量容器实例化。在其他实施方案中,一旦部署了数据量容器图像,容器平台就可以从数据量容器图像将数据量容器实例化,并且发现模块108可以发现实例化的数据量容器的位置。在一些示例中,应用程序容器可以接收关于实例化的数据量容器的信息,但是可以不接收关于数据量容器图像的信息。在一些实施方案中,发现模块108可发现一个数据量容器内的多个数据量。在一些示例中,发现模块108可发现单个数据量容器内的所有数据量。
例如,打包模块106可以作为应用程序容器的一部分通过以下方式来打包数据量容器图像在主机系统上的位置:在创建静态应用程序容器图像时,用脚本配置该静态应用程序容器图像,该脚本在该应用程序容器被从静态应用程序容器图像实例化时扫描查找新的辅助代码。在该实施方案中,发现模块108可通过执行脚本的应用程序容器来发现数据量容器的位置。在一些实施方案中,用扫描查找新的辅助代码的脚本配置静态应用程序容器图像可包括配置该脚本以扫描预先确定的目录;以及将辅助代码打包到要部署到托管该应用程序容器的主机系统的数据量容器图像中可包括配置该数据量容器图像以在主机系统上的预先确定的目录中将数据量容器实例化。在该实施方案中,通过脚本发现辅助代码可包括发现预先确定的目录中的数据量容器。在一些实施方案中,发现模块108可在应用程序容器被重启和/或实例化之前发现和/或安装数据量容器,以便使对应用程序的操作的影响最小化。
在一些示例中,容器可发现存储在预先确定的目录中的数据量容器和/或容器图像的所有实例和/或可一次发现多个数据量容器。例如,如图4所示,应用程序容器408可在主机系统406上执行。在一些示例中,应用程序容器408可托管应用程序410和/或用脚本412进行配置。在一个实施方案中,每当应用程序408被实例化时,在应用程序410被启动之前,应用程序容器408可执行脚本412以在预先确定的目录414中搜索数据量容器。在一些示例中,预先确定的目录414可包含含有辅助代码418的数据量容器416和/或含有辅助代码424的数据量容器422。在一个示例中,脚本412可以发现数据量容器416和/或数据量容器422和/或可以将辅助代码418和/或辅助代码424应用于应用程序410。
在一个实施方案中,打包模块106可以通过以下方式将数据量容器图像打包在主机系统上:用脚本配置在主机系统上实例化应用程序容器的容器平台,该脚本在通过该容器平台实例化该应用程序容器时扫描查找新的辅助数据。在该实施方案中,发现模块108可通过在将应用程序容器实例化时执行脚本的容器平台发现数据量容器的位置。如本文所用的术语“容器平台”通常是指能够执行容器的任何应用程序、模块、脚本和/或代码。在一些实施方案中,容器平台可以将容器图像文件作为输入,并且可以从图像文件启动容器。在一些示例中,容器平台可以托管由容器使用的数据量和/或其他数据。在一些实施方案中,容器平台可包括容器引擎。例如,容器平台可以是DOCKER容器引擎。
在一个实施方案中,发现模块108可在主机系统上的数据量容器的位置与主机系统上的新位置之间创建符号链接。在一个示例中,发现模块108可在数据量容器的位置与应用程序容器的名称空间内的位置之间创建符号链接。在一些实施方案中,数据量容器可包括创建符号链接的脚本。在一些示例中,相同的脚本可以创建符号链接并在应用程序容器中安装辅助代码。通过创建符号链接,本文所述的系统可以通过将数据量容器复制到不同目录来节省存储器和/或处理能力。在一些示例中,本文所述的系统可以在数据量容器的位置与多个其他位置之间创建符号链接。例如,本文所述的系统可创建到不同的特定于应用程序的目录的符号链接,在这些目录中不同的应用程序容器预期找到数据量容器。在一些实施方案中,本文所述的系统可创建到数据量容器的只读版本的符号链接,以便保持数据量容器的完整性。
返回图3,在步骤310处,本文所述的系统中的一者或多者可通过应用程序容器至少部分地通过利用指向含有辅助代码的数据量容器的位置的指针实例化该应用程序容器,来利用该辅助代码修改在该应用程序容器中执行的应用程序的执行,而不修改静态应用程序容器图像。例如,修改模块110可作为图2中的计算设备202的一部分通过应用程序容器122至少部分地通过利用指向含有辅助代码124的数据量容器128的位置的指针实例化应用程序容器122,来利用该辅助代码124修改在该应用程序容器122中执行的应用程序208的执行,而不修改静态应用程序容器图像210。
修改模块110可以多种方式利用辅助代码来修改应用程序。例如,在辅助代码是热修复补丁、补丁、插件或类似物的情况下,修改模块110可通过将辅助代码应用于应用程序来用该辅助代码修改该应用程序。在另一个示例中,修改模块110可通过以下方式来用辅助代码修改应用程序:以一种方式执行辅助代码,该方式使得辅助代码能够采取影响应用程序的动作,诸如重新配置应用程序、向应用程序提供参数、拦截去往和/或来自应用程序的流量、限制应用程序的权限、和/或以其他方式管理应用程序。在一些示例中,修改模块110还可以更新应用程序的数据、配置和/或未打包在数据量容器图像中的其他设置。
在一些示例中,修改模块110可通过重启应用程序容器来用指向包含辅助代码的数据量容器的位置的指针修改应用程序容器。例如,修改模块110可重启容器,并且可以将数据量容器的位置作为重启应用程序容器的命令的参数传递。在其他示例中,修改模块110可以实例化先前未被执行的应用程序容器,并且可以用指向数据量容器位置的指针实例化应用程序。在一些实施方案中,修改模块110可通过在存储在数据量容器中的数据量中运行安装脚本来使用辅助代码修改应用程序。在一些示例中,修改模块110可以在存储在相同数据量容器内的多个数据量中的每个数据量内运行安装脚本。
在一些实施方案中,执行同一应用程序的各实例的不同应用程序容器可以使用存储于存储在不同数据量容器图像和/或从数据量容器图像实例化的数据量容器中的不同数据量中的不同辅助代码来发现和/或修改应用程序。例如,如图5所示,主机系统506可以托管容器平台508。在一些示例中,容器平台508可以托管都从应用程序容器图像520实例化的应用程序容器512、514和/或516,和/或应用程序510的所有主机实例。在一个示例中,应用程序容器512可在发现数据量容器522之后用辅助代码524修改应用程序510,应用程序容器516可在发现数据量容器526之后用辅助代码528修改应用程序510,和/或应用程序容器514可在发现数据量容器522和数据量容器526两者之后用辅助代码524和辅助代码528修改应用程序510。在一个示例中,辅助代码524可以是为由应用程序510的实例在应用程序容器512和514而不是应用程序容器516中执行的任务添加有用功能的插件,而辅助代码528可以是为由应用程序510的实例在应用程序容器514和516而不是应用程序容器512中执行的任务添加有用功能的插件。
在一些实施方案中,先前已发现数据量容器的应用程序容器可在每次该应用程序容器被重启时自动重新发现该数据量容器。在一些示例中,即使当重启由于新的数据量容器而变得可用时,应用程序容器也可自动重新发现先前发现的数据量容器。例如,应用程序容器514可发现数据量容器522并且可用辅助代码524修改应用程序510。在稍后的时间,可重启应用程序容器514并且可发现数据量容器526。在一些示例中,应用程序容器514还可自动重新发现数据量容器522,并且可以用辅助代码524和辅助代码528两者修改应用程序510。在一些实施方案中,应用程序容器514可以发现两个数据量容器,因为这两个数据量容器都可存储在预先确定的目录中。附加地或另选地,容器平台508可以跟踪哪些数据量容器已经被哪些应用程序容器发现。
在一些实施方案中,本文所述的系统可以提供用户界面,该用户界面可以允许用户添加和/或减去由每个应用程序容器读取的数据量容器。在一个实施方案中,已经被应用程序容器发现的数据量容器可以被该应用程序容器在每次重启时自动重新发现,直到用户从与该应用程序容器相关联的数据量容器列表中移除该数据量容器。在一些示例中,用户可移除数据量容器,以便防止补丁、插件、热修复补丁或其他辅助代码在下一次重启应用程序容器之后继续应用于应用程序。在一个示例中,用户可以通过移除具有当前应用版本的数据量容器、添加具有不同版本的数据量容器以及重启应用程序容器来改变应用于应用程序的插件、热修复补丁或其他辅助代码的版本。
如上面结合方法300所讨论的,本文所述的系统和方法可以通过以下方式来有效地更新应用程序容器而不创建新的应用程序容器图像:用脚本配置应用程序容器图像和/或容器平台,该脚本每当应用程序容器被实例化时发现相关的辅助代码。在一些示例中,每当容器被重启时辅助代码可以对于应用程序容器可用,直到用户移除辅助代码和/或安装辅助代码的指令。例如,容器可托管传统应用程序,该传统应用程序需要大量补丁以保持现行和/或使用多个插件来添加对于应用程序的所有实例可能不必要的功能。不是每次补丁被释放时创建新的应用程序容器图像和/或为使用不同插件配置的应用程序的每个实例创建新的应用程序容器图像,本文所述的系统可使得应用程序容器能够通过将辅助代码定位在可预测的位置和/或跟踪哪个辅助代码被应用于哪个容器来在每次重启时自动发现和安装相关的补丁和/或插件。通过以这种方式发现和安装热修复补丁、补丁和插件,本文所述的系统和方法可以支持具有各种不同配置并且需要各种更新的应用程序容器,而不必不断地创建和部署新的应用程序容器图像并且不需要管理员在每次重启应用程序容器时手动应用补丁和其他代码。
虽然上述公开使用特定框图、流程图和示例阐述了各种实施方案,但每个框图部件、流程图步骤、操作和/或本文描述和/或示出的部件可使用多种硬件、软件或固件(或它们的任意组合)配置单独和/或共同地实施。此外,包含在其他部件内的部件的任何公开应当被视为在本质上是示例的,因为可实施许多其他体系结构来实现相同的功能。
在一些示例中,图1中的示例性系统100的全部或一部分可以表示基于云计算或网络的环境的部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如,软件即服务、平台即服务、基础设施即服务等)可通过网页浏览器或其它远程接口访问。本文所述的各种功能可通过远程桌面环境或任何其他基于云的计算环境提供。
在各种实施方案中,图1中的示例性系统100的全部或一部分可促进基于云的计算环境内的多重租赁。换句话讲,本文所述的模块可配置计算系统(例如,服务器)以促进本文所述的功能中的一种或多种的多重租赁。例如,本文所述的模块中的一个或多个可对服务器进行编程以允许两个或更多个客户端(例如,顾客)共享正在服务器上运行的应用程序。以这种方式编程的服务器可在多个顾客(即,租户)之间共享应用程序、操作系统、处理系统和/或存储系统。本文所述的模块中的一个或多个还可为每个顾客分割多租户应用程序的数据和/或配置信息以使得一个顾客不能访问另一个顾客的数据和/或配置信息。
根据各种实施方案,图1中的示例性系统100的全部或一部分可以在虚拟环境内实现。例如,本文所述的模块和/或数据可在虚拟机内驻留和/或执行。如本文所用,术语“虚拟机”通常是指由虚拟机管理器(例如,超级管理程序)从计算硬件中提取出来的任何操作系统环境。
在一些示例中,图1中的示例性系统100的全部或一部分可以表示移动计算环境的部分。移动计算环境可由多种移动计算设备来实施,所述移动计算设备包括移动电话、平板电脑、电子书阅读器、个人数字助理、可穿戴计算设备(例如,具有头戴式显示器的计算设备、智能手表等)、上述一者或多者的变体或组合、或任何其他合适的移动计算设备。在一些示例中,移动计算环境可具有一个或多个显著特征,包括例如依赖电池供电、在任何给定时间只呈现一个前台应用程序、远程管理特征、触摸屏特征、(例如,由全球定位系统、陀螺仪、加速计等提供的)位置和移动数据、用于限制对系统级配置的修改和/或限制第三方软件检查其他应用程序的行为的能力的受限平台、用于限制应用程序的安装(例如,仅限于安装来源于经批准的应用程序商店的应用程序)的控件,等等。本文所述的各种功能可被提供用于移动计算环境和/或可与移动计算环境交互。
本文描述和/或示出的过程参数和步骤序列仅以举例的方式给出并且可根据需要改变。例如,虽然本文示出和/或描述的步骤可以特定顺序示出或讨论,但这些步骤不必以示出或讨论的顺序来执行。本文描述和/或示出的各种示例方法也可省略本文描述或示出的步骤中的一个或多个,或除了所公开的那些步骤之外还包括另外的步骤。
虽然本文已经在全功能计算系统的上下文中描述和/或示出了各种实施方案,但是这些示例性实施方案中的一个或多个可以作为各种形式的程序产品来分配,而不考虑用于实际进行分配的计算机可读介质的特定类型。本文所公开的实施方案还可以使用执行某些任务的模块来实现。这些模块可以包括脚本文件、批文件或可存储在计算机可读存储介质上或计算系统中的其他可执行文件。在一些实施方案中,这些模块可以将计算系统配置为执行本文所公开的示例性实施方案中的一个或多个。
前文的描述旨在使本领域的其他技术人员能够最好地利用本文所公开的示例实施方案的各个方面。该示例性描述并非旨在是详尽的或限于所公开的任何确切形式。在不脱离本公开的实质和范围的前提下,可进行许多修改和变化。本文所公开的实施方案在所有方面均应被视为示例性的而非限制性的。应参考所附权利要求及其等同形式来确定本公开的范围。
除非另有说明,否则本说明书和权利要求中所用的术语“连接到”和“联接到”(以及它们的衍生形式)应被理解为既允许直接的连接,又允许间接(即,经由其他元件或部件)的连接。此外,本说明书和权利要求中所用的术语“一”或“一个”应被理解为意指“至少一个...”。最后,为了便于使用,本说明书和权利要求中所用的术语“包括”和“具有”(以及它们的衍生形式)与词语“包含”可互换并且与词语“包含”具有相同含义。

Claims (20)

1.一种用于更新容器的计算机实现的方法,所述方法由包括至少一个处理器的计算设备执行,所述方法包括:
在创建静态应用程序容器图像时,用脚本配置所述静态应用程序容器图像,所述脚本在应用程序容器被从所述静态应用程序容器图像实例化时扫描预先确定的目录以查找辅助代码;
识别所述应用程序容器,所述应用程序容器从所述静态应用程序容器图像实例化,并且将在所述应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与所述其他软件共享内核空间;
识别所述辅助代码,所述辅助代码被设计为修改在所述应用程序容器中执行的所述应用程序的执行;
将所述辅助代码打包到要部署到托管所述应用程序容器的所述主机系统的数据量容器图像中;
由执行所述脚本的所述应用程序容器发现指向从所述主机系统上的所述数据量容器图像实例化的数据量容器的位置的指针;以及
通过所述应用程序容器至少部分地通过利用指向含有所述辅助代码的所述数据量容器的所述位置的指针实例化所述应用程序容器,来利用所述辅助代码修改在所述应用程序容器中执行的所述应用程序的所述执行,而不修改所述静态应用程序容器图像。
2.根据权利要求1所述的计算机实现的方法,其中通过所述应用程序容器发现指向所述数据量容器在所述主机系统上的所述位置的所述指针包括:
由执行所述脚本的所述应用程序容器发现包含所述辅助代码的所述数据量容器的所述位置。
3.根据权利要求1所述的计算机实现的方法,其中:
将所述辅助代码打包到要部署到托管所述应用程序容器的所述主机系统的所述数据量容器图像中包括配置所述数据量容器图像以在所述主机系统上的所述预先确定的目录中实例化所述数据量容器;以及
通过所述脚本发现所述辅助代码包括发现所述预先确定的目录中的所述数据量容器。
4.根据权利要求1所述的计算机实现的方法,其中通过所述应用程序容器发现指向所述数据量容器在所述主机系统上的所述位置的所述指针包括:
用所述脚本配置在所述主机系统上实例化所述应用程序容器的容器平台,所述脚本在通过所述容器平台实例化所述应用程序容器时扫描查找辅助数据;以及
通过在对所述应用程序容器进行实例化时执行所述脚本的所述容器平台发现所述数据量容器的所述位置。
5.根据权利要求1至4中任一项所述的计算机实现的方法,其中利用指向含有所述辅助代码的所述数据量容器的所述位置的所述指针来实例化所述应用程序容器包括重启所述应用程序容器。
6.根据权利要求1至4中任一项所述的计算机实现的方法,还包括:
用指向含有附加辅助代码的新数据量容器的位置的附加指针来重启所述应用程序容器;
由执行所述脚本的所述应用程序容器,通过执行对与所述新数据量容器相对应的预先确定的目录进行扫描的脚本,发现所述新数据量容器的所述位置;以及
由执行所述脚本的所述应用程序容器,在所述主机系统通过执行对与所述新数据量容器相对应的预先确定的目录进行扫描的脚本而被重启时,自动再发现所述数据量容器在所述主机系统上的所述位置。
7.根据权利要求1至4中任一项所述的计算机实现的方法,其中所述辅助代码包括在所述应用程序容器中执行的所述应用程序的插件。
8.根据权利要求1至4中任一项所述的计算机实现的方法,其中所述辅助代码包括在所述应用程序容器中执行的所述应用程序的补丁。
9.根据权利要求1至4中任一项所述的计算机实现的方法,其中通过所述应用程序容器发现所述数据量容器在所述主机系统上的所述位置包括在所述主机系统上的所述数据量容器的所述位置与所述主机系统上的新位置之间创建符号链接。
10.根据权利要求1至4中任一项所述的计算机实现的方法,还包括:
识别托管所述应用程序的第一实例的第一应用程序容器和托管所述应用程序的第二实例的第二应用程序容器;
识别被设计为修改所述应用程序的所述执行的附加辅助代码;
将所述附加辅助代码打包到附加数据量容器图像中;
通过所述第一应用程序容器发现指向从所述附加数据量容器图像实例化的附加数据量容器的位置的指针;
通过所述第一应用程序容器利用所述附加辅助代码而不是利用所述辅助代码修改在所述第一应用程序容器中执行的所述应用程序的所述第一实例的所述执行;以及
通过所述第二应用程序容器利用所述辅助代码而不是利用所述附加辅助代码修改在所述第二应用程序容器中执行的所述应用程序的所述第二实例的所述执行。
11.根据权利要求1至4中任一项所述的计算机实现的方法,其中由所述应用程序容器利用所述辅助代码修改在所述应用程序容器中执行的所述应用程序的所述执行包括:
通过所述应用程序容器在所述数据量容器内的数据量中定位安装脚本;以及
执行所述安装脚本。
12.一种用于更新容器的系统,所述系统包括:
用于配置的装置,所述用于配置的装置存储在存储器中,所述用于配置的装置在创建静态应用程序容器图像时用脚本配置所述静态应用程序容器图像,所述脚本在应用程序容器被从所述静态应用程序容器图像实例化时扫描预先确定的目录以查找辅助代码;
用于识别的装置,所述用于识别的装置存储在存储器中,所述用于识别的装置:
识别所述应用程序容器,所述应用程序容器从所述静态应用程序容器图像实例化,并且将在所述应用程序容器内执行的应用程序的用户空间与主机系统上的其他软件隔离,同时与所述其他软件共享内核空间;以及
识别辅助代码,所述辅助代码被设计为修改在所述应用程序容器中执行的所述应用程序的执行,其中所述静态应用程序容器图像配置有所述脚本;
用于打包的装置,所述用于打包的装置存储在存储器中,所述用于打包的装置将所述辅助代码打包到要部署到托管所述应用程序容器的所述主机系统的数据量容器图像中;
用于发现的装置,所述用于发现的装置存储在存储器中,所述用于发现的装置通过所述应用程序容器发现从所述主机系统上的所述数据量容器图像实例化的数据量容器的位置;以及
用于修改的装置,所述用于修改的装置存储在存储器中,所述用于修改的装置通过所述应用程序容器至少部分地通过利用指向含有所述辅助代码的所述数据量容器的所述位置的指针实例化所述应用程序容器,来利用所述辅助代码修改在所述应用程序容器中执行的所述应用程序的所述执行,而不修改所述静态应用程序容器图像;以及
至少一个物理处理器,所述至少一个物理处理器执行所述用于识别的装置、所述用于打包的装置、所述用于发现的装置、所述用于修改的装置和所述用于配置的装置。
13.根据权利要求12所述的系统,其中所述用于发现的装置通过以下方式而通过所述应用程序容器发现指向所述数据量容器在所述主机系统上的所述位置的所述指针:
由执行所述脚本的所述应用程序容器发现包含所述辅助代码的所述数据量容器的所述位置。
14.根据权利要求12所述的系统,其中所述用于发现的装置:
通过配置所述数据量容器图像以在所述主机系统上的所述预先确定的目录中实例化所述数据量容器,来将所述辅助代码打包到要部署到托管所述应用程序容器的所述主机系统的所述数据量容器图像中;以及
通过所述脚本通过发现所述预先确定的目录中的所述数据量容器来发现所述辅助代码。
15.根据权利要求12所述的系统,其中所述用于发现的装置通过以下方式而通过所述应用程序容器发现指向所述数据量容器在所述主机系统上的所述位置的所述指针:
用所述脚本配置在所述主机系统上实例化所述应用程序容器的容器平台,所述脚本在通过所述容器平台实例化所述应用程序容器时扫描查找辅助数据;以及
通过在对所述应用程序容器进行实例化时执行所述脚本的所述容器平台发现所述数据量容器的所述位置。
16.根据权利要求12至15中任一项所述的系统,其中所述用于修改的装置通过重启所述应用程序容器来利用指向含有所述辅助代码的所述数据量容器的所述位置的所述指针来实例化所述应用程序容器。
17.根据权利要求12至15中任一项所述的系统,其中:
所述用于修改的装置利用指向含有附加辅助代码的新数据量容器的位置的附加指针来重启所述应用程序容器;
所述用于发现的装置:
由所述应用程序容器,通过执行对与所述新数据量容器相对应的预先确定的目录进行扫描的脚本,发现所述新数据量容器的所述位置;以及
由所述应用程序容器,在所述主机系统通过执行对与所述数据量容器相对应的所述预先确定的目录进行扫描的脚本而被重启时,自动再发现所述数据量容器在所述主机系统上的所述位置。
18.根据权利要求12至15中任一项所述的系统,其中所述辅助代码包括在所述应用程序容器中执行的所述应用程序的插件。
19.根据权利要求12至15中任一项所述的系统,其中所述辅助代码包括在所述应用程序容器中执行的所述应用程序的补丁。
20.根据权利要求12至15中任一项所述的系统,其中通过所述应用程序容器利用所述辅助代码修改在所述应用程序容器中执行的所述应用程序的所述执行包括:
通过所述应用程序容器在所述数据量容器内的数据量中定位安装脚本;以及
执行所述安装脚本。
CN201980006604.8A 2018-01-30 2019-01-29 用于更新容器的系统和方法 Active CN111492347B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/883286 2018-01-30
US15/883,286 US10740132B2 (en) 2018-01-30 2018-01-30 Systems and methods for updating containers
PCT/US2019/015740 WO2019152442A1 (en) 2018-01-30 2019-01-29 Systems and methods for updating containers

Publications (2)

Publication Number Publication Date
CN111492347A CN111492347A (zh) 2020-08-04
CN111492347B true CN111492347B (zh) 2023-11-24

Family

ID=65409621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980006604.8A Active CN111492347B (zh) 2018-01-30 2019-01-29 用于更新容器的系统和方法

Country Status (5)

Country Link
US (1) US10740132B2 (zh)
EP (1) EP3746887A1 (zh)
JP (1) JP2021509200A (zh)
CN (1) CN111492347B (zh)
WO (1) WO2019152442A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10440153B1 (en) 2016-02-08 2019-10-08 Microstrategy Incorporated Enterprise health score and data migration
US11283900B2 (en) 2016-02-08 2022-03-22 Microstrategy Incorporated Enterprise performance and capacity testing
US10540191B2 (en) * 2017-03-21 2020-01-21 Veritas Technologies Llc Systems and methods for using dynamic templates to create application containers
US10929114B2 (en) * 2018-07-28 2021-02-23 Box, Inc. Static asset containers
US10877741B2 (en) * 2018-08-22 2020-12-29 Verizon Patent And Licensing Inc. Containerized systems and methods for customer premises equipment
US11775475B2 (en) * 2019-03-05 2023-10-03 Microsoft Technology Licensing, Llc Deferred path resolution during container deployment
US11307839B2 (en) * 2019-06-26 2022-04-19 Hewlett Packard Enterprise Development Lp Updating of container-based applications
US11556367B2 (en) 2019-08-06 2023-01-17 Microsoft Technology Licensing, Llc Dynamic image composition for container deployment
US11288053B2 (en) * 2019-08-15 2022-03-29 Microstrategy Incorporated Conversion and restoration of computer environments to container-based implementations
US11106455B2 (en) 2019-08-15 2021-08-31 Microstrategy Incorporated Integration of containers with external elements
US11829742B2 (en) * 2019-08-15 2023-11-28 Microstrategy Incorporated Container-based server environments
US11637748B2 (en) 2019-08-28 2023-04-25 Microstrategy Incorporated Self-optimization of computing environments
US11507295B2 (en) 2019-08-30 2022-11-22 Microstrategy Incorporated Backup, restoration, and migration of computer systems
US11210189B2 (en) 2019-08-30 2021-12-28 Microstrategy Incorporated Monitoring performance of computing systems
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11360881B2 (en) 2019-09-23 2022-06-14 Microstrategy Incorporated Customizing computer performance tests
US11438231B2 (en) 2019-09-25 2022-09-06 Microstrategy Incorporated Centralized platform management for computing environments
US11029975B2 (en) * 2019-10-02 2021-06-08 International Business Machines Corporation Automated container image assembly
US11836158B2 (en) 2020-02-03 2023-12-05 Microstrategy Incorporated Deployment of container-based computer environments
EP4107614A4 (en) * 2020-02-21 2023-10-25 Telefonaktiebolaget Lm Ericsson (Publ) METHOD FOR UPDATING APPLICATIONS IN CLOUD ENVIRONMENTS
CN113741951A (zh) * 2020-05-29 2021-12-03 北京沃东天骏信息技术有限公司 本地打包方法和装置
US11226807B1 (en) 2020-07-31 2022-01-18 Rapid7, Inc. Self-dependent upgrade of Java runtime environments
US20220191239A1 (en) * 2020-12-16 2022-06-16 Dell Products, L.P. Fleet remediation of compromised workspaces
CN113296805A (zh) * 2021-02-25 2021-08-24 阿里巴巴集团控股有限公司 一种辅助容器实现热升级的方法及装置
CN113760325B (zh) * 2021-05-11 2023-08-08 腾讯科技(深圳)有限公司 容器环境更新方法及装置
CN113296807B (zh) * 2021-05-12 2023-10-31 阿里巴巴新加坡控股有限公司 数据更新方法
US11954473B2 (en) 2021-09-20 2024-04-09 Microstrategy Incorporated Deployment architecture for multi-tenant cloud computing systems
US11861342B2 (en) 2022-01-28 2024-01-02 Microstrategy Incorporated Enhanced cloud-computing environment deployment
US11947498B2 (en) * 2022-05-12 2024-04-02 International Business Machines Corporation De-duplication of data in executable files in a container image
US20240111511A1 (en) * 2022-09-30 2024-04-04 International Business Machines Corporation Image optimization for pipeline workloads

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1608338A (zh) * 2001-11-13 2005-04-20 普尔文公司(汤姆森学习系统公司的子公司) 利用插件来扩展测验驱动器功能的基于计算机的测验方法和系统
CN1607524A (zh) * 2003-10-15 2005-04-20 佳能株式会社 包含可变数据的文档或版面的选择性预览和校对
CN102150105A (zh) * 2008-09-09 2011-08-10 凯思网络公司 虚拟容器的部署和管理
CN104520814A (zh) * 2012-08-07 2015-04-15 超威半导体公司 用于配置云计算系统的系统和方法
US9075638B2 (en) * 2012-08-14 2015-07-07 Atlassian Corporation Pty Ltd. Efficient hosting of virtualized containers using read-only operating systems
CN106502542A (zh) * 2016-10-27 2017-03-15 中企动力科技股份有限公司 一种指针旋转方法和装置
JP2017111761A (ja) * 2015-12-18 2017-06-22 エヌ・ティ・ティ・コミュニケーションズ株式会社 コンテナ収容装置、コンテナ作成方法、及びプログラム
US9875182B1 (en) * 2015-05-26 2018-01-23 EMC IP Holding Company LLC Lock free container packing

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0764784A (ja) * 1993-08-31 1995-03-10 Nec Corp マイクロコンピュータ
US5956028A (en) 1995-09-14 1999-09-21 Fujitsu Ltd. Virtual space communication system, three-dimensional image display method, and apparatus therefor
AU6782800A (en) 1999-08-16 2001-07-03 Z-Force Corporation System of reusable software parts for implementing concurrency and hardware access, and methods of use
DE50100101D1 (de) * 2001-06-26 2003-03-13 Aladdin Knowledge Systems Gmbh Verfahren zum Erweitern einer mittels eines Installationsprogramms zu installierenden Anwendung um eine Funktion und Computerprogrammprodukt
JP2004199577A (ja) 2002-12-20 2004-07-15 Hitachi Ltd 設定ファイルの統合編集方法および設定ファイル統合基盤
US9684703B2 (en) 2004-04-29 2017-06-20 Precisionpoint Software Limited Method and apparatus for automatically creating a data warehouse and OLAP cube
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
US7702866B2 (en) 2006-03-31 2010-04-20 International Business Machines Corporation Use of volume containers in replication and provisioning management
US8266616B1 (en) 2006-05-11 2012-09-11 Hewlett-Packard Development Company, L.P. Computer system provisioning using templates
US7904881B2 (en) 2006-07-26 2011-03-08 Intel Corporation Using a virtual stack for fast and composable stack cutting
US8001468B2 (en) 2007-09-19 2011-08-16 Sap Ag Method and system for accelerating test automation of software applications
US8762986B2 (en) 2008-02-20 2014-06-24 Sap Ag Advanced packaging and deployment of virtual appliances
US8255917B2 (en) 2008-04-21 2012-08-28 Hewlett-Packard Development Company, L.P. Auto-configuring workload management system
US8869140B2 (en) 2008-05-09 2014-10-21 Sap Se Deploying software modules in computer system
WO2010091456A1 (en) 2009-02-10 2010-08-19 Tap Holdings Pty Ltd Creation of a data store
US9213541B2 (en) 2009-04-17 2015-12-15 ArtinSoft Corporation, S.A. Creation, generation, distribution and application of self-contained modifications to source code
US9888067B1 (en) 2014-11-10 2018-02-06 Turbonomic, Inc. Managing resources in container systems
US8719769B2 (en) 2009-08-18 2014-05-06 Hewlett-Packard Development Company, L.P. Quality-driven ETL design optimization
US8225039B2 (en) 2009-10-09 2012-07-17 Hitachi, Ltd. Storage controller and virtual volume control method
US8756597B2 (en) 2010-02-05 2014-06-17 Novell, Inc. Extending functionality of legacy services in computing system environment
US9176720B1 (en) * 2012-04-23 2015-11-03 Google Inc. Installation of third-party web applications into a container
US9203862B1 (en) 2012-07-03 2015-12-01 Bromium, Inc. Centralized storage and management of malware manifests
US20140181817A1 (en) 2012-12-12 2014-06-26 Vmware, Inc. Methods and apparatus to manage execution of virtual machine workflows
CN105247826B (zh) 2013-01-11 2018-07-13 华为技术有限公司 网络设备的网络功能虚拟化
US10147054B2 (en) 2013-07-26 2018-12-04 Salesforce.Com, Inc. Displaying content of an enterprise social network feed on a mobile device
US9785643B1 (en) 2013-09-06 2017-10-10 Veritas Technologies Llc Systems and methods for reclaiming storage space in deduplicating data systems
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US9396061B1 (en) 2013-12-30 2016-07-19 Emc Corporation Automated repair of storage system components via data analytics
US9424160B2 (en) 2014-03-18 2016-08-23 International Business Machines Corporation Detection of data flow bottlenecks and disruptions based on operator timing profiles in a parallel processing environment
CN105095970B (zh) 2014-04-25 2018-09-21 阿里巴巴集团控股有限公司 第三方应用的执行方法及系统
EP3140736A1 (en) 2014-05-08 2017-03-15 Telefonaktiebolaget LM Ericsson (publ) Web application managment
US9218176B1 (en) 2014-06-13 2015-12-22 International Business Machines Corporation Software deployment in a distributed virtual machine environment
US9652273B2 (en) * 2014-10-02 2017-05-16 Vmware, Inc. Method and system for creating a hierarchy of virtual machine templates in a virtualized computing system
US9256467B1 (en) 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US10210337B2 (en) 2014-12-15 2019-02-19 Anoosmar Technologies Private Limited Information rights management using discrete data containerization
US9692666B2 (en) 2014-12-22 2017-06-27 Rovio Entertainment Ltd. Container manager
FR3031203B1 (fr) 2014-12-24 2017-03-24 Bull Sas Methode d'ordonnancement de taches au niveau des noeuds d'un cluster informatique, ordonnanceur de taches et cluster associes
KR20170129114A (ko) 2015-01-25 2017-11-24 이과지오 시스템스 엘티디. 애플리케이션 중심의 객체 저장
US20160350081A1 (en) 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
EP3304295B1 (en) 2015-06-05 2024-05-29 Nutanix, Inc. Architecture for managing i/o and storage for a virtualization environment using executable containers and virtual machines
US10579403B2 (en) 2015-06-29 2020-03-03 Vmware, Inc. Policy based provisioning of containers
US11709799B2 (en) 2015-08-29 2023-07-25 Vmware, Inc. Content or file based application virtualization using a cache
US9852137B2 (en) 2015-09-23 2017-12-26 International Business Machines Corporation Container storage migration
KR101831430B1 (ko) 2015-10-27 2018-02-22 삼성에스디에스 주식회사 인프라의 설치와 구성을 자동화하는 장치 및 그 방법
US9727330B2 (en) 2015-11-25 2017-08-08 Red Hat, Inc. Source to image transformation pipeline for a platform-as-a-service system
US10445122B2 (en) 2016-02-08 2019-10-15 Vmware, Inc. Effective and efficient virtual machine template management for cloud environments
CA2957584A1 (en) 2016-02-12 2017-08-12 Coho Data, Inc. Methods, systems, and devices for adaptive data resource assignment and placement in distributed data storage systems
US9916110B2 (en) 2016-02-23 2018-03-13 Red Hat, Inc. Size adjustable volumes for containers
US11132450B2 (en) 2016-02-26 2021-09-28 Red Hat, Inc. Accessing file systems in a virtual environment
US10127030B1 (en) 2016-03-04 2018-11-13 Quest Software Inc. Systems and methods for controlled container execution
US10812582B2 (en) 2016-03-10 2020-10-20 Vmware, Inc. Management of applications across nodes using exo-clones
US10498726B2 (en) 2016-03-22 2019-12-03 International Business Machines Corporation Container independent secure file system for security application containers
US10324696B2 (en) * 2016-03-28 2019-06-18 International Business Machines Corporation Dynamic container deployment with parallel conditional layers
US20170300311A1 (en) * 2016-04-15 2017-10-19 Microsoft Technology Licensing, Llc Dynamic Image Generation
US10503623B2 (en) 2016-04-29 2019-12-10 Ca, Inc. Monitoring containerized applications
US10089188B2 (en) 2016-05-09 2018-10-02 Sap Se Simulated deployment of database artifacts
US10871925B2 (en) 2016-05-31 2020-12-22 Vmware, Inc. Provisioning data volumes for containers running in virtual machines
US10073974B2 (en) 2016-07-21 2018-09-11 International Business Machines Corporation Generating containers for applications utilizing reduced sets of libraries based on risk analysis
US10339152B2 (en) 2016-08-29 2019-07-02 International Business Machines Corporation Managing software asset environment using cognitive distributed cloud infrastructure
US10169209B2 (en) * 2016-11-04 2019-01-01 Red Hat, Inc. Container images by composition
US20180157505A1 (en) 2016-12-01 2018-06-07 International Business Machines Corporation Automated image layer blacklisting in the cloud
US10169023B2 (en) 2017-02-06 2019-01-01 International Business Machines Corporation Virtual container deployment
US10360053B1 (en) 2017-02-14 2019-07-23 Veritas Technologies Llc Systems and methods for completing sets of computing tasks
US10216455B1 (en) 2017-02-14 2019-02-26 Veritas Technologies Llc Systems and methods for performing storage location virtualization
US9983891B1 (en) 2017-03-21 2018-05-29 Veritas Technologies Llc Systems and methods for distributing configuration templates with application containers
US10922205B2 (en) 2017-05-16 2021-02-16 Vmware, Inc. Monitoring applications running on containers
US10001990B2 (en) 2017-10-26 2018-06-19 Iomaxis, Llc Method and system for enhancing application container and host operating system security in a multi-tenant computing environment

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1608338A (zh) * 2001-11-13 2005-04-20 普尔文公司(汤姆森学习系统公司的子公司) 利用插件来扩展测验驱动器功能的基于计算机的测验方法和系统
CN1607524A (zh) * 2003-10-15 2005-04-20 佳能株式会社 包含可变数据的文档或版面的选择性预览和校对
CN102150105A (zh) * 2008-09-09 2011-08-10 凯思网络公司 虚拟容器的部署和管理
CN104520814A (zh) * 2012-08-07 2015-04-15 超威半导体公司 用于配置云计算系统的系统和方法
US9075638B2 (en) * 2012-08-14 2015-07-07 Atlassian Corporation Pty Ltd. Efficient hosting of virtualized containers using read-only operating systems
US9875182B1 (en) * 2015-05-26 2018-01-23 EMC IP Holding Company LLC Lock free container packing
JP2017111761A (ja) * 2015-12-18 2017-06-22 エヌ・ティ・ティ・コミュニケーションズ株式会社 コンテナ収容装置、コンテナ作成方法、及びプログラム
CN106502542A (zh) * 2016-10-27 2017-03-15 中企动力科技股份有限公司 一种指针旋转方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于Docker的应用部署管理平台研究;邹保平;黄文思;张文晋;韩泽华;程仲汉;;电子设计工程(第12期);第41-44页 *
基于Web的嵌入式设备管理;周山, 李向涛, 何燕;电子技术应用(第08期);第20-22页 *

Also Published As

Publication number Publication date
US10740132B2 (en) 2020-08-11
EP3746887A1 (en) 2020-12-09
WO2019152442A1 (en) 2019-08-08
JP2021509200A (ja) 2021-03-18
US20190235897A1 (en) 2019-08-01
CN111492347A (zh) 2020-08-04

Similar Documents

Publication Publication Date Title
CN111492347B (zh) 用于更新容器的系统和方法
US9983891B1 (en) Systems and methods for distributing configuration templates with application containers
US10606646B1 (en) Systems and methods for creating a data volume from within a software container and initializing the data volume with data
JP6166839B2 (ja) 実行時のアプリケーションメソッドを置き換えるためのシステム及び方法
US9063821B1 (en) Method for updating operating system without memory reset
US20140282548A1 (en) System and method to reconfigure a virtual machine image suitable for cloud deployment
US9965307B2 (en) Building virtual appliances
US20210255846A1 (en) Cognitively determining updates for container based solutions
CN111684418B (zh) 用于在多租户容器平台上运行应用程序的系统和方法
US11775475B2 (en) Deferred path resolution during container deployment
US10175886B1 (en) Systems and methods for handling missing storage image layers while provisioning containers in computer clusters
US9619340B1 (en) Disaster recovery on dissimilar hardware
US10684895B1 (en) Systems and methods for managing containerized applications in a flexible appliance platform
CN113296891B (zh) 基于平台的多场景知识图谱处理方法及装置
US20140181490A1 (en) Boot from modified image
US10127029B1 (en) Operating system installation using logical volumes
US10296318B2 (en) Offline tools upgrade for virtual machines
CN114880073A (zh) 一种对用户屏蔽Web框架的云应用引擎部署方法、装置、设备和存储介质
US10284648B2 (en) Application multi-versioning in a traditional language environment
US11263032B1 (en) Systems and methods for emulating local storage
US11425191B1 (en) Unified and efficient method to generate file system table (FSTAB) to support on-premise and multi-cloud environment
US12001303B2 (en) Data center restoration and migration
US11733974B2 (en) Method and system for automatically creating instances of containerized servers
US11323331B2 (en) Cloud server and operating method of the same
US11709683B2 (en) State semantics kexec based firmware update

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
GR01 Patent grant
GR01 Patent grant