CN107924323B - 基于依赖的容器部署 - Google Patents

基于依赖的容器部署 Download PDF

Info

Publication number
CN107924323B
CN107924323B CN201680044710.1A CN201680044710A CN107924323B CN 107924323 B CN107924323 B CN 107924323B CN 201680044710 A CN201680044710 A CN 201680044710A CN 107924323 B CN107924323 B CN 107924323B
Authority
CN
China
Prior art keywords
container
host
target
program instructions
cost
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
CN201680044710.1A
Other languages
English (en)
Other versions
CN107924323A (zh
Inventor
陈晓龙
D·L·卡明斯基
王夕宁
闫哲
赵峥
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN107924323A publication Critical patent/CN107924323A/zh
Application granted granted Critical
Publication of CN107924323B publication Critical patent/CN107924323B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明的实施例涉及用于容器部署的方法、设备和计算机程序产品。通过比较要部署的目标容器所需的目标库和已经加载到候选主机上的库,可以估计在候选主机上部署目标容器的成本。然后基于确定的成本从多个候选主机中选择目标主机。

Description

基于依赖的容器部署
技术领域
本发明涉及计算机技术,具体来说,涉及用于容器部署的方法、设备和计算机程序产品。
背景技术
虚拟机(VMs)被广泛用于创建虚拟化。虚拟机基于真实或假想计算机的计算机体系结构和功能进行操作。虚拟机是像物理机器一样执行程序的机器的软件实现。单个物理机器可以支持在其上执行的多个VM,并使用称为“虚拟机管理器”的程序管理这些VM。传统的VM体系结构由于必须为每个VM部署客户操作系统(OS)而导致资源浪费。
容器提供轻量级虚拟化,其允许隔离进程和/或资源,而不需要提供指令解释机制和/或其他完整虚拟化的复杂性。容器技术,如 Linux Container(LXC),提供了轻量级的虚拟化,其允许隔离进程和资源,而无需提供指令解释机制和其他全面虚拟化的复杂性。容器有效地将单个主机操作系统(OS)管理的资源划分为孤立的组,以更好地平衡孤立组之间资源使用冲突的需求。也就是说,容器技术允许共享一个通用的操作系统,可能还有一些合适的二进制文件或库。
Docker是一个开源项目,它通过在Linux上提供操作系统级别虚拟化的抽象和自动化的附加层来自动化软件容器内部的应用程序的部署。(注:“Docker”和“Linux”这两个词在世界各地可能受到商标权的保护,在这里仅用于当此等商标权存在时,表示由该标记所适当指示的商品或服务)。Docker使用Linux内核的资源隔离特性,例如cgroups和kernel命名空间,以允许独立的“容器”在单个Linux 实例中运行,避免了启动和维护虚拟机的开销。
发明内容
一般而言,本发明的示例实施例包括用于容器部署的方法,设备和计算机程序产品。
一方面,提供了一种计算机实现的方法。根据该方法,获得第一信息和第二信息。第一信息指示要部署的目标容器所需的目标库,并且第二信息指示已经针对部署在多个候选主机上的至少一个容器加载的库。然后基于第一信息和第二信息确定在多个候选主机上部署目标容器的成本。基于确定的成本从多个候选主机中选择目标主机,使得目标容器被部署在所选择的目标主机上。
另一方面,提供了一种设备。该设备包括处理单元和耦合到处理单元并在其上存储指令的存储器。所述指令在由所述处理单元执行时执行以下动作:获得指示要部署的目标容器所需的目标库的第一信息;获得指示针对部署在多个候选主机上的至少一个容器已经加载的库的第二信息;基于所述第一信息和所述第二信息确定在所述多个候选主机上部署所述目标容器的成本;以及基于所确定的用于部署所选择的目标主机的成本,从所述多个候选主机中选择目标主机。
在又一方面,提供了一种计算机程序产品。该计算机程序产品有形地存储在非暂时性机器可读介质上并且包括机器可执行指令。所述指令在设备上执行时,使所述设备获取指示待部署的目标容器所需的目标库的第一信息;获得第二信息,所述第二信息指示为部署在多个候选主机上的至少一个容器已经加载的库;基于所述第一信息和所述第二信息,确定在所述多个候选主机上部署所述目标容器的成本;以及基于确定的用于部署目标容器的成本,从多个候选主机中选择目标主机。
应当理解的是,发明内容并不试图识别本发明的实施例的关键或基本特征,也不试图用于限制本发明的范围。通过下面的描述,本发明的其他特征将变得容易理解。
附图说明
通过结合附图对本公开的一些实施例的更加详细的描述,本公开的上述和其他目的、特征和优点将变得更加明显,其中:
图1是可以实现本发明的实施例的电子设备的框图;
图2是根据本发明实施例的基于模板的容器部署的示意图;
图3是可以实施本发明实施例的环境的框图;
图4是根据本发明实施例的容器部署方法的流程图。
图5是根据本发明实施例的示例dockerfile(码头文件)的屏幕截图;
图5A示出了根据本发明的示例实施例的确定在给定候选主机上部署目标容器的成本的方法的流程图;
图6是根据本发明的用于容器部署的系统框图;和
图7是根据本发明充当容器/镜像信息的文件的屏幕截图。
贯穿所有附图,相同或相似的附图标记表示相同或相似的元件。
具体实施方式
现在将参考一些示例实施例来描述本发明的原理。应该理解的是,这些实施例仅仅是为了说明的目的而描述的,并且帮助本领域技术人员理解和实现本发明,而不对本发明的范围提出任何限制。这里描述的本发明可以以不同于以下描述的各种方式来实现。
如本文所使用的,术语“包括”及其变体将被解读为意指“包括但不限于”的开放式术语。术语“基于”将被解读为“至少基于部分”。术语“一个实施例”和“实施例”应被理解为“至少一个实施例”。术语“另一实施例”应被理解为“至少一个其他实施例”。其他定义,明示的和隐含的,可能会被包含在下面。
首先参考图1,其中示出了适用于实现本发明实施例的示例性电子设备或计算机系统/服务器12。计算机系统/服务器12仅是说明性的,并不意图对本文描述的本发明的实施例的使用范围或功能提出任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16,系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种总线结构中的一个或多个,包括存储器总线或存储器控制器,外围总线,图形加速端口以及使用各种总线架构中的任何一种的处理器或本地总线。作为示例而非限制,这样的架构包括工业标准架构(ISA)总线,微通道架构(MCA)总线,增强型ISA(EISA)总线,视频电子标准协会(VESA)本地总线以及外围组件互连PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且其包括易失性和非易失性介质,可移动和不可移动介质。
系统存储器28可以包括诸如随机存取存储器(RAM)30和/或高速缓冲存储器32的易失性存储器形式的计算机系统可读介质。计算机系统/服务器12可以进一步包括其他可移动/不可移动,易失性/ 非易失性计算机系统存储介质。仅作为示例,存储系统34可以被提供用于从不可移动,非易失性磁介质(未示出并且通常称为“硬盘驱动器”)读取和写入。尽管未示出,但是用于读取和写入可移动,非易失性磁盘(例如,“软盘”)的磁盘驱动器以及用于从可移动,非易失性光学器件读取或向其写入的光盘驱动器可以提供诸如 CD-ROM,DVD-ROM或其他光学介质的盘。在这种情况下,每个可以通过一个或多个数据介质接口连接到总线18。如下面将进一步示出和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本发明的实施例的功能的一组(例如,至少一个) 程序模块。
具有一组(至少一个)程序模块42的程序/实用程序40可作为示例而非限制性地存储在存储器28中,以及操作系统,一个或多个应用程序,其他程序模块和程序数据。操作系统,一个或多个应用程序,其他程序模块和程序数据或其一些组合中的每一个可以包括网络环境的实现。程序模块42通常执行如本文所述的本发明的实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如键盘,指点设备,显示器24等)通信。一个或多个使用户能够与计算机系统/服务器12交互的设备;和/或使得计算机系统/服务器12能够与一个或多个其他计算设备进行通信的任何设备(例如网卡,调制解调器等)。这种通信可以通过输入/输出(I/O)接口22来进行。而且,计算机系统/服务器12可以与诸如局域网(LAN),广域网 (WAN)等的一个或多个网络进行通信。和/或公共网络(例如因特网)。如图所示,网络适配器20经由总线18与计算机系统/服务器 12的其它组件通信。应该理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微码,设备驱动程序,冗余处理单元,外部磁盘驱动器阵列,RAID系统,磁带驱动器和数据存档存储器系统等。
在计算机系统/服务器12中,I/O接口22可以支持可以用于向计算机系统/服务器12提供输入的各种不同输入设备中的一个或多个。例如,输入设备可以包括诸如键盘,小键盘,触摸板,轨迹球等的用户设备。输入设备可以实现一个或多个自然用户界面技术,诸如语音识别,触摸和指示笔识别,与输入设备(一个或多个)接触并且与输入设备相邻的手势的识别,空中手势,头部和眼睛跟踪,语音和语音识别,感知用户大脑活动和机器智能。
以下段落将描述基于依赖性的容器部署的一些示例实施例。根据本发明的实施例,当部署新容器时,考虑新容器所需的库与已经加载到候选主机上的库之间的依赖性。一般而言,新的容器被部署到已经加载了所需库的主机上。通过减少或消除由附加库引起的计算开销,可以使部署成本最小化。在一些实施例中,还可以基于诸如库的特性,主机的工作负载,一个或多个要部署的其他容器等其他相关因素来选择目标主机。
在以下描述中,将参考其中容器基于模板部署的实施例来描述本发明的原理。然而,可以理解的是,基于模板的容器部署只是一个示例机制,对本发明的范围没有任何限制。在替代实施例中,容器可以通过任何其它适当的机制来部署。
图2显示了基于模板的容器部署的示意图。可以预先创建一个或多个模板205。模板可能包含可用于部署和构建容器的信息。例如,模板可能包含安装了Web应用程序的操作系统。当模板部署在主机上时,将会实例化具体参数值和/或配置,例如网络配置。举例来说,对于Docker容器,模板205被称为“镜像”。(注意:术语“Docker”可能在全世界各个司法管辖区受商标权保护,在这里仅用于当此等商标权存在时,表示由该标记所适当指示的商品或服务)。模板205 可以被上传并存储在注册表210中。尽管贯穿本文件引用了Docker 和Docker特定的元素,但是应该理解,本发明的各个方面可以等同地应用于实施容器部署的其他自动化程序。
模板205可以被提供给主机215并且在主机215上执行的主机 OS 220上实例化。容器引擎225在主机OS 220上运行以便管理和控制容器。主机215可以包括一个或多个容器230和240,每个容器都是基于一个或多个模板构建的。对于一些容器如Docker容器,模板是只读的镜像。模板205的实例化通过在模板的顶部创建可写层完成。例如,如图2所示,可写入层232和242分别被创建以构建容器230和240。
模板可以引用可以被称为“父模板”的一个或多个模板。没有父模板的底层模板被称为“基本模板”。如图2所示,容器230涉及模板 2311...231i,而容器240涉及模板2411...241j。以这种方式,容器可以由可写入层,其对应模板以及关于父模板(如果有的话)的信息以及诸如唯一标识符,联网配置,资源分配等的附加信息来定义。
一般来说,在部署模板时,需要在主机215上加载一个或多个库。在Docker容器中,这些库可以分层排列,因此模板的每个库可以被认为是一个层。例如,如图2所示,模板2311包含库/层2351... 235k。不同的容器/模板可以共享一个或多个通用库。这样,库/层可以定义不同容器/模板的依赖关系。根据本发明的实施例,使用这种依赖性来实现新容器的有效部署。
图3示出了可以在其中实现本发明的实施例的环境300的框图。如图所示,在环境300中,存在多个候选主机2151,...,215N(统称为“主机215”)。每个候选主机215包括至少一个已经部署在其上的容器。容器管理器310控制容器的部署。在一些实施例中,容器管理器310可以由计算机系统/服务器12实现,例如如以上参照图 1所描述的。
在将要构建的容器(称为“目标容器”)的情况下,容器管理器 310从候选主机215中选择适当的主机。为此,容器管理器310确定这些库(可称为“目标库”)。在一些实施例中,这可以通过分析目标容器的供应要求320来完成。例如,在使用基于模板的容器部署的那些实施例中,容器管理器310可首先确定用于部署目标容器的模板,然后确定用于模板的库。容器管理器310进一步收集部署在候选主机215上的容器的配置信息。配置信息至少指示已经加载到每个候选主机215上的库。
基于所收集的信息,容器管理器310至少部分地基于目标容器和现有库之间的依赖性来确定在每个候选主机215上部署目标容器的成本。容器管理器310然后选择合适的主机来部署目标容器,使得部署成本最小化。理想情况下,如果有一个主机215已经加载了目标容器所需的所有目标库,那么部署将非常有效。
图4示出了根据本发明实施例的用于容器部署的方法400的流程图。如图3所示,方法400可以由容器管理器310来实现。举例来说,在容器管理器310由计算机系统/服务器12实施的那些实施例中,处理单元16可经配置以执行方法400。
如图4所示,方法400进行到步骤410,在步骤410中获得指示目标容器所需的目标库的信息。为了讨论,在步骤410中获得的信息被称为“第一信息”。第一信息可以以许多不同的方式获得。例如,在一个实施例中,第一信息可以从用于目标容器的提供要求和/或任何其他配置文件中导出。
以Docker技术为例,称为“dockerfile”的文件可以描述如何构建容器以及在容器运行时要执行什么。(注:“dockerfile”一词可能在全球各个司法管辖区受到商标权的保护,在这里仅用于当此等商标权存在时,表示由该标记所适当指示的商品或服务。)图5示出了示例性“dockerfile”500的屏幕截图。众所周知,“dockerfile”与应用程序源码一起是可读和可维护的。因此,可以通过分析目标容器的 dockerfile来确定需要加载的目标库。应该理解的是,“dockerfile”仅仅是一个示例,并不对本发明的范围提出任何限制。目标库可以通过分析与目标容器相关的任何其他文件或元数据来确定。在其它实施例中,除了或者作为供给需求分析的替代方法,目标库可以由用户明确地指定或者以任何其它方式获得。
仍然参考图4,如图4所示,方法400进行到步骤420,在步骤 420获得指示为多个候选主机215上的一个或多个容器已经加载的库的信息。为了方便讨论,在步骤420中获得的信息被称为“第二信息”。在一些实施例中,可以从每个候选主机215收集第二信息。例如,在Docker系统中,一旦容器和/或其配置改变时,主机215可以生成消息并将其发送到称为“事件总线”的组件。消息包括关于主机的硬件和/或软件配置、主机OS、被部署的容器等等。容器管理器 300可以检索和分析这些消息以确定已经加载在每个候选主机215 上的库。在这方面的示例实施例将在下面的段落进行讨论。
在一些实施例中,可以通过分析用于在候选主机215上部署容器的模板的构建历史来获得第二信息。仍然考虑Docker容器作为示例,如上所述,用于在候选主机215上构建该容器的dockerfile是可访问的。这些dockerfile因此保持候选主机215上的容器的构建历史的记录。容器管理器310可以检索和分析这些dockerfile,以便确定已经在候选主机215上加载的库。
除了从候选主机215收集第二信息之外或者代替从候选主机215 收集第二信息,在一些实施例中,容器管理器300可以在本地存储关于已经加载的库的信息。例如,每当库被加载到候选主机215上时,容器管理器310可以更新该记录。在这样的实施例中,在步骤420中,容器管理器300可以访问其本地记录以确定已经加载在每个候选主机215上的库。其他合适的方法也是可能的。
应该理解的是,尽管在步骤420之前示出了步骤410,但是这仅仅是为了说明的目的,而不对本发明的范围提出任何限制。第一个信息不一定要在第二个信息之前收集。在其他实施例中,第一和第二信息可以以相反的顺序或并行地获得。
接下来,在步骤430中,基于第一信息和第二信息来确定在多个候选主机215上部署目标容器的成本。通常,在任何给定的候选主机215上部署目标容器的成本至少部分地基于待加载的目标库与已经加载到该候选目标机器上的库之间的匹配程度来确定。可选地,可以考虑一个或多个其他因素。图5A示出了根据本发明的示例实施例的确定在给定候选主机215上部署目标容器的成本的方法 505的流程图。方法505可以应用于全部或至少一些候选主机215 上。
方法505进行到步骤510,基于第一信息和第二信息来确定给定候选主机215上的库和目标库之间的匹配程度。根据本发明的实施例,如果这两个库在功能上彼此相等,则一个库匹配另一个库。也就是说,如果现有的库可以被重新用作目标库,则认为目标库在给定的候选主机215上具有匹配的库。例如,如果确定目标库已经被加载在给定的候选主机215上,就找到了匹配。作为另一个例子,如果候选主机上的一个或多个现有库在功能上与目标库相同或相似,则也找到匹配。在步骤510中,可以确定在给定候选主机215 上具有匹配库的目标库的数量。
在一些实施例中,在步骤520中,确定将每个目标库加载到给定候选主机的成本。可以理解,加载不同库的成本通常是不同的。例如,一些库在加载过程中消耗更多的资源(如计算资源,存储资源等)。又例如,不同的库通常具有不同的大小,因此消耗不同的网络带宽资源。加载目标库的成本可以基于其大小,CPU(中央处理单元)消耗,存储消耗和/或其他相关因素来确定。类似于上述方法400中的步骤410和420,可以交换步骤510和520的顺序。
然后方法505进行到步骤530。在该步骤中,确定在给定候选主机215上部署目标容器的成本。在一些实施例中,在步骤530中,根据在步骤510中确定的匹配程度以及在步骤520中确定的加载目标库的成本来确定成本。假设目标容器涉及N个目标库L1,L2…LN被加载,其中N代表自然数。在一个实施例中,确定在给定候选主机215上部署目标容器的成本如下:
C=M1*C1+M2*C2…+MN*CN
其中如果目标库Li在给定的候选主机215上具有匹配库,则Mi=1,否则Mi=0(i=1...N),并且Ci表示将库Li加载到给定候选主机215的成本。
可选地,在其他实施例中,可以在步骤530中确定部署目标容器的成本,而不考虑加载各个库的成本。例如,在某些情况下,假设加载不同库的成本几乎相同是合理的。此时,可以省略步骤520。相应地,在步骤530中,可以如下计算在给定候选主机215上部署目标容器的成本:
C=M1+M2...+MN
仍然参照图4,在一些实施例中,方法400进行到步骤440,在步骤440中获得指示多个候选主机215的工作负载的信息。为了讨论方便,在步骤440中获得的信息被称为“第三信息”。举例来说,对于每个候选主机215,第三信息可以指示以下中的一个或多个:处理器使用,内存使用情况,磁盘使用情况,网络带宽使用情况等。通过将包含在第三信息中的度量与各自的阈值进行比较,可以确定每个候选主机215是否承受沉重的负担。
接下来,在步骤450中,从多个候选主机215中选择目标主机。根据本发明的实施例,目标主机至少部分地基于在步骤430中确定的成本来选择。通常,目标主机被选择为使得部署目标容器的成本足够低(低于阈值)。具体地,在一些实施例中,在步骤450中选择部署目标容器的成本可以最小化的候选主机215作为目标主机。这样,通过使用容器/模板之间的依赖关系,可以有效地部署目标容器。实验表明,容器部署所消耗的时间可以显著减少。例如,对于传统方法花费5到10分钟从头开始构建镜像的任务,本发明的实施例仅需要大约五秒。
在一些实施例中,步骤450中的目标主机的选择可以进一步基于在步骤440中确定的候选主机215的工作负载,例如,在一些实施例中,工作负载超过预定的阈值的候选主机215被首先滤除。也就是说,从剩余的具有相对低工作量的候选主机中选择目标主机。或者,在一些实施例中,在步骤430中确定的成本和在步骤440中确定的工作负荷可以被组合以作为用于在步骤450中选择目标主机的度量。仅作为示例,成本和工作量的乘积可以作为指标。任何其他合适的方式也是可以的。
通过考虑候选主机的工作量,有可能避免在当前过载的主机上部署目标容器。也就是说,在部署成本和主机工作量之间进行权衡。然而,应该理解的是,工作量不一定需要考虑。在一些实施例中,如上所述,目标主机可以仅基于所确定的成本来选择。此外,除了工作负荷之外或代替工作负荷,在步骤450中可以考虑候选主机215 的其他特性。特性的示例包括但不限于性能、安全性、网络域、制造商等。
此外,可以理解的是,有时多个容器将被成批地部署。例如,为了构建应用程序,可能需要部署多个相互配合的容器。此时,在步骤450中,可以基于多个目标容器的总成本来选择目标主机,而不是考虑单独容器。例如,假设要部署第一个容器和第二个容器。在一些实施例中,代替单独选择目标主机,可以在步骤450中选择目标主机,使得部署第一容器和第二容器的总成本低于预定阈值或最小化。这样可以提高整个系统的性能。
目标容器可以被部署在步骤440中选择的目标主机上。可以应用目前已知的或者将来开发的任何合适的技术来完成目标容器的部署。例如,关于选择的目标主机和任何其他相关信息的信息可以被组织为供应元数据。供应元数据可以被提供给供应指令器,该供应指令器进而控制容器部署器将所需模板分发给选择的目标主机。通过实例化目标主机上的模板,部署目标容器。
具体地,根据本发明的实施例,在功能上彼此关联的两个或更多个容器可以被部署到两个或更多个单独的主机上。也就是说,这些关联的容器分布在不同的主机上。例如,在构建基于Internet的应用程序时,有些容器可能部署在可从网络域外部访问的主机上,而其他容器部署在可访问内部数据的不同主机上。为了处理这种情况,在一些实施例中,可以部署网桥组件来实现分布式容器之间的数据通信。在一个实施例中,例如,桥组件可以被实现为轻量级容器。或者,在另一个实施例中,桥组件可以是负责相关容器之间的通信的专用组件。
图6示出了根据本发明的用于容器部署的系统600的框图。如上所述,系统600中的容器是Docker容器,其中模板是只读镜像。如图所示,在该示例中,候选主机2151…215N通信地耦合到事件总线605。候选主机2151…215N各自收集关于其上已部署的容器/镜像的信息。这样的信息被封装成传输到事件总线605的消息。例如,可以通过候选主机215上的任何改变来触发消息的传输。事件总线 605将消息存储到索引注册表610中。索引注册表610还存储与主机,容器,容器引擎,软件/硬件配置等有关的任何其他信息。
资源分析器615可以从索引注册表610检索信息并分析检索到的信息。例如,分析结果被组织为至少指示每个候选主机215的当前工作负载的候选主机元数据620。将候选主机元数据620提供到容器/镜像信息收集器625中。在一些实施例中,基于候选主机元数据620,容器/镜像信息收集器625可以过滤出其工作负载超过预定阈值的那些候选主机215。对于剩余的候选主机215,容器/镜像信息收集器625从索引注册表610收集至少指示候选主机215上的现有库或层的第一信息。在这个例子中,第一信息被组织为容器/镜像信息630。
图7示出容器/镜像信息630的示例。在示例中,容器/镜像信息 630被实现为可扩展标记语言(XML)文件700.容器/镜像信息630 包含关于两个候选主机A和B。主机A有两个容器,容器A_a包含四层,容器A_b包含三层。主机B具有一个包括四层的容器B_a。
回到图6,容器/镜像信息630和提供要求640都被提供到提供分析器640中。提供需求640指示要被部署的目标容器的需求。在一些实施例中,指示目标库/层的第二信息可以从提供需求640中导出。基于输入信息,提供分析器640可以选择适当的目标主机215,如上所述。关于选择的目标主机215的信息可以被存储在提供元数据645中,所述提供元数据645也可以被实现为与图7所示的文件 700类似的XML文件7。
供应元数据645被提供到供应指令器650中。供应指令器650 解释供应元数据645并且控制容器部署器655提供并实例化选择的目标主机上的镜像以部署目标容器。如果两个或更多个关联的容器被部署在不同的主机上,则供应指令器650可以控制桥部署器660来构建(一个或多个)桥组件,以启用已部署的容器之间的通信。
本发明的一些实施例针对一种系统和装置,用于通过来自不同主机OS服务器的现有镜像之间的依赖性分析和目标供应要求来提供高效的容器供应。与现有技术相比,它具有独特的优势,提供了确定所有可用服务器的最小成本并在那里建立镜像的机制。
在本发明的一些实施例中,可以通过基于事件总线的发布/订阅机制将包括主机服务器,容器,镜像及其底层在内的所有目标环境的信息摄入到索引注册表中。资源分析器用于识别可用于运行新镜像的候选主机服务器。根据检测机制,容器/镜像信息收集器可以检索每个容器或镜像的构建历史信息。
在本发明的一些实施例中,一旦用户请求一个新镜像,所表示的元数据可以与上面收集的所有信息一起使用以形成上下文模型。从上下文模型中可能是容器、镜像、图层或主机服务器的每个元件将被分配一个成本值。如果元件尚未加载,则会发生该成本。基于成本计算和比较,可以确定包括目标主机服务器的信息的最终供应元数据。
此外,在本发明的一些实施例中,ProvisionCommander填充供应元数据以优化主机OS选择。主机操作系统选择标准之一是关于主机OS服务器之间的网络通信能力,这可能会在跨主机OS服务器之间驱动容器供应。根据这种情况,网桥部署器可以在每个主机 OS服务器上配置2个容器并将它们连接在一起。
本发明可以是系统,装置,设备,方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可以是能够保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备,磁存储设备,光存储设备,电磁存储设备,半导体存储设备或前述的任何合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM 或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器 (CD-ROM)、数字多功能光盘(DVD)、记忆棒、软盘、机械地编码的装置、例如其上记录有指令的凹槽中的穿孔卡片或凸起结构、以及前述的任何合适的组合。这里使用的计算机可读存储介质不被解释为暂时信号本身,诸如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆)或通过导线传输的电信号。
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络例如互联网、局域网、广域网和/或无线网络。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并将计算机可读程序指令转发用于存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据或源代码或以一种或多种程序设计语言(包括面向对象的程序设计语言,诸如Smalltalk,C++等)以及诸如“C”程序设计语言或类似程序设计语言的常规程序化程序设计语言的任何组合来编写的目标代码。计算机可读程序指令可以完全在用户计算机上、部分在用户计算机上、作为独立软件包、部分在用户计算机上、部分在远程计算机上、或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以连接到外部计算机(用于例如,通过互联网使用互联网服务提供商)。在一些实施例中,包括例如可编程逻辑电路,现场可编程门阵列 (FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以个性化电子电路,以执行本发明的各个方面。
这里参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各个方面。将理解的是,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以通过计算机可读程序指令来实现。
这些计算机可读程序指令可被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,该计算机可读存储介质可以使得计算机、可编程数据处理设备和/或其他设备以特定方式运行,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理设备或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以生成计算机实现的过程,从而使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
流程图和框图示出了根据本发明的各种实施例的系统,方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示包括用于实现指定的逻辑功能的一个或多个可执行指令的模块,程序段或代码的一部分。还应该注意的是,在一些替代实施方式中,方框中提到的功能可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。还应该注意的是,框图和/或流程图中的每个框以及框图和/或流程图中的框的组合可以由执行指定的功能或动作的基于专用硬件的系统来实现、或专用硬件和计算机指令的组合。
已经出于说明的目的呈现了本发明的各种实施例的描述,上述说明并非穷尽性的,并且也不限于所披露的各实施例。在不脱离所描述的实施例的范围和精神的情况下,对于本领域的普通技术人员来说,许多修改和变化将是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (17)

1.一种计算机实现的方法,包括:
获取指示待部署的目标容器所需的一组目标库的第一信息;
获取第二信息,所述第二信息指示针对部署在多个候选主机上的至少一个容器已经加载的一组库;
至少部分地基于所述第一信息和所述第二信息来确定在所述多个候选主机上部署所述目标容器的成本;和
基于用于部署所述目标容器的成本从所述多个候选主机中选择目标主机;
其中:
所述目标容器是第一容器;和
所述目标主机是所述多个候选主机中的第一主机;和
进一步包括:
将所述第一容器部署到所述第一主机;
将第二容器从所述多个候选主机部署到第二主机,所述第二容器与所述第一容器相关联,所述第二主机不同于所述第一主机;和
部署可操作地在所述第一容器和所述第二容器之间传送数据的桥组件。
2.如权利要求1所述的计算机实现的方法,其中获取第二信息包括:
分析用于在所述多个候选主机上部署所述至少一个容器的一组模板的构建历史。
3.根据权利要求1所述的计算机实现的方法,其中确定部署所述目标容器的成本包括,对于所述多个候选主机当中的给定候选主机:
至少部分地基于所述第一信息和所述第二信息来确定所述一组目标库与已经加载在所述给定候选主机上的一组库之间的匹配程度;和
至少部分地基于匹配程度来确定在给定候选主机上部署所述目标容器的成本。
4.如权利要求3所述的计算机实现的方法,其中:
确定部署目标容器的成本还包括确定将所述目标库加载到给定候选主机的成本;和
确定在给定候选主机上部署目标容器的成本还至少部分地基于将该组目标库加载到给定候选主机的成本。
5.如权利要求1所述的计算机实现的方法,还包括:
获得指示所述多个候选主机的一组工作负载的第三信息;和
其中还至少部分地基于所述第三信息选择目标主机,使得来自与所述目标主机相对应的所述一组工作负载低于预定阈值。
6.如权利要求1所述的计算机实现的方法,还包括:
确定在所述多个候选主机上部署第二容器的成本;和
其中:
选择所述目标主机包括至少部分地基于部署第一容器的成本和部署第二容器的成本来选择所述目标主机,使得部署第一容器和第二容器的总成本低于预定阈值。
7.一种计算机系统,包括:
处理器组;和
计算机可读存储介质;
其中:
该处理器组被构造、定位、连接和/或编程以运行存储在计算机可读存储介质上的程序指令;和
该程序指令包括:
被编程为获取指示将被部署的目标容器所需的一组目标库的第一信息的程序指令;
被编程为获得第二信息的程序指令,所述第二信息指示为部署在多个候选主机上的至少一个容器的已经加载的一组库;
被编程为至少部分地基于所述第一信息和所述第二信息来确定在所述多个候选主机上部署所述目标容器的成本的程序指令;和
被编程为基于用于部署所述目标容器的成本从所述多个候选主机中选择目标主机的程序指令;
其中:
所述目标容器是第一容器;和
所述目标主机是所述多个候选主机中的第一主机;和
进一步包括:
被编程为将所述第一容器部署到所述第一主机的程序指令;
被编程为将第二容器从所述多个候选主机部署到第二主机的程序指令,所述第二容器与所述第一容器相关联,所述第二主机不同于所述第一主机;和
程序指令,其被编程为部署可操作地在所述第一容器和所述第二容器之间传送数据的桥组件。
8.如权利要求7所述的计算机系统,其中被编程为获取第二信息的程序指令包括:
程序指令,其被编程为分析用于在所述多个候选主机上部署所述至少一个容器的一组模板的构建历史。
9.根据权利要求7所述的计算机系统,其中被编程为确定部署所述目标容器的成本的所述程序指令包括:对于所述多个候选主机当中的给定候选主机:
被编程为至少部分地基于所述第一信息和所述第二信息来确定所述一组目标库与已经加载在所述给定候选主机上的一组库之间的匹配程度的程序指令;和
程序指令,所述程序指令被编程为至少部分地基于所述匹配程度来确定在所述给定候选主机上部署所述目标容器的成本。
10.如权利要求9所述的计算机系统,其中:
被编程以确定部署目标容器的成本的程序指令还包括确定将目标库加载到所述给定候选主机的成本;和
被编程为确定在所述给定候选主机上部署目标容器的成本的程序指令进一步至少部分地基于将该组目标库加载到所述给定候选主机的成本。
11.如权利要求7所述的计算机系统,还包括:
被编程为获得指示所述多个候选主机的一组工作负载的第三信息的程序指令;和
其中编程为至少部分地基于所述第三信息选择目标主机的所述程序指令使得来自与选择的所述目标主机相对应的所述一组工作负载低于预定阈值。
12.如权利要求7所述的计算机系统,还包括:
被编程为确定在所述多个候选主机上部署所述第二容器的成本的程序指令;和
其中:
被编程为选择所述目标主机的程序指令包括至少部分地基于部署第一容器的成本和部署第二容器的成本来选择所述目标主机,使得部署第一容器和第二容器的总成本容器低于预定的阈值。
13.一种计算机可读存储介质,其中存储有:
被编程为获取指示将被部署的目标容器所需的一组目标库的第一信息的程序指令;
被编程为获得第二信息的程序指令,所述第二信息指示为部署在多个候选主机上的至少一个容器已经加载的一组库;
被编程为至少部分地基于所述第一信息和所述第二信息来确定在所述多个候选主机上部署所述目标容器的成本的程序指令;和
被编程为基于用于部署所述目标容器的成本从所述多个候选主机中选择目标主机的程序指令;
其中:
所述目标容器是第一容器;和
所述目标主机是多个候选主机中的第一主机;和
进一步包括:
被编程为将所述第一容器部署到所述第一主机的程序指令;
被编程为将第二容器从所述多个候选主机部署到第二主机的程序指令,所述第二容器与所述第一容器相关联,所述第二主机不同于所述第一主机;和
程序指令,其被编程为部署可操作来在所述第一容器和所述第二容器之间传送数据的桥组件。
14.如权利要求13所述的计算机可读存储介质,其中被编程为获得第二信息的程序指令包括:
程序指令,其被编程为分析用于在所述多个候选主机上部署所述至少一个容器的一组模板的构建历史。
15.根据权利要求13所述的计算机可读存储介质,其中编程为确定部署所述目标容器的成本的所述程序指令包括,对于所述多个候选主机当中的给定候选主机:
被编程为至少部分地基于所述第一信息和所述第二信息来确定所述一组目标库与已经加载在所述给定候选主机上的一组库之间的匹配程度的程序指令;和
程序指令,所述程序指令被编程为至少部分地基于所述匹配程度来确定在所述给定候选主机上部署所述目标容器的成本。
16.如权利要求15所述的计算机可读存储介质,其中:
被编程以确定部署目标容器的成本的程序指令还包括确定将目标库加载到给定候选主机的成本;和
被编程为确定在给定候选主机上部署目标容器的成本的程序指令进一步至少部分地基于将该组目标库加载到给定候选主机的成本。
17.如权利要求13所述的计算机可读存储介质,还包括:
被编程为获得指示所述多个候选主机的一组工作负载的第三信息的程序指令;和
其中编程为至少部分地基于所述第三信息选择目标主机的所述程序指令使得来自与所述选择的目标主机相对应的所述一组工作负载低于预定阈值。
CN201680044710.1A 2015-08-18 2016-08-02 基于依赖的容器部署 Active CN107924323B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/828,564 2015-08-18
US14/828,564 US9965261B2 (en) 2015-08-18 2015-08-18 Dependency-based container deployment
PCT/CN2016/092780 WO2017028680A1 (en) 2015-08-18 2016-08-02 Dependency-based container deployment

Publications (2)

Publication Number Publication Date
CN107924323A CN107924323A (zh) 2018-04-17
CN107924323B true CN107924323B (zh) 2022-03-01

Family

ID=58051973

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680044710.1A Active CN107924323B (zh) 2015-08-18 2016-08-02 基于依赖的容器部署

Country Status (6)

Country Link
US (2) US9965261B2 (zh)
JP (1) JP6826586B2 (zh)
CN (1) CN107924323B (zh)
DE (1) DE112016003249T5 (zh)
GB (1) GB2557093B (zh)
WO (1) WO2017028680A1 (zh)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160350081A1 (en) * 2015-05-27 2016-12-01 Runnable Inc. Automatic container definition
US10025611B2 (en) * 2015-10-20 2018-07-17 International Business Machines Corporation Server build optimization
CN107431720B (zh) * 2015-12-31 2019-11-29 华为技术有限公司 镜像部署方法和装置
US11283900B2 (en) 2016-02-08 2022-03-22 Microstrategy Incorporated Enterprise performance and capacity testing
US10440153B1 (en) 2016-02-08 2019-10-08 Microstrategy Incorporated Enterprise health score and data migration
US10291706B1 (en) * 2016-03-24 2019-05-14 EMC IP Holding Company LLC Container image distribution acceleration
US10210024B2 (en) * 2016-08-23 2019-02-19 Samsung Electronics Co., Ltd. Intelligent controller for containerized applications
US10412154B2 (en) * 2017-04-17 2019-09-10 Red Hat, Inc. Configuration recommendation for a microservice architecture
JP6581155B2 (ja) * 2017-07-28 2019-09-25 日本電信電話株式会社 不要ファイル検出装置、不要ファイル検出方法および不要ファイル検出プログラム
WO2019068036A1 (en) * 2017-09-30 2019-04-04 Oracle International Corporation DEPLOYMENT OF CONTAINERS BASED ON ENVIRONMENTAL REQUIREMENTS
US10572294B1 (en) * 2018-01-03 2020-02-25 Amazon Technologies, Inc. Automated application footprint discovery for application migration to containers
US10929117B2 (en) * 2018-02-08 2021-02-23 Red Hat, Inc. Container image building using shared resources
US10970258B2 (en) 2018-02-23 2021-04-06 Red Hat, Inc. Managing container-image layers
US10977066B2 (en) 2018-04-06 2021-04-13 Red Hat, Inc. Virtual machine to container conversion and optimization
US10901751B2 (en) 2018-05-17 2021-01-26 International Business Machines Corporation Temporal layers for container technologies
US11461086B2 (en) * 2018-08-17 2022-10-04 Ivanti, Inc. Methods and apparatus for safe and smart distribution of software patches
US10558455B1 (en) 2018-10-23 2020-02-11 International Business Machines Corporation Managing an update of a software module in a layered filesystem
US10896067B2 (en) * 2019-01-11 2021-01-19 Hewlett Packard Enterprise Development Lp Determining the cost of container-based workloads
US20200301789A1 (en) 2019-03-18 2020-09-24 International Business Machines Corporation File Sharing Among Virtual Containers with Fast Recovery and Self-Consistency
US11163552B2 (en) * 2019-04-15 2021-11-02 International Business Machines Corporation Federated framework for container management
US11175939B2 (en) * 2019-05-09 2021-11-16 International Business Machines Corporation Dynamically changing containerized workload isolation in response to detection of a triggering factor
US11068243B2 (en) * 2019-06-04 2021-07-20 Red Hat, Inc. Application stack builder based on node features
US11829742B2 (en) 2019-08-15 2023-11-28 Microstrategy Incorporated Container-based server environments
US11106455B2 (en) 2019-08-15 2021-08-31 Microstrategy Incorporated Integration of containers with external elements
US11288053B2 (en) 2019-08-15 2022-03-29 Microstrategy Incorporated Conversion and restoration of computer environments to container-based implementations
US11637748B2 (en) 2019-08-28 2023-04-25 Microstrategy Incorporated Self-optimization of computing environments
US11210189B2 (en) 2019-08-30 2021-12-28 Microstrategy Incorporated Monitoring performance of computing systems
US11507295B2 (en) 2019-08-30 2022-11-22 Microstrategy Incorporated Backup, restoration, and migration of computer systems
US10972548B2 (en) 2019-09-09 2021-04-06 International Business Machines Corporation Distributed system deployment
US11442765B1 (en) * 2019-09-18 2022-09-13 Amazon Technologies, Inc. Identifying dependencies for processes for automated containerization
US11354216B2 (en) 2019-09-18 2022-06-07 Microstrategy Incorporated Monitoring performance deviations
US11487878B1 (en) 2019-09-18 2022-11-01 Amazon Technologies, Inc. Identifying cooperating processes for automated containerization
US11245636B2 (en) 2019-09-20 2022-02-08 International Business Machines Corporation Distributing computing resources based on location
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
US11463478B2 (en) 2019-10-29 2022-10-04 International Business Machines Corporation Remediation strategy optimization for development, security and operations (DevSecOps)
US11836158B2 (en) 2020-02-03 2023-12-05 Microstrategy Incorporated Deployment of container-based computer environments
US11449320B2 (en) * 2020-04-03 2022-09-20 Sap Se Mechanism for deploying legacy applications on new generation hyperscalers
US11650810B1 (en) 2020-05-27 2023-05-16 Amazon Technologies, Inc. Annotation based automated containerization
JP2022014972A (ja) * 2020-07-08 2022-01-21 富士通株式会社 情報処理装置及び配置先決定プログラム
US11256493B1 (en) 2020-11-03 2022-02-22 Bank Of America Corporation Container image optimizer
US11573818B2 (en) 2020-11-24 2023-02-07 International Business Machines Corporation Containerized computing environments
US20220206772A1 (en) * 2020-12-30 2022-06-30 Accenture Global Solutions Limited Scalable, robust, and secure multi-tenant edge architecture for mission-critical applications
US11954473B2 (en) 2021-09-20 2024-04-09 Microstrategy Incorporated Deployment architecture for multi-tenant cloud computing systems
KR102660421B1 (ko) * 2021-10-28 2024-04-23 에스케이텔레콤 주식회사 가상네트워크관리장치 및 가상네트워크관리장치의 동작 방법
US11861342B2 (en) 2022-01-28 2024-01-02 Microstrategy Incorporated Enhanced cloud-computing environment deployment
US20240126527A1 (en) * 2022-10-12 2024-04-18 Dell Products L.P. System and method of installing software products on information handling systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103580923A (zh) * 2013-11-08 2014-02-12 华为技术有限公司 软件部署的方法和装置
EP2731009A1 (en) * 2011-07-04 2014-05-14 Fujitsu Limited Deployment design program and method, and information processing device
CN103885831A (zh) * 2012-12-19 2014-06-25 中国电信股份有限公司 虚拟机宿主机的选择方法与装置
CN104008002A (zh) * 2014-06-17 2014-08-27 电子科技大学 云平台环境下虚拟机部署的目标主机选择方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040003266A1 (en) * 2000-09-22 2004-01-01 Patchlink Corporation Non-invasive automatic offsite patch fingerprinting and updating system and method
US20040068553A1 (en) * 2002-10-07 2004-04-08 International Business Machines Corporation Dynamically selecting a Web service container for hosting remotely instantiated Web services
US7284054B2 (en) * 2003-04-11 2007-10-16 Sun Microsystems, Inc. Systems, methods, and articles of manufacture for aligning service containers
US8122446B2 (en) * 2005-11-03 2012-02-21 International Business Machines Corporation Method and apparatus for provisioning software on a network of computers
US7802083B2 (en) 2006-12-20 2010-09-21 Intel Corporation Utilization based installation on a computing system
US10108460B2 (en) * 2008-02-28 2018-10-23 International Business Machines Corporation Method and system for integrated deployment planning for virtual appliances
WO2013165354A1 (en) 2012-04-30 2013-11-07 Hewlett-Packard Development Company, L.P. Determining virtual machine placement
CN103916417B (zh) * 2012-12-31 2017-09-05 华为技术有限公司 一种部署应用的方法和调度器
CN104239159A (zh) 2013-06-11 2014-12-24 鸿富锦精密工业(深圳)有限公司 虚拟机维护系统及方法
JP6136738B2 (ja) * 2013-08-09 2017-05-31 富士通株式会社 管理プログラム、管理装置および管理方法
US20150082298A1 (en) * 2013-09-19 2015-03-19 Qiu Shi WANG Packaging and deploying hybrid applications
US20160026442A1 (en) * 2014-07-25 2016-01-28 Mahesh Kumar Chhaparia Method and system for hosting and running user configured dynamic applications through a software container on a computing device
CA2878759C (en) 2015-01-20 2015-12-22 Sphere 3D Inc. Methods and systems for providing software applications
US10243879B2 (en) * 2015-03-13 2019-03-26 Microsoft Technology Licensing, Llc Intelligent placement within a data center
CN104767741B (zh) 2015-03-24 2018-03-06 杭州安恒信息技术有限公司 一种基于轻型虚拟机的计算服务分离与安全保护系统
US9817584B2 (en) * 2015-06-02 2017-11-14 Prophetstor Data Services, Inc. Storage system having node with light weight container

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2731009A1 (en) * 2011-07-04 2014-05-14 Fujitsu Limited Deployment design program and method, and information processing device
CN103885831A (zh) * 2012-12-19 2014-06-25 中国电信股份有限公司 虚拟机宿主机的选择方法与装置
CN103580923A (zh) * 2013-11-08 2014-02-12 华为技术有限公司 软件部署的方法和装置
CN104008002A (zh) * 2014-06-17 2014-08-27 电子科技大学 云平台环境下虚拟机部署的目标主机选择方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
An Automatic Decision-Making Mechanism for Virtual Machine Live Migration in Private Clouds;Kao,MT;《MATHEMATICAL PROBLEMS IN ENGINEERING》;20140831;第2014卷;第1-7页 *
一种云平台中优化的虚拟机部署机制;温少君;《计算机工程》;20120630;第38卷(第11期);第17-19页 *
异构云平台中能源有效的虚拟机部署研究;周东清;《计算机科学》;20150331;第42卷(第3期);第81-84页 *

Also Published As

Publication number Publication date
GB2557093A (en) 2018-06-13
JP6826586B2 (ja) 2021-02-03
US9959104B2 (en) 2018-05-01
JP2018530033A (ja) 2018-10-11
CN107924323A (zh) 2018-04-17
US20170052772A1 (en) 2017-02-23
US9965261B2 (en) 2018-05-08
GB201802323D0 (en) 2018-03-28
US20170052771A1 (en) 2017-02-23
GB2557093B (en) 2019-02-13
DE112016003249T5 (de) 2018-04-26
WO2017028680A1 (en) 2017-02-23

Similar Documents

Publication Publication Date Title
CN107924323B (zh) 基于依赖的容器部署
US9170840B2 (en) Duration sensitive scheduling in a computing environment
US11665064B2 (en) Utilizing machine learning to reduce cloud instances in a cloud computing environment
US11924117B2 (en) Automated local scaling of compute instances
WO2016040699A1 (en) Computing instance launch time
US10114677B2 (en) Method and system for workload recommendations on information handling systems
US10069906B2 (en) Method and apparatus to deploy applications in cloud environments
US20220391253A1 (en) Method of resource management of virtualized system, electronic device and computer program product
US9766834B2 (en) Live partition mobility using ordered memory migration
US10969988B2 (en) Performing proactive copy-on-write for containers
US10684895B1 (en) Systems and methods for managing containerized applications in a flexible appliance platform
WO2022100439A1 (en) Workflow patching
US9971785B1 (en) System and methods for performing distributed data replication in a networked virtualization environment
US10901798B2 (en) Dependency layer deployment optimization in a workload node cluster
US11775655B2 (en) Risk assessment of a container build
US20220335318A1 (en) Dynamic anomaly forecasting from execution logs
US11861387B2 (en) Migration of guest operating system optimization tool settings in a multi-hypervisor data center environment
US20240103899A1 (en) Virtual machine deployment based on workload and hardware in a hyper-converged infrastructure (hci) environment
US20230118939A1 (en) Risk Assessment of a Container Build
US20210109802A1 (en) Dynamically Analyzing Diagnostic Operations Data Via Machine Learning Techniques
US9916171B2 (en) Application discovery in virtual machines using temporal clustering of installation files

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