掌桥专利:专业的专利平台
掌桥专利
首页

一种面向资源受限条件的轻量化容器引擎运行方法及系统

文献发布时间:2023-06-19 18:58:26


一种面向资源受限条件的轻量化容器引擎运行方法及系统

技术领域

本发明涉及容器虚拟化技术领域,更具体地说,它涉及一种面向资源受限条件的轻量化容器引擎运行方法及系统。

背景技术

现有容器引擎主要是Docker,它是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

具体Docker引擎的结构示意图,如图1所示,现有容器引擎存在后台常驻进程多、自身资源占用率高、兼容性差、进程间通信能力弱和自身启停时间长等问题。

发明内容

本申请的目的是提供一种面向资源受限条件的轻量化容器引擎运行方法及系统,对容器的运行过程进行了修改,容器运行时资源粒度从镜像层细化到了具体的二进制文件,使得容器引擎具备资源占用少、启停时间短、安装包轻量化和异构兼容性高等优点。

本申请提供一种面向资源受限条件的轻量化容器引擎运行方法,上述技术目的是通过以下技术方案得以实现的:包括

接收用于指示容器运行的客户命令;

解析并加载与所述客户命令对应的二进制文件和共享库文件;

通过所述二进制文件和共享库文件生成对应的运行环境。

采用上述技术方案,对容器的运行过程进行了修改,本申请提出的轻量化容器引擎运行时摒弃镜像概念,资源粒度从镜像层细化到了具体的二进制文件,由容器引擎解析二进制文件,动态生成指定的运行环境。使得容器引擎具备资源占用少、启停时间短、安装包轻量化和异构兼容性高等优点,为战术高弹性云化资源池上快速构建高度内聚、极低耦合的云化应用服务的运行底座提供能力支撑。

进一步的,还包括:对容器运行过程进行剪裁,剪裁网络管理和存储卷。

采用上述技术方案,轻量化容器引擎裁剪了网络管理和存储卷,减少了额外的逻辑判断和处理,从而减少了资源消耗,不支持额外的网络插件保证了网络的分配效率。

进一步的,还包括:当接收用于指示执行驱动器运行的命令时,根据命令内容向下调用对应的核心服务和容器库,并与Linux内核进行交互;

当接收用于指示镜像图驱动器运行的命令时,与Linux内核进行交互。

采用上述技术方案,轻量化容器引擎简化了调用流程,客户端即可直接完成大部分的核心服务,比如:镜像的拉取、容器状态的查看。

进一步的,还包括:当接收用于指示创建容器的命令时,轻量化容器引擎创建进程,并构建文件系统,实现容器创建。

进一步的,还包括:当接收用于指示容器运行的命令时,轻量化容器引擎创建进程,调用并执行对应的二进制文件和共享库文件,生成对应的运行环境。

采用上述技术方案,只有创建容器和运行容器内命令时轻量化容器引擎才会启动新的进程,尽量减少复杂的逻辑,可保证以最快的速度启动容器。且轻量化容器引擎减少了调用的层级,传统Docker需要调用containerd和runc,而对于轻量化容器引擎而言,它只有一层,即轻量化容器引擎只需要调用轻量化容器引擎的核心组件,减少了进程间的通信,因此轻量化容器引擎有着更短的启停时间。

本申请另一方面,提供一种面向资源受限条件的轻量化容器引擎运行系统,包括:

客户端,用于接收并执行客户命令;

镜像管理,用于存放二进制文件和共享库文件;

Linux内核,用于存储联合文件系统,保存设备映射关系;

其中,当客户端接收到用于指示容器运行的命令时,从镜像管理中解析并加载与所述命令对应的二进制文件和共享库文件,通过所述二进制文件和共享库文件生成对应的运行环境,并映射至Linux内核。

进一步的,所述客户端包括:执行驱动器和镜像图驱动器;

当接收用于指示执行驱动器运行的命令时,根据命令内容向下调用对应的核心服务和容器库,并与Linux内核进行交互;

当接收用于指示镜像图驱动器运行的命令时,与Linux内核进行交互。

本申请另一方面,提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的一种面向资源受限条件的轻量化容器引擎运行方法。

本申请另一方面,提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的一种面向资源受限条件的轻量化容器引擎运行方法。

本申请另一方面,提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述一种面向资源受限条件的轻量化容器引擎运行方法。

