CN114072765B - 用于基于容器的虚拟化系统的方法 - Google Patents

用于基于容器的虚拟化系统的方法 Download PDF

Info

Publication number
CN114072765B
CN114072765B CN202080049806.3A CN202080049806A CN114072765B CN 114072765 B CN114072765 B CN 114072765B CN 202080049806 A CN202080049806 A CN 202080049806A CN 114072765 B CN114072765 B CN 114072765B
Authority
CN
China
Prior art keywords
container
compilation
kernel
application
virtualization system
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
CN202080049806.3A
Other languages
English (en)
Other versions
CN114072765A (zh
Inventor
T.塞克曼
A.格鲁谢茨基
T.卡扎尔斯基
A.弗罗贝尔
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 CN114072765A publication Critical patent/CN114072765A/zh
Application granted granted Critical
Publication of CN114072765B publication Critical patent/CN114072765B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及一种用于扩展基于容器的虚拟化系统的内核的内核功能的方法。该方法包括:在基于容器的虚拟化系统中提供用于针对基于容器的虚拟化系统的内核编译内核模块的编译容器,以及用于使用内核模块扩展内核的内核功能的应用容器。应用容器可以将内核模块输入到编译容器中。编译容器可以在编译容器中编译内核模块。应用容器可从编译容器接收编译的内核模块。应用容器可将经编译的内核模块加载到系统的内核以用于启用内核功能性的扩展。

Description

用于基于容器的虚拟化系统的方法
背景技术
本发明涉及数字计算机系统领域,并且更具体地,涉及用于扩展基于容器的虚拟化系统的内核的内核功能的方法。
诸如Docker之类的容器管理器是一组耦合的软件即服务和平台即服务产品,它们使用操作系统级虚拟化来在称为容器的包中开发和传送软件。然而,容器的便携性可能由于容器对部署容器的系统的依赖而受到限制。
发明内容
各个实施例提供了一种用于扩展基于容器的虚拟化系统的内核的内核功能的方法、计算机系统和计算机程序产品,如独立权利要求的主题所描述的。在从属权利要求中描述了有利的实施方式。如果本发明的实施例不相互排斥,则它们可以彼此自由组合。
在一个方面,本发明涉及一种用于扩展基于容器的虚拟化系统的内核的内核功能的方法。该方法包括:
在所述基于容器的虚拟化系统中提供用于编译所述基于容器的虚拟化系统中的内核模块的编译容器,以及用于使用内核模块扩展所述内核的内核功能的应用容器;
由所述应用容器将所述内核模块输入到所述编译容器中;
使用所述编译容器编译所述内核模块;
由所述应用容器从所述编译容器接收所述编译的内核模块;
由所述应用容器将经编译的内核模块加载到所述系统的内核以实现所述内核功能的扩展。
在另一方面中,本发明涉及一种计算机程序产品,其包括计算机可读存储介质,所述计算机可读存储介质具有随其包含的计算机可读程序代码,所述计算机可读程序代码被配置为扩展基于容器的虚拟化系统的内核的内核功能,所述基于容器的虚拟化系统包括用于编译所述基于容器的虚拟化系统中的内核模块的编译容器,以及用于使用内核模块扩展所述内核的内核功能的应用容器;所述计算机可读程序代码被配置为:将所述内核模块输入到所述编译容器;从所述编译容器接收所述编译的内核模块;将所述经编译的内核模块加载到所述系统的内核以实现所述内核功能的扩展。
在另一方面中,本发明涉及一种用于扩展基于容器的虚拟化系统的内核的内核功能的计算机系统,包括:编译容器,用于编译所述基于容器的虚拟化系统中的内核模块;以及应用容器,用于使用内核模块扩展所述内核的内核功能;所述计算机系统被配置为:控制所述应用容器以将所述内核模块输入到所述编译容器;控制所述编译容器以编译所述内核模块;控制所述应用容器以从所述编译容器接收所述经编译的内核模块;以及将所述经编译的内核模块加载到所述基于容器的虚拟化系统的内核。
附图说明
以下参考附图仅通过举例更详细地解释本发明的实施例,在附图中:
图1是基于容器的虚拟化系统的框图。
图2是用于扩展基于容器的虚拟化系统的内核的内核功能的方法的流程图。
图3是示出了用于扩展Linux内核的功能的示例的基于容器的虚拟化系统的框图。
图4表示适于实现本公开中所涉及的一个或多个方法步骤的计算机化系统。
图5是用于创建可重用标准化编译容器以对现有内核源代码应用至少一个新应用的方法的流程图。
图6是用于将包括Linux内核模块(LKM)的新应用容器应用到现有内核源代码中的方法的流程图。
具体实施方式
本发明的不同实施例的描述将出于说明的目的而呈现,但并不旨在是详尽的或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域普通技术人员将是显而易见的。选择本文中使用的术语是为了最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
通过本方法,可以在应用容器的操作期间在运行中执行内核模块的编译。因此,编译责任可被移至基于容器的虚拟化系统的容器化服务和操作系统。这可以具有以下优点:应用容器可以变得便携,因为它们可以不取决于它们将被集成的系统,因为内核模块将在那里被编译,并且将与编译它的系统兼容。这与具有预编译模块的应用容器不同,对此,必须首先检查系统是否与预编译内核模块的系统一致。因此,本主题可以防止漫长的过程,包括在单独的系统中对每个内核模块进行预编译、将预编译的模块放在应用容器中、以及然后仅集成/使用应用容器,例如,在开发周期期间或稍后在容器部署时。例如,当在容器镜像开发期间完成该进程的预编译时,可能会极大地限制生成的应用容器可以部署和运行的环境。这是因为可能需要为每个受支持的内核分别提供应用容器及其预编译内核模块。
该方法可以进一步包括应用容器使用所加载的内核模块。例如,应用容器可以使用由内核模块启用的附加的内核功能(例如,驱动器),并且在退出的内核中可能是不可用的。本主题可以实现稳定的构建环境,以便实现不依赖于使用什么系统的可再现构建。例如,可以从编译镜像创建编译容器。编译镜像可用于不同的系统配置。可提供编译容器和应用容器,使得它们可在彼此之间通信。
基于容器的虚拟化系统可以是基于容器的系统。基于容器的虚拟化系统可以实现操作系统级虚拟化。OS级虚拟化可由允许存在多个隔离的用户空间实例的基于容器的虚拟化系统的内核启用。本主题的容器中的容器可以是这样的实例中的实例。容器管理器可安装在基于容器的虚拟化系统中,以便管理(例如,创建、删除、启动等)容器。
根据一个实施例,提供编译容器包括:在基于容器的虚拟化系统处从编译镜像构建编译容器,其中编译容器是编译镜像的可运行实例。在使用编译容器的系统处构建编译容器可实现全自动化和高效的方法。该方法可以是有效的,因为它可以防止多次尝试下载可能不适合系统的编译图像。
镜像可以是可执行包,其包括运行应用所需的一切--代码、运行时、库、环境变量和配置文件。这可使得编译容器能够访问诸如编译器、内核源、附加编译工具和脚本以及测试程序之类的工件。可在基于容器的虚拟化系统的编译镜像中提供工件,从该基于容器的虚拟化系统创建了编译容器。编译容器可在基于容器的虚拟化系统的容器管理器的安装期间自动创建。编译容器可以被需要加载自己的内核模块的其他应用容器重用。
根据一个实施例,提供编译容器包括接收编译容器并将其集成到基于容器的虚拟化系统中。这可以实现本方法的灵活实现。例如,本方法可以使用多个镜像源来接收适当的编译容器。这可以进一步具有节省否则将由本地创建编译容器所需要的处理资源的优点。例如,接收到的编译容器可以是从远程系统中基于容器的虚拟化系统的编译镜像创建的。
根据一个实施例,基于容器的虚拟化系统包括容器管理器,该方法还包括在输入步骤之前由容器管理器启动编译和应用容器,该启动实现编译和应用容器之间的通信。容器管理器可以是例如Docker或LXC。例如,编译和应用容器的启动可以由命令行“dockerrun”执行。容器管理器可以提供用于控制基于容器的虚拟化系统的容器的执行的集中式组件。例如,该方法包括在启动编译容器之前,确定编译容器先前是否被启动。如果先前启动它,可能不需要再次启动它。该实施例可以是有利的,因为编译容器的启动可以针对多个应用容器执行一次,并且因此可以节省否则会被多次启动所需的处理资源。
根据一个实施例,基于容器的虚拟化系统包括容器管理器,该方法还包括:在输入步骤之前,由容器管理器启动应用容器,并且由应用容器启动编译容器,该启动实现编译容器与应用容器之间的通信。该实施例可以是有利的,因为这可增加应用容器的便携性和独立性。
在一个示例中,应用容器可被配置成创建和启动编译容器。编译容器可从存在于基于容器的虚拟化系统中的编译镜像创建。
根据一个实施例,编译镜像在安装容器管理器时创建或从源数据库下载。例如,容器管理器可包括当安装容器管理器时自动执行的服务。一旦执行,服务可被配置为创建编译镜像。在一个示例中,可以在安装基于容器的虚拟化系统时安装容器管理器。
在安装时间具有容器镜像可使得能够在一开始时就创建编译容器,例如,第一个创建的容器可以是编译容器。这可使得每个新的附加应用容器能够使用编译容器。这可以提高本方法的使用效率。
根据一个实施例,提供应用容器包括:接收应用容器并将应用容器集成到基于容器的虚拟化系统中。接收到的应用容器可以被配置为在基于容器的虚拟化系统中使用或执行。在一个示例中,例如,可以在基于容器的虚拟化系统中创建应用容器,例如,来自基于容器的虚拟化系统的应用镜像。
根据一个实施例,该方法还包括删除编译容器。这可以节省基于容器的虚拟化系统中的处理资源(例如,存储)。由于可能不经常需要内核功能的扩展,所以这可能特别有利。
根据一个实施例,该方法还包括从编译镜像重建编译容器,以用于基于容器的虚拟化系统的内核的进一步的功能扩展。本实施例可以利用现有的编译镜像,从而可以节省每次创建编译容器时创建镜像的资源。例如,该进一步的扩展可以由另一个应用容器的另一个内核模块启用,或者可以由基于容器的虚拟化系统的应用容器的另一个内核模块启用。
在另一示例中,应用容器可被再次重新使用(例如,在重启基于容器的虚拟化系统之后)。为此,可从现有镜像重建编译容器(如果删除),并且可使用重建的编译容器来重复输入、编译、接收和加载步骤。这在加载的内核模块已经被卸载的情况下可以是有利的。
在另一个示例中,应用容器可以使用另一个内核模块。因为可以从现有的镜像重建编译容器,并且可以使用重建的编译容器来重复输入、编译、接收和加载步骤,以便编译和加载另一内核模块。
根据一个实施例,编译和应用容器中的每一个是Docker容器。这可以使本主题能够在现有系统中无缝集成。
根据一个实施例,该方法还包括将经编译的内核模块存储在应用容器可访问的存储装置中,在内核模块从内核卸载的情况下,由应用容器将存储的经编译的内核模块重新加载到内核中。这可以是特别有利的,因为基于容器的虚拟化系统的重新启动可以引起所加载的内核模块的删除/卸载。例如,在重新加载之后,可以再次启动应用容器,并且在再次启动之后,可以确定内核模块已经被卸载,然后可以将所存储的编译的内核模块重新加载到内核中。
根据一个实施例,该方法还包括在基于容器的虚拟化系统中提供可由应用访问的盘或存储以及编译容器,其中输入包括:由应用容器将内核模块存储在盘中,以及由编译容器从盘读取内核模块。盘可例如被安装用于应用和编译容器两者,使得它们均可访问该盘。在一个示例中,接收经编译的内核模块可以包括由编译容器将经编译的内核模块存储在盘中并且由应用容器从盘中读取经编译的内核模块。编译和应用容器可以被配置为自动读取盘的内容,例如。一旦新数据存储在盘中,容器可以被配置为读取盘的内容。
图1是基于容器的虚拟化系统100的框图。基于容器的虚拟化系统100包括操作系统101和硬件组件103。硬件组件103可以例如包括处理器、存储器和诸如输入/输出设备和/或外围设备的设备。
例如,基于容器的虚拟化系统100包括至少部分地由操作系统101执行以用于开发、递送、安装和执行软件容器的容器管理器(或容器化服务)107。容器管理器可以是例如Docker或LXC。基于容器的虚拟化系统100包括软件容器105A-N。可以使用容器管理器107创建软件容器105A-N中的软件容器。在另一示例中,软件容器105A-N中的软件容器可被接收或导入并集成在基于容器的虚拟化系统100中。例如,所接收的容器可以被构建在与基于容器的虚拟化系统100具有相同配置(例如内核配置)的另一系统中。
容器管理器107提供可由应用容器105A-N使用的一组能力。例如,容器管理器107可包括存储启用服务111。存储启用服务111例如可以启用持久卷和驱动器。容器管理器107还可包括用于启用应用容器105A-N之间的通信的网络启用服务113。例如,网络启用服务113可启用可用于容器内通信的虚拟网络。
操作系统101结合容器管理器107提供在系统100中执行的软件进程(诸如应用容器105A-N)之间的隔离。例如,进程可被供应为具有操作系统的私有视图,使得两个进程不能访问彼此的资源。虽然是隔离的,但是进程仍然能够以与不相关和隔离的计算机系统可以经由网络通信相同的方式(如果被配置和允许这样做)通过进程之间的网络连接等进行互通。
容器管理器107可以例如被配置为接收用于在操作系统101中实例化、安装和/或执行的容器镜像109。容器镜像109可以由容器管理器或诸如安装程序之类的另一软件组件来创建和/或修改。容器镜像109可以是用于在操作系统101中作为隔离进程执行的软件组件。例如,容器镜像109可以是从容器存储库(诸如Docker注册表)获得的Docker镜像。例如,容器镜像109可以是具有用于创建容器的指令的只读模板。使用容器镜像109,容器可以由容器管理器107实例化以作为操作系统101中的一个或多个进程执行。
应用容器105A-N可被配置为彼此通信。例如,容器管理器107的网络(例如,该网络可由网络启用服务113创建)可用于在应用容器之间通信。网络可以例如是Docker的桥网络。
软件容器105A-N包括根据本主题的编译容器(或汇编容器)105N。编译容器105N可被配置为编译诸如Linux内核模块的内核模块。例如,编译容器105N可访问编译内核模块所需的工件。这些是例如:内核源文件和报头、C编译器、编译脚本。编译容器可以根据系统100的配置来提供用于编译内核模块的构建环境。
例如,可以在容器管理器安装时间创建编译容器105N。容器管理器107可以具有定义的可选的OS包依赖性——内核源文件包、C编译器包。如果不满足这些相关性,则LKM编译容器镜像可能不在服务安装时间被创建,并且其可能不可用于应用容器。
可以在安装容器管理器时创建编译容器。这可能是有利的,因为容器管理器可能对需要在安装之前已经安装在系统中的包具有依赖性。这些包可用于创建编译镜像。这些包可例如包括内核源包、编译器、编译工具、库和脚本。
应用容器105A例如可以包括内核模块,并且可以使用内核模块来扩展操作系统101的内核的功能。
图2是用于扩展基于容器的虚拟化系统(例如,100)的内核的内核功能的方法的流程图。为了简化的目的,参见图1的系统来描述图2的方法,但是并不局限于此。内核功能可以例如由驱动器或软件模块使用应用容器来扩展。
例如,应用容器105A可以包括Linux内核模块。一旦被编译,Linux内核模块可以是可以被直接插入系统100的Linux内核中的一段编译的二进制代码。所加载的代码可访问系统100中的所有东西。这可以实现Linux内核的内核功能的扩展。
在一个示例中,在执行步骤201之前,可由容器管理器启动应用容器105A和编译容器105N。这可以使得两个容器可以在彼此之间传送数据。例如,编译容器可在应用容器105A开始之前执行或启动。应用容器可部署并配置有LKM源。编译容器可用于编译、测试和暴露应用容器LKM。在另一示例中,应用容器可首先由容器管理器启动,并且所启动的应用容器可启动编译容器。在启动两个容器之后,应用容器105A可在步骤201中将内核模块输入到编译容器105N中。
在一个示例中,可针对应用和编译容器两者安装盘,使得它们两者都可访问该盘。例如,为了输入内核模块,应用容器可以将内核模块存储到盘中,并且编译容器可以从盘中读取内核模块。
在另一实例中,编译容器可包括服务。一旦服务在编译容器中运行,该服务就可以实现应用和编译容器之间的通信,以使得应用容器可以将内核模块输入到编译容器。
响应于接收内核模块作为输入,编译容器105N可在步骤203中相对于操作系统101编译内核模块。且所得经编译内核模块可由编译容器105N发送到应用容器105A。
在步骤205中,应用容器105A可从编译容器105N接收经编译的内核模块。在一个示例中,应用容器可以从存储设备,例如盘,导入经编译的内核模块,其被编译容器存储在其中。在一个示例中,编译容器可将经编译的内核模块传输到应用容器。
在步骤207中,应用容器105A可以将编译的内核模块加载到操作系统101的内核。应用容器105A可以在运行时使用加载的模块。该方法可以使得应用容器能够独立于主机的内核。一旦被加载,应用容器可以使用内核模块来执行其功能,例如,所述应用容器可以是数据库服务器,所述数据库服务器可以使用所述内核模块来使用由所述内核模块启用的新内核功能来存储数据。
图3是示出了用于扩展Linux内核301的功能的示例的基于容器的虚拟化系统300的框图。基于容器的虚拟化系统300包括容器管理器(或容器化服务)302。
容器管理器302包括存储启用服务303。存储启用服务303例如可以启用持久卷和驱动程序。容器管理器302还包括用于实现基于容器的虚拟化系统300的应用容器309A-C和307之间的通信的网络使能服务305。例如,网络启用服务305可启用可用于容器内通信的虚拟网络。
应用容器包括Linux内核模块(LKM)编译容器307。例如,应用开发团队在用于图3的当前方法之前已经在LKM编译容器中测试了LKM编译,例如,LKM容器可能已经在给定的容器化服务中可用并经过测试,该容器化服务可能是容器管理器302,也可能不是容器管理器302。LKM编译容器307例如可以从可用镜像部署在基于容器的虚拟化系统300中。
应用容器309A需要加载和使用LKM。应用容器309A可以运送LKM源文件。应用容器309A可在部署期间利用LKM编译容器307。例如,应用容器309A发送LKM源文件并且针对当前运行的Linux内核编译LKM(311)。将经编译的LKM二进制从LKM编译容器307复制回应用容器309A(312)。此后,LKM编译容器307从基于容器的虚拟化系统300中被删除,因为在此时可能不再需要。如果另一应用容器还将需要编译LKM,则可从可用镜像部署LKM编译容器的另一实例。应用容器309A将经编译的LKM加载(313)到Linux内核301中。之后,应用容器309A可以被完全部署并开始。
图4表示适于实现如本公开中所涉及的方法步骤的通用计算机化系统400,诸如基于容器的虚拟化系统100。
应当理解,本文描述的方法至少部分是非交互的,并且通过诸如服务器或嵌入式系统的计算机化系统自动化。然而,在示例性实施例中,在此描述的方法可以在(部分)交互系统中实现。这些方法可进一步在软件412、422(包括固件422)、硬件(处理器)405或其组合中实现。在示例性实施例中,本文中描述的方法以软件实现为可执行程序,并且由专用或通用数字计算机(诸如个人计算机、工作站、小型计算机或大型计算机)执行。因此,最通用的系统400包括通用计算机401。
在示例性实施例中,在硬件架构方面,如图4所示,计算机401包括处理器405、耦合到存储器控制器415的存储器(主存储器)110、以及经由本地输入/输出控制器435通信地耦合的一个或多个输入和/或输出(I/O)设备(或外围设备)10、445。输入/输出控制器435可以是但不限于如本领域中已知的一个或多个总线或其他有线或无线连接。输入/输出控制器435可具有为简单起见而省略的额外元件,例如控制器、缓冲器(高速缓冲存储器)、驱动器、中继器和接收器,以实现通信。进一步,本地接口可以包括地址、控制和/或数据连接,以实现上述组件之间的适当通信。如本文所描述的,I/O设备10、445通常可以包括本领域已知的任何通用密码卡或智能卡。
处理器405是用于执行软件(尤其是存储在存储器410中的软件)的硬件装置。处理器405可以是任何定制的或商业可获得的处理器、中央处理单元(CPU)、与计算机401相关联的若干处理器之中的辅助处理器、基于半导体的微处理器(呈微芯片或芯片组的形式)、宏处理器、或通常用于执行软件指令的任何装置。
存储器410可以包括易失性存储器元件(例如,随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM等))和非易失性存储器元件(例如,ROM、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、可编程只读存储器(PROM))中的任何一个或其组合。注意,存储器410可以具有分布式架构,其中不同部件彼此远离定位,但是可以由处理器405访问。
存储器410中的软件可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能(尤其是在本发明的实施例中涉及的功能)的可执行指令的有序列表。在图4的示例中,存储器410中的软件包括例如指令412,例如,管理诸如数据库管理系统的数据库的指令。
存储器410中的软件通常还应包括合适的操作系统(OS)111。OS 411实质上控制其他计算机程序(诸如,可能用于实现如本文中所描述的方法的软件412)的执行。
本文描述的方法可以是源程序412、可执行程序412(目标代码)、脚本或包括要执行的指令集412的任何其他实体的形式。当输入源程序时,则需要经由编译器、汇编器、解释器等来翻译程序,该编译器、汇编器、解释器等可以包括在或可以不包括在存储器410内,以便结合OS 411正确地操作。此外,所述方法可被写为具有数据和方法类的面向对象的编程语言,或具有例程、子例程和/或函数的过程编程语言。
在示例性实施例中,常规键盘450和鼠标455可以耦合到输入/输出控制器435。诸如I/O设备445的其他输出设备可以包括输入设备,例如但不限于打印机、扫描仪、麦克风等。最后,I/O设备10、445可以进一步包括传送输入和输出两者的设备,例如但不限于,网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统、或网络)、射频(RF)或其他收发器、电话接口、网桥、路由器等。I/O设备10、445可以是本领域已知的任何通用密码卡或智能卡。系统400可进一步包括耦合到显示器430的显示器控制器425。在示例性实施方式中,系统400可进一步包括用于耦接至网络465的网络接口。网络465可以是用于经由宽带连接在计算机401与任何外部服务器、客户端等之间通信的基于IP的网络。网络465在计算机401与外部系统30之间传输和接收数据,该数据可以被涉及执行本文所讨论的方法的部分或全部步骤。在示例性实施例中,网络165可以是由服务提供商管理的管理IP网络。网络165可以以无线方式实现,例如,使用诸如WiFi、WiMax等的无线协议和技术。网络465还可以是分组交换网络,诸如局域网、广域网、城域网、互联网网络或其他类似类型的网络环境。网络465可为固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个域网(PAN)、虚拟专用网(VPN)、内联网或其他合适的网络系统,且包含用于接收和发射信号的设备。
如果计算机401是PC、工作站、智能设备等,则存储器410中的软件还可以包括基本输入输出系统(BIOS)422。BIOS是在启动时初始化和测试硬件、启动OS411、并且支持硬件设备之间的数据传输的基本软件例程的集合。BIOS存储在ROM中,使得当计算机401被激活时可以执行BIOS。
当计算机401运行时,处理器405被配置为执行存储在存储器410中的软件412,将数据传送至存储器410和从存储器410传送数据,并且依照软件通常控制计算机401的操作。本文所描述的方法和OS 411(全部或部分,但通常为后者)由处理器405读取,可能在处理器405内缓冲,且接着执行。
当此处描述的系统和方法在软件412中实现时,如图4所示,这些方法可被存储在任何计算机可读介质(诸如存储420)上,以供任何计算机相关系统或方法使用或结合任何计算机相关系统或方法使用。存储器420可包括盘存储器,例如HDD存储器。
图5是用于创建可重用标准化编译容器以对现有内核源代码应用至少一个新应用的方法的流程图。在步骤501中,可以创建能够访问预安装主机系统的不同组件(如编译器、内核源代码、至少一个专用编译工具、至少一个库、至少一个脚本、至少一个测试程序)的编译容器。可以在步骤503中将编译容器安装在主机系统上用于进一步使用。可以在步骤505中针对包含LKM(Linux内核模块)的附加应用容器重新使用编译容器。
图6是用于将包括Linux内核模块(LKM)的新应用容器应用到现有内核源代码中的方法的流程图。在步骤601中,编译容器可被集成到主机系统中。在步骤603中,新应用可以向主机系统发送携带至少一个具有源代码的LKM的容器。在步骤605中,可以编译新应用容器的LKM。利用具有直接针对运行的主机内核编译LKM的能力的编译容器来完成编译。
在以下编号的条目中指定不同实施例:
1.一种用于扩展基于容器的虚拟化系统的内核的内核功能的方法,所述方法包括:
在所述基于容器的虚拟化系统中提供用于编译所述基于容器的虚拟化系统中的内核模块的编译容器,以及用于使用内核模块扩展所述内核的内核功能的应用容器;
由所述应用容器将所述内核模块输入到所述编译容器中;
使用所述编译容器编译所述内核模块;
由所述应用容器从所述编译容器接收所述编译的内核模块;
由所述应用容器将经编译的内核模块加载到所述系统的内核以实现所述内核功能的扩展。
2.根据条目1所述的方法,其中提供所述编译容器包括:在所述基于容器的虚拟化系统处从编译镜像构建所述编译容器,其中所述编译容器是所述编译镜像的可运行实例。
3.根据条目1所述的方法,其中提供所述编译容器包括接收所述编译容器并将所述编译容器集成到所述基于容器的虚拟化系统中。
4.根据条目1所述的方法,所述基于容器的虚拟化系统包括容器管理器,所述方法还包括在所述输入步骤之前通过所述容器管理器启动所述编译和应用容器,所述启动允许所述编译和应用容器之间的通信。
5.根据条目1所述的方法,所述基于容器的虚拟化系统包括容器管理器,所述方法还包括:在所述输入步骤之前,通过所述容器管理器启动所述应用容器,并且通过所述应用容器启动所述编译容器,所述启动允许所述编译容器与所述应用容器之间的通信。
6.根据条目2所述的方法,其中在安装所述基于容器的虚拟化系统时创建或从源数据库下载所述编译镜像。
7.根据条目1所述的方法,其中提供所述应用容器包括:接收所述应用容器并且将所述应用容器集成到所述基于容器的虚拟化系统中。
8.根据条目1的方法,其还包括删除编译容器。
9.根据条目8所述的方法,其还包括从所述编译镜像重建所述编译容器,用于所述基于容器的虚拟化系统的内核的进一步扩展。
10.根据条目1所述的方法,其还包括将所述经编译的内核模块存储在可由所述应用容器访问的存储装置中,在所述内核模块从所述内核卸载的情况下,由所述应用容器将所述存储的经编译的内核模块重新加载到所述内核中。
11.根据条目1所述的方法,其还包括在所述基于容器的虚拟化系统中提供可由所述应用和编译容器访问的盘,其中所述输入包括:由所述应用程序容器将所述内核模块存储在所述盘中,以及由所述编译容器从所述盘读取所述内核模块。
12.根据条目1所述的方法,其中所述编译和应用容器中的每一个是Docker容器。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质(或多个介质)。
计算机可读存储介质可为可保留和存储供指令执行装置使用的指令的有形装置。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式紧凑盘只读存储器(CD-ROM)、数字通用盘(DVD)、记忆棒、软盘、诸如穿孔卡之类的机械编码设备或具有记录在其上的指令的槽中的凸出结构、以及上述各项的任何合适的组合。如本文所使用的,计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过电线传输的电信号。
本文中所描述的计算机可读程序指令可以经由网络(例如,互联网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如Smalltalk、C++等)、以及常规的过程式程序设计语言(诸如“C”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接至用户计算机,或者可连接至外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方式工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现方式的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个块实际上可以基本上同时执行,或者这些块有时可以以相反的顺序执行。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。

Claims (20)

1.一种用于扩展基于容器的虚拟化系统的内核的内核功能的方法,所述方法包括:
在所述基于容器的虚拟化系统中提供用于编译所述基于容器的虚拟化系统中的内核模块的编译容器,以及用于使用内核模块扩展所述内核的内核功能的应用容器;
由所述应用容器将所述内核模块输入到所述编译容器;
使用所述编译容器编译所述内核模块;
由所述应用容器从所述编译容器接收所述编译的内核模块;
由所述应用容器将所述经编译的内核模块加载到所述系统的所述内核以实现所述内核功能的所述扩展。
2.如权利要求1所述的方法,其中提供所述编译容器包括:在所述基于容器的虚拟化系统处从编译镜像构建所述编译容器,其中所述编译容器是所述编译镜像的可运行实例。
3.如权利要求1所述的方法,其中提供所述编译容器包括接收所述编译容器并将所述编译容器集成到所述基于容器的虚拟化系统中。
4.如前述权利要求中任一项所述的方法,所述基于容器的虚拟化系统包括容器管理器,所述方法进一步包括在所述输入步骤之前由所述容器管理器启动所述编译和应用容器,所述启动实现所述编译和应用容器之间的通信。
5.如前述权利要求1-3中任一项所述的方法,所述基于容器的虚拟化系统包括容器管理器,所述方法进一步包括:在所述输入步骤之前,由所述容器管理器启动所述应用容器,并且由所述应用容器启动所述编译容器,所述启动实现所述编译容器与应用容器之间的通信。
6.如前述权利要求2-3中任一项所述的方法,其中所述编译镜像是在安装所述基于容器的虚拟化系统时创建的,或者是从源数据库下载的。
7.如前述权利要求1-3中任一项所述的方法,其中提供所述应用容器包括:接收所述应用容器并且将所述应用容器集成到所述基于容器的虚拟化系统中。
8.如前述权利要求1-3中任一项所述的方法,进一步包括删除所述编译容器。
9.如权利要求8所述的方法,进一步包括从所述编译镜像重建所述编译容器,用于所述基于容器的虚拟化系统的内核的进一步的功能扩展。
10.如前述权利要求1-3中任一项所述的方法,进一步包括将所述经编译的内核模块存储在所述应用容器可访问的存储装置中,在所述内核模块从所述内核卸载的情况下,由所述应用容器将所述存储的经编译的内核模块重新加载到所述内核中。
11.如前述权利要求1-3中任一项所述的方法,进一步包括在所述基于容器的虚拟化系统中提供可由所述应用和编译容器访问的盘,其中所述输入包括:由所述应用容器将所述内核模块存储在所述盘中,以及由所述编译容器从所述盘读取所述内核模块。
12.如前述权利要求1-3中任一项所述的方法,其中所述编译和应用容器中的每一个是Docker容器。
13.一种计算机可读存储介质,所述计算机可读存储介质具有随其包含的计算机可读程序代码,所述计算机可读程序代码被配置为扩展基于容器的虚拟化系统的内核的内核功能,所述基于容器的虚拟化系统包括用于针对基于容器的虚拟化系统的内核编译内核模块的编译容器,以及用于使用内核模块扩展所述内核的内核功能的应用容器;所述计算机可读程序代码被配置为:将所述内核模块输入到所述编译容器;从所述编译容器接收所述经编译的内核模块;将所述经编译的内核模块加载到所述系统的所述内核以实现所述内核功能的所述扩展。
14.如权利要求13所述的计算机可读存储介质,其经配置以从编译镜像建立所述编译容器,其中所述编译容器是所述编译镜像的可运行实例。
15.如权利要求13所述的计算机可读存储介质,被配置为接收所述编译容器并将所述编译容器集成到所述基于容器的虚拟化系统中。
16.如权利要求14所述的计算机可读存储介质,其中所述编译镜像是在安装所述基于容器的虚拟化系统时创建的,或者是从源数据库下载的。
17.如前述权利要求13-16中任一项所述的计算机可读存储介质,进一步被配置为删除所述编译容器。
18.如权利要求14所述的计算机可读存储介质,进一步被配置为从所述编译镜像重建所述编译容器,用于所述基于容器的虚拟化系统的内核的进一步的功能扩展。
19.如前述权利要求13-16、18中任一项所述的计算机可读存储介质,其中,所述编译和应用容器中的每一个是Docker容器。
20.一种用于扩展基于容器的虚拟化系统的内核的内核功能的计算机系统,包括:编译容器,用于针对所述基于容器的虚拟化系统的内核编译内核模块;以及应用容器,用于使用内核模块扩展所述内核的内核功能;所述计算机系统被配置为:
控制所述应用容器以将所述内核模块输入到所述编译容器;
控制所述编译容器以编译所述内核模块;
控制所述应用容器以从所述编译容器接收所述经编译的内核模块;以及将所述经编译的内核模块加载到所述基于容器的虚拟化系统的所述内核。
CN202080049806.3A 2019-07-16 2020-07-07 用于基于容器的虚拟化系统的方法 Active CN114072765B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19186426 2019-07-16
EP19186426.3 2019-07-16
PCT/IB2020/056362 WO2021009612A1 (en) 2019-07-16 2020-07-07 Method for a container-based virtualization system

Publications (2)

Publication Number Publication Date
CN114072765A CN114072765A (zh) 2022-02-18
CN114072765B true CN114072765B (zh) 2023-01-10

Family

ID=67303414

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080049806.3A Active CN114072765B (zh) 2019-07-16 2020-07-07 用于基于容器的虚拟化系统的方法

Country Status (6)

Country Link
US (1) US11385923B2 (zh)
JP (1) JP7410268B2 (zh)
CN (1) CN114072765B (zh)
DE (1) DE112020002785T5 (zh)
GB (2) GB2599335B (zh)
WO (1) WO2021009612A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385923B2 (en) 2019-07-16 2022-07-12 International Business Machines Corporation Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container
IT202100021161A1 (it) 2021-08-04 2023-02-04 Marco Simoncini Sistema di containerizzazione di workstation aziendali con interfacce utente remote a basso costo
CN115113916B (zh) * 2022-06-22 2024-10-11 广州安凯微电子股份有限公司 一种Linux内核解耦方法、装置及可读存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572235A (zh) * 2014-12-31 2015-04-29 北京奇虎科技有限公司 一种可加载内核模块的编译方法和装置
CN106095523A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现安卓编译隔离的方法和系统
CN107391141A (zh) * 2017-07-26 2017-11-24 浪潮软件集团有限公司 一种支持容器运行的全内存操作系统
CN107423108A (zh) * 2017-04-25 2017-12-01 华中科技大学 一种基于安卓设备的arm容器运行环境构建方法
CN107943485A (zh) * 2017-12-11 2018-04-20 北京奇虎科技有限公司 一种补丁编译平台及补丁编译方法
CN109240662A (zh) * 2018-08-09 2019-01-18 赛尔网络有限公司 一种基于云平台的软件开发方法、云平台、设备及介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5911068A (en) 1995-03-30 1999-06-08 Microsoft Corporation Container independent control architecture
US8185794B2 (en) * 2006-01-05 2012-05-22 Telefonaktiebolaget L M Ericsson (Publ) Media container file management
US8255922B1 (en) * 2006-01-09 2012-08-28 Oracle America, Inc. Mechanism for enabling multiple processes to share physical memory
JP2008269094A (ja) * 2007-04-17 2008-11-06 Toyota Motor Corp 情報処理装置、情報処理装置の最適化方法、プログラム
US8533707B2 (en) 2008-03-04 2013-09-10 Lsi Corporation Linux matrix compilation system and method
US9690278B1 (en) * 2014-04-10 2017-06-27 Altera Corporation Method and apparatus for high-level programs with general control flow
US9547738B1 (en) * 2014-05-08 2017-01-17 Altera Corporation Invariant code optimization in high-level FPGA synthesis
US9678787B2 (en) 2014-05-23 2017-06-13 Microsoft Technology Licensing, Llc Framework for authoring data loaders and data savers
US9286085B2 (en) * 2014-06-27 2016-03-15 International Business Machines Corporation Correlating class loader objects across execution environments
US10289398B2 (en) 2015-09-26 2019-05-14 Cisco Technology, Inc. In-service upgrade of kernel loadable modules
CN106569842A (zh) 2015-10-09 2017-04-19 中兴通讯股份有限公司 操作系统的启动方法及装置
CN106293756A (zh) 2016-08-16 2017-01-04 汉柏科技有限公司 一种用于快速更换的自定义Linux内核系统
US10949326B2 (en) * 2016-10-05 2021-03-16 B.G. Negev Technologies And Applications Ltd. Method and system for testing and checking the correctness of a computer program during runtime
CN107977572B (zh) * 2016-10-25 2022-11-18 中兴通讯股份有限公司 一种应用程序运行方法和装置、智能终端
US20180285139A1 (en) * 2017-04-02 2018-10-04 vEyE Security Ltd. Hypervisor-based 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
US10530711B2 (en) * 2017-11-09 2020-01-07 Nicira, Inc. Extensible virtual switch datapath
CN108052327A (zh) 2017-12-11 2018-05-18 北京奇虎科技有限公司 一种内核模块编译、加载方法及装置
US20200065124A1 (en) * 2018-08-22 2020-02-27 International Business Machines Corporation Shortening just-in-time code warm up time of docker containers
US10838750B2 (en) * 2019-01-10 2020-11-17 Red Hat, Inc. Combining ahead-of-time compilation and just-in-time compilation to improve application deployment
US11150926B2 (en) * 2019-02-22 2021-10-19 International Business Machines Corporation Native code generation for cloud services
US10949216B2 (en) * 2019-06-17 2021-03-16 Red Hat, Inc. Support for third-party kernel modules on host operating systems
US11385923B2 (en) 2019-07-16 2022-07-12 International Business Machines Corporation Container-based virtualization system extending kernel functionality using kernel modules compiled by a compiling container and loaded by an application container

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572235A (zh) * 2014-12-31 2015-04-29 北京奇虎科技有限公司 一种可加载内核模块的编译方法和装置
CN106095523A (zh) * 2016-06-03 2016-11-09 北京奇虎科技有限公司 一种实现安卓编译隔离的方法和系统
CN107423108A (zh) * 2017-04-25 2017-12-01 华中科技大学 一种基于安卓设备的arm容器运行环境构建方法
CN107391141A (zh) * 2017-07-26 2017-11-24 浪潮软件集团有限公司 一种支持容器运行的全内存操作系统
CN107943485A (zh) * 2017-12-11 2018-04-20 北京奇虎科技有限公司 一种补丁编译平台及补丁编译方法
CN109240662A (zh) * 2018-08-09 2019-01-18 赛尔网络有限公司 一种基于云平台的软件开发方法、云平台、设备及介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A Study, Analysis and deep dive on Cloud PAAS security in terms of Docker Container security;Manu A R等;《2016 International Conference on Circuit, Power and Computing Technologies》;20160804;第1-13页 *
使用容器编译Linux内核并启动运行;wanbo432503;《https://blog.csdn.net/wanbo432503/article/details/88819345》;20190326;第1-3页 *

Also Published As

Publication number Publication date
CN114072765A (zh) 2022-02-18
WO2021009612A1 (en) 2021-01-21
JP7410268B2 (ja) 2024-01-09
JP2022540810A (ja) 2022-09-20
GB2599335A (en) 2022-03-30
DE112020002785T5 (de) 2022-02-24
US11385923B2 (en) 2022-07-12
GB202200996D0 (en) 2022-03-09
GB2599335B (en) 2023-11-08
US20210019169A1 (en) 2021-01-21

Similar Documents

Publication Publication Date Title
US11474829B2 (en) Customizing program logic for booting a system
CN114072765B (zh) 用于基于容器的虚拟化系统的方法
US20190050235A1 (en) Kernel-integrated instance-specific operational resources with virtualization
JP5362974B2 (ja) ソフトウェア製品の出荷用仮想化ソフトウェアの使用方法
CN108304209B (zh) 固件升级方法及固件升级系统
US20150242237A1 (en) Release lifecycle management system for multi-node application
US20140033189A1 (en) Providing virtual appliance system firmware images
CN105490860A (zh) 部署应用程序运行环境的方法、装置及系统
US10747523B2 (en) Methods of updating firmware components, computer systems and memory apparatus
CN110647332A (zh) 基于容器云的软件部署方法和装置
CN114651233A (zh) 即时容器
CN113934426A (zh) 软件包处理方法、装置、系统、设备及介质
US20220413821A1 (en) Deploying a machine learning model
TW201721412A (zh) 選擇及載入韌體卷區之技術
US20200257524A1 (en) Generating interaction libraries
CN112368678A (zh) 用于应用程序的虚拟机容器
CN115291946A (zh) 鸿蒙系统移植方法、装置、电子设备及可读介质
CN110083366B (zh) 应用运行环境的生成方法、装置、计算设备及存储介质
CN118276884A (zh) 容器封装方法、装置、设备及存储介质
CN114490103A (zh) 一种操作系统接口调用方法、装置以及电子设备
US20220197633A1 (en) Software defined build infrastructure for hybrid, virtualized and native build environments
US20240345823A1 (en) Unified virtualized and containerized ci/cd chain
CN116339761B (zh) 一种自动化构建镜像模板的方法、系统、存储介质、设备
US20230367573A1 (en) Information processing apparatus, settings applying method, and medium
US20240168732A1 (en) Method for generating driver package, method for deploying driver, electronic device, and computer readable storage medium

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