与现有技术相比,本申请具有以下有益效果:本发明提供一种面向资源受限条件的轻量化容器引擎运行方法及系统,一方面,在容器运行的过程中,轻量化容器引擎摒弃镜像概念,资源粒度从镜像层细化到了具体的二进制文件;另一方面,轻量化容器引擎裁剪了资源管理,减少了网络管理、储存卷管理,从而减少了资源消耗。本发明的一种面向资源受限条件的轻量化容器引擎具备资源占用少、启停时间短、安装包轻量化和异构兼容性高等优点,为战术高弹性云化资源池上快速构建高度内聚、极低耦合的云化应用服务的运行底座提供能力支撑。

附图说明

此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:

图1为本发明一实施例提供的轻量化引擎运行方法的流程示意图;

图2为本发明一实施例提供的传统容器引擎运行过程的示意图;

图3为本发明一实施例提供的轻量化容器引擎运行过程的示意图;

图4为本发明一实施例提供的传统容器引擎的结构示意图;

图5为本发明一实施例提供的轻量化容器引擎的结构示意图。

具体实施方式

在下文中,可在本申请的各种实施例中使用的术语“包括”或“可包括”指示所申请的功能、操作或元件的存在,并且不限制一个或更多个功能、操作或元件的增加。此外,如在本申请的各种实施例中所使用,术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

在本申请的各种实施例中,表述“或”或“B或/和C中的至少一个”包括同时列出的文字的任何组合或所有组合。例如,表述“B或C”或“B或/和C中的至少一个”可包括B、可包括C或可包括B和C二者。

在本申请的各种实施例中使用的表述(诸如“第一”、“第二”等)可修饰在各种实施例中的各种组成元件,不过可不限制相应组成元件。例如,以上表述并不限制所述元件的顺序和/或重要性。以上表述仅用于将一个元件与其它元件区别开的目的。例如,第一用户装置和第二用户装置指示不同用户装置,尽管二者都是用户装置。例如,在不脱离本申请的各种实施例的范围的情况下,第一元件可被称为第二元件,同样地,第二元件也可被称为第一元件。

应注意到:如果描述将一个组成元件“连接”到另一组成元件或与另一组成元件“相连”,则可将第一组成元件直接连接到第二组成元件,并且可在第一组成元件和第二组成元件之间“连接”第三组成元件。相反地,当将一个组成元件“直接连接”到另一组成元件或与另一组成元件“直接相连”时,可理解为在第一组成元件和第二组成元件之间不存在第三组成元件。

在本申请的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本申请的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本申请的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本申请的各种实施例中被清楚地限定。

为使本申请的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本申请作进一步的详细说明,本申请的示意性实施方式及其说明仅用于解释本申请,并不作为对本申请的限定。

本实施例第一方面提供一种面向资源受限条件的轻量化容器引擎方法,解决传统容器引擎存在的不足。

传统容器设计中,镜像的作用是为容器提供一个固定的运行时环境。因不能事先确定容器中的应用程序,镜像在封装过程中通常会包含通用的基础程序。这些基础程序在生产环境中往往不会被全部使用,这样构建的运行时环境不仅造成内存和磁盘空间的浪费也让容器存在更多安全隐患。同时,基于镜像的容器设计也是内存中运行时库冗余的来源,运行时依赖文件在内存中的冗余程度是影响内存利用率的显著因素。业界主流容器管理器只支持特定存储驱动下基于同源镜像的容器在内存中的库文件共享,但对于其他存储驱动或非同源镜像启动的容器却无法实现,这导致了即使相同的运行时依赖文件也会被重复地加载至内存,造成内存空间浪费。因此,本实施例提供一种面向资源受限条件的轻量化容器引擎运行方法,摒弃镜像的概念,简化容器运行。

参见图1所示,图1为本实施例提供一种面向资源受限条件的轻量化容器引擎运行方法的流程示意图,方法包括:

接收用于指示容器运行的客户命令;

解析并加载与所述客户命令对应的二进制文件和共享库文件;

通过所述二进制文件和共享库文件生成对应的运行环境。

本实施例提供的轻量化容器引擎运行方法,提出运行时环境嵌入代码的容器设计理念,强调代码即镜像本身.使用者在编写应用程序时,只需在项目配置文件中指定该应用程序所依赖的运行时环境。容器运行时,由容器引擎解析并动态生成使用者指定的运行时环境。于是内存进行容器资源加载时,资源粒度从原本固定的镜像层细化到了具体的可执行二进制文件与共享库文件,仅生成容器中应用程序执行所需的最小化运行时环境。同时,由于所有依赖文件都由本机文件系统向容器内统一映射,使得多个容器依赖的相同文件在内存中的索引节点相同,保证了内存中相同可执行二进制文件与共享库的唯一性,从而最大化内存资源的共享。

进一步的,对容器运行过程进行剪裁,剪裁网络管理和存储卷。

轻量化容器引擎对于传统容器引擎来说减少了网络管理。轻量化容器引擎对外默认提供分布式跨节点的二层网络,上层应用可使用自己的网络实现。传统容器引擎对外提供不同的网络实现,和默认的桥接网络实现,自己管理网络生命周期较为消耗资源以及容易出现网络问题导致网络不可用。

轻量化容器引擎对于传统容器引擎来说减少了存储卷的管理。该部分功能交由了上层存储管理实现,减少了资源消耗。在目前集群应用场景中,单节点的容器存储已经不再被使用,所以轻量化裁剪了该部分多余功能。

轻量化容器引擎只是一个二进制文件,并且它运行时依赖的文件很少,总大小不到16MB,而传统容器引擎因为存在在线的镜像搜索、数据卷管理、网络管理,代码多逻辑复杂,运行时依赖也多,传统容器安装后磁盘占用在200MB左右。相对于传统容器引擎,剪裁后的轻量化容器引擎有着更小的资源占用。轻量化容器引擎进程不会常驻内存,不会拿内存做临时的缓存供外部查询,这样不会有大量的内存消耗,并且所使用的内存都会随着进程的退出而释放。

进一步的,方法还包括:当接收用于指示执行驱动器运行的命令时,根据命令内容向下调用对应的核心服务和容器库,并与Linux内核进行交互;

当接收用于指示镜像图驱动器运行的命令时,与Linux内核进行交互。

轻量化容器引擎简化了调用流程。客户端完成了大部分的操作,比如:镜像的拉取、容器状态的查看。只有启动容器时和执行容器内命令时轻量化容器引擎才会启动新的进程。

进一步的,方法还包括:

当接收用于指示创建容器的命令时,轻量化容器引擎创建进程,并构建文件系统,实现容器创建;

当接收用于指示容器运行的命令时,轻量化容器引擎创建进程,调用并执行对应的二进制文件和共享库文件,生成对应的运行环境。

参见图2-3所示,图2为传统容器引擎运行过程的示意图,图3为轻量化容器引擎运行过程的示意图。相较于传统容器引擎,轻量化容器引擎简化了调用流程。只有启动容器时和执行容器内命令时轻量化容器引擎才会启动新的进程,传统容器引擎运行时需要调用containerd和runc,而对于轻量化容器引擎来说,它只有一层,减少了进程间的通信。因此,轻量化容器引擎有着更短的启停时间。

本实施例第二方面,提供一种面向资源受限条件的轻量化容器引擎系统,解决传统容器引擎的不足。

参见图4所示,图4为传统容器引擎的结构示意图,传统容器引擎主要包括存储卷、docker后台、镜像管理以及Linux内核,图中箭头表示调用关系,现有docker引擎存在后台常驻进程多、自身资源占用率高、兼容性差、进程间通信能力弱和自身启停时间长等问题。为此,本实施例提出一种面向资源受限条件的轻量化容器引擎运行系统,解决上述问题。

参见图5所示,图5为本实施例提供的一种面向资源受限条件的轻量化容器引擎系统的结构示意图,系统包括:

客户端,用于接收并执行客户命令;

镜像管理,用于存放二进制文件和共享库文件;

Linux内核,用于存储联合文件系统,保存设备映射关系;

其中,当客户端接收到用于指示容器运行的命令时,从镜像管理中解析并加载与所述命令对应的二进制文件和共享库文件,通过所述二进制文件和共享库文件生成对应的运行环境,并映射至Linux内核。

进一步地,所述客户端包括:执行驱动器和镜像图驱动器;

当接收用于指示执行驱动器运行的命令时,根据命令内容向下调用对应的核心服务和容器库,并与Linux内核进行交互;

当接收用于指示镜像图驱动器运行的命令时,与Linux内核进行交互。

本实施例提供的一种面向资源受限条件的轻量化容器引擎运行方法及系统,一方面摒弃了镜像概念,资源粒度从镜像层细化到了具体的二进制文件,由容器引擎解析二进制文件,动态生成指定的运行环境,使得容器引擎具备资源占用少、启停时间短、安装包轻量化和异构兼容性高等优点,为战术高弹性云化资源池上快速构建高度内聚、极低耦合的云化应用服务的运行底座提供能力支撑;另一方面,剪裁了网络管理和存储卷管理,减少了额外的逻辑判断和处理,从而减少了资源消耗,保证了网络的分配效率。

本实施例另外还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的一种面向资源受限条件的轻量化容器引擎运行方法。

提供一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的一种面向资源受限条件的轻量化容器引擎运行方法。

提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述一种面向资源受限条件的轻量化容器引擎运行方法。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术分类

06120115758718