CN116560804A - 一种使用多个容器镜像共同运行容器的方法和装置 - Google Patents
一种使用多个容器镜像共同运行容器的方法和装置 Download PDFInfo
- Publication number
- CN116560804A CN116560804A CN202310833497.4A CN202310833497A CN116560804A CN 116560804 A CN116560804 A CN 116560804A CN 202310833497 A CN202310833497 A CN 202310833497A CN 116560804 A CN116560804 A CN 116560804A
- Authority
- CN
- China
- Prior art keywords
- container
- image
- extended
- file
- mirror
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 76
- 230000008569 process Effects 0.000 claims abstract description 34
- 230000015654 memory Effects 0.000 claims description 13
- 238000004891 communication Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种使用多个容器镜像共同运行容器的方法和装置,其中,该方法包括:在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像;将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统;所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程。本申请通过将用户指定的扩展容器镜像存储在固有容器镜像的任一镜像层级内,在容器启动过程中扩充内部文件,提高容器启动过程中内部文件的灵活度。
Description
技术领域
本申请涉及计算机软件技术领域,尤其是涉及一种使用多个容器镜像共同运行容器的方法和装置。
背景技术
现阶段,为了适应不断增大的业务规模,通常采用容器集群的方式向用户提供服务。所谓容器集群,就是采用多个容器实现一个服务请求。每个容器均对应有容器镜像,容器镜像是包含应用程序以及其相关依赖的一个基础文件系统,在容器启动的过程中,它以只读的方式被用于创建容器的运行环境。
在构建容器镜像时,将容器需要运行的应用软件等文件封装在容器镜像中,待启动容器时,容器启动过程中的内部文件与容器镜像中封装的文件相一致。
但是,在容器启动的过程中,容器内部文件被容器镜像封装的文件所限制,无法在容器启动过程中扩充其他所需文件,不能灵活调整容器启动过程中所运行的文件。
发明内容
有鉴于此,本申请实施例的目的在于提供一种使用多个容器镜像共同运行容器的方法和装置,能够通过将用户指定的扩展容器镜像存储在固有容器镜像的任一镜像层级内,在容器启动过程中扩充内部文件,提高容器启动过程中内部文件的灵活度。
第一方面,本申请实施例提供了一种使用多个容器镜像共同运行容器的方法,所述方法包括:
在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像;
将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统;
所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程。
在一种可能的实施方式中,所述扩展容器镜像包含多个镜像层级的已解包文件,获取用户当前为所述目标容器指定的扩展容器镜像包括:
基于用户当前触发的指令,确定所述扩展容器镜像;
查询容器镜像管理器本地的镜像数据目录,获取所述扩展容器镜像的哈希值;
基于所述扩展容器镜像的哈希值,获取所述扩展容器镜像的配置信息;
基于所述扩展容器镜像的配置信息,获取所述扩展容器镜像包含的每个镜像层级的哈希值;
基于所述扩展容器镜像包含的每个镜像层级的哈希值,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置,获取所述扩展容器镜像包含的每个镜像层级的已解包文件。
在一种可能的实施方式中,所述将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统,包括:
在所述目标容器的文件路径中创建扩展文件目录;其中,所述扩展文件目录存储在所述固有容器镜像的文件系统的任一镜像层级内;
将所述扩展容器镜像包含的每个镜像层级的已解包文件复制到所述扩展文件目录中;
联合挂载所述扩展文件目录中的扩展容器镜像与所述固有容器镜像,生成所述目标容器的新文件系统。
第二方面,本申请实施例提供了一种使用多个容器镜像共同运行容器的装置,所述装置包括:
获取模块,用于在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像;
生成模块,用于将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统;
挂载模块,用于所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程。
在一种可能的实施方式中,所述扩展容器镜像包含多个镜像层级的已解包文件,所述获取模块,在获取用户当前为所述目标容器指定的扩展容器镜像时,包括:
基于用户当前触发的指令,确定所述扩展容器镜像;
查询容器镜像管理器本地的镜像数据目录,获取所述扩展容器镜像的哈希值;
基于所述扩展容器镜像的哈希值,获取所述扩展容器镜像的配置信息;
基于所述扩展容器镜像的配置信息,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的哈希值;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的哈希值,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置,获取所述扩展容器镜像包含的每个镜像层级的已解包文件。
在一种可能的实施方式中,所述生成模块,在将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统时,包括:
在所述目标容器的文件路径中创建扩展文件目录;其中,所述扩展文件目录存储在所述固有容器镜像的文件系统的任一镜像层级内;
将所述扩展容器镜像包含的每个镜像层级的已解包文件复制到所述扩展文件目录中;
联合挂载所述扩展文件目录中的扩展容器镜像与所述固有容器镜像,生成所述目标容器的新文件系统。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行第一方面任一项所述的使用多个容器镜像共同运行容器的方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行第一方面任一项所述的使用多个容器镜像共同运行容器的方法的步骤。
本申请实施例提供的一种使用多个容器镜像共同运行容器的方法和装置,能够通过将用户指定的扩展容器镜像存储在固有容器镜像的任一镜像层级内,在容器启动过程中扩充内部文件,提高容器启动过程中内部文件的灵活度。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种使用多个容器镜像共同运行容器的方法的流程图;
图2示出了本申请实施例提供的另一种使用多个容器镜像共同运行容器的方法的流程图;
图3示出了本申请实施例提供的另一种使用多个容器镜像共同运行容器的方法的流程图;
图4示出了本申请实施例提供的一种使用多个容器镜像共同运行容器的装置的结构示意图;
图5示出了本申请实施例提供的一种电子设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
现阶段,为了适应不断增大的业务规模,通常采用容器集群的方式向用户提供服务。所谓容器集群,就是采用多个容器实现一个服务请求。每个容器均对应有容器镜像,容器镜像是包含应用程序以及其相关依赖的一个基础文件系统,在容器启动的过程中,它以只读的方式被用于创建容器的运行环境。
在构建容器镜像时,将容器需要运行的应用软件等文件封装在容器镜像中,待启动容器时,容器启动过程中的内部文件与容器镜像中封装的文件相一致。但是,在容器启动的过程中,容器内部文件被容器镜像封装的文件所限制,无法在容器启动过程中扩充其他所需文件,不能灵活调整容器启动过程中所运行的文件。
基于上述问题,本申请实施例提供了一种使用多个容器镜像共同运行容器的方法和装置,能够通过将用户指定的扩展容器镜像存储在固有容器镜像的任一镜像层级内,在容器启动过程中扩充内部文件,提高容器启动过程中内部文件的灵活度。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本申请针对上述问题所提出的解决方案,都应该是发明人在本申请过程中对本申请做出的贡献。
下面将结合本申请中附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种使用多个容器镜像共同运行容器的方法进行详细介绍。
参见图1所示,图1为本申请实施例提供的一种使用多个容器镜像共同运行容器的方法的流程图,该方法包括以下步骤:
S101、在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像。
本申请实施例中,容器镜像(container image)为容器镜像管理软件(Docker)使用的镜像,容器镜像包含了一个打包的应用,以及它的依赖关系,还有它在启动时运行的进程信息,每个容器镜像包含多个镜像层级的文件。每个容器均对应有专属的容器镜像,本申请将容器专属的容器镜像称为容器的固有容器镜像,容器与固有容器镜像一一对应。在容器启动过程中,容器的固有容器镜像的文件系统是固定不变的,不能被更改,即不能扩展文件系统包含的文件。
为了在容器的启动过程中扩展容器运行的文件,本申请使用多个容器镜像共同运行拟扩展文件的容器,本申请将拟扩展文件的容器称为目标容器,目标容器共同运行的多个容器镜像包括固有容器镜像和扩展容器镜像,其中,扩展容器镜像可以是一个也可以是多个。扩展容器镜像与目标容器之间无对应关系,同一扩展容器镜像可以被不同的目标容器运行,同一目标容器在每次启动过程中可以运行不同的扩展容器镜像。在目标容器的某一次启动过程中,用户为目标容器指定该次启动过程的扩展容器镜像。
S102、将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统。
本申请实施例中,固有容器镜像的文件系统包含多个镜像层级的文件,在不为目标容器扩展文件时,目标容器在启动过程中只运行固有容器镜像的文件系统内包含的多个镜像层级的文件。在获取用户指定的扩展容器镜像后,需要对扩展容器镜像包含的文件进行存储,扩展容器镜像所包含文件为扩展容器镜像的多个镜像层级的文件,且扩展容器镜像的多个镜像层级的文件为已解包文件,因此,扩展容器镜像的多个镜像层级的文件均可以被复制,将扩展容器镜像的多个镜像层级的文件存储在固有容器镜像的文件系统的任意一个镜像层级内,将扩展容器镜像和固有容器镜像创建在同一个文件系统中,这样就得到了目标容器的新文件系统,新文件系统包括固有容器镜像的多个镜像层级的文件,以及扩展容器镜像的多个镜像层级的文件。
S103、所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程。
本申请实施例中,容器镜像在启动过程中挂载新文件系统,运行新文件系统内各个镜像层级的文件,目标容器的启动过程完成。具体的,在以联合挂载方式创建的新文件系统内查找预设的启动程序,运行启动程序得到目标容器,完成目标容器启动。目标容器在运行新文件系统时,将新文件系统内的固有容器镜像的多个镜像层级的文件以及扩展容器镜像的多个镜像层级的文件作为一个整体来运行。目标容器运行结束后删除扩展容器镜像,目标容器的文件系统恢复至初始状态,即目标容器的文件系统即为固有容器镜像的文件系统。这样,再次运行目标容器时,可以选择不扩展文件,即目标容器运行固有容器镜像的文件系统的多个镜像层级的文件;也可以选择扩展文件,即目标容器运行由固有容器镜像和用户再次指定的扩展容器镜像构建的又一个新文件系统。
本申请实施例提供的一种使用多个容器镜像共同运行容器的方法,能够通过将用户指定的扩展容器镜像存储在固有容器镜像的任一镜像层级内,在容器启动过程中扩充内部文件,提高容器启动过程中内部文件的灵活度。
进一步的,参见图2所示,图2为本申请实施例提供的另一种使用多个容器镜像共同运行容器的方法的流程图,本申请实施例提供的使用多个容器镜像共同运行容器的方法中,所述扩展容器镜像包含多个镜像层级的已解包文件,步骤S101获取用户当前为所述目标容器指定的扩展容器镜像,包括:
S1011、基于用户当前触发的指令,确定所述扩展容器镜像。
本申请实施例中,扩展容器镜像包含多个镜像层级的已解包文件,已解包是容器镜像在本地计算机的存储形式,容器镜像的每个镜像层级可以包含多个文件,若容器镜像多个镜像层级的文件为已解包文件,则可以复制容器镜像的每个镜像层级的文件;若容器镜像多个镜像层级的文件没有解包,则容器镜像的每个镜像层级就是一个整体文件,需要对容器镜像的每个镜像层级的文件进行解包后,才能对每个镜像层级的文件进行复制。
在启动目标容器时,用户通过触发指令的方式,实时为目标容器选择扩展容器镜像,以达到扩展目标容器启动程序的目的。用户可以通过如下任一方式触发指令:输入扩展容器镜像标识、在容器镜像列表中勾选扩展容器标识。
S1012、查询容器镜像管理器本地的镜像数据目录,获取所述扩展容器镜像的哈希值。
该步骤中,本地主机的容器镜像管理软件Docker对镜像数据目录进行规定,镜像数据目录包含多个容器镜像的哈希值,从镜像数据目录中查询用户指定的扩展容器镜像的哈希值,其中,哈希值为Hash码。不同的容器镜像对应不同的哈希值,通过哈希值可以对不同的容器镜像进行区分。
在一种可能的实施方式中,镜像数据目录为/var/lib/docker目录,从镜像数据目录的repositories.json文件内容中,查找用户指定的扩展容器镜像的哈希值。
S1013、基于所述扩展容器镜像的哈希值,获取所述扩展容器镜像的配置信息。
该步骤中,每个容器镜像均对应有配置信息,通过哈希值查找用户指定的扩展容器镜像的配置信息。其中,容器镜像的配置信息至少包括容器镜像各个镜像层级的哈希值。
S1014、基于所述扩展容器镜像的配置信息,获取所述扩展容器镜像包含的每个镜像层级的哈希值。
该步骤中,从扩展容器镜像的配置信息中,查找扩展容器镜像每个镜像层级的哈希值。对于容器镜像的每个镜像层级来说,Docker根据镜像层级的相关信息生成一个哈希值,镜像层级的哈希值全球唯一,通过镜像层级的哈希值可以对镜像层级进行区分。
S1015、基于所述扩展容器镜像包含的每个镜像层级的哈希值,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置。
该步骤中,Docker存储有镜像层级的哈希值与镜像层级包含的已解包文件的存储位置的对应关系,通过镜像层级的哈希值,查找扩展容器镜像每个镜像层级的已解包文件的存储位置。
S1016、基于所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置,获取所述扩展容器镜像包含的每个镜像层级的已解包文件。
该步骤中,针对扩展容器镜像包含的每个镜像层级,根据该镜像层级已解包文件的存储位置,获取该镜像层级已解包文件。
进一步的,参见图3所示,图3为本申请实施例提供的另一种使用多个容器镜像共同运行容器的方法的流程图,本申请实施例提供的使用多个容器镜像共同运行容器的方法中,步骤S102将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统,包括:
S1021、在所述目标容器的文件路径中创建扩展文件目录;其中,所述扩展文件目录存储在所述固有容器镜像的文件系统的任一镜像层级内。
本申请实施例中,将创建的扩展文件目录存储在固有容器镜像的文件系统的多层镜像层级中的任意一个镜像层级内,无论扩展文件目录存储在固有容器镜像的哪一个镜像层级内,最终目标容器的运行结果是相同的。
S1022、将所述扩展容器镜像包含的每个镜像层级的已解包文件复制到所述扩展文件目录中。
本申请实施例中,创建的扩展文件目录,用于存储扩展容器镜像包含的文件,将扩展容器镜像的多个镜像层级的已解包文件复制在扩展文件目录中。
S1023、联合挂载所述扩展文件目录中的扩展容器镜像与所述固有容器镜像,生成所述目标容器的新文件系统。
本申请实施例中,使用联合挂载方式,将目标容器的固有容器镜像文件与扩展文件目录内文件创建在同一个文件系统中,生成目标容器的新文件系统。
在一种可能的实施方式中,镜像数据目录为/var/lib/docker目录,在/var/lib/docker/overlay2目录中的目标容器的文件路径中创建扩展文件目录,扩展文件目录名为init2,复制扩展容器镜像所包含各层文件到扩展文件目录init2中,将目标容器的固有容器镜像文件与扩展文件目录init2中的文件使用操作系统提供的联合挂载mount命令创建在同一个文件系统中,得到目标容器的新文件系统。
基于同一发明构思,本申请实施例中还提供了与使用多个容器镜像共同运行容器的方法对应的使用多个容器镜像共同运行容器的装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述使用多个容器镜像共同运行容器的方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参见图4所示,图4为本申请实施例提供的一种使用多个容器镜像共同运行容器的装置的结构示意图,该装置包括:
获取模块401,用于在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像;
生成模块402,用于将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统;
挂载模块403,用于所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程。
在一种可能的实施方式中,所述扩展容器镜像包含多个镜像层级的已解包文件,所述获取模块401,在获取用户当前为所述目标容器指定的扩展容器镜像时,包括:
基于用户当前触发的指令,确定所述扩展容器镜像;
查询容器镜像管理器本地的镜像数据目录,获取所述扩展容器镜像的哈希值;
基于所述扩展容器镜像的哈希值,获取所述扩展容器镜像的配置信息;
基于所述扩展容器镜像的配置信息,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的哈希值;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的哈希值,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置,获取所述扩展容器镜像包含的每个镜像层级的已解包文件。
在一种可能的实施方式中,所述生成模块402,在将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统时,包括:
在所述目标容器的文件路径中创建扩展文件目录;其中,所述扩展文件目录存储在所述固有容器镜像的文件系统的任一镜像层级内;
将所述扩展容器镜像包含的每个镜像层级的已解包文件复制到所述扩展文件目录中;
联合挂载所述扩展文件目录中的扩展容器镜像与所述固有容器镜像,生成所述目标容器的新文件系统。
本申请实施例提供的一种使用多个容器镜像共同运行容器的装置,能够通过将用户指定的扩展容器镜像存储在固有容器镜像的任一镜像层级内,在容器启动过程中扩充内部文件,提高容器启动过程中内部文件的灵活度。
参见图5所示,图5为本申请实施例提供的一种电子设备的示意图,该电子设备500包括:处理器501、存储器502和总线503,所述存储器502存储有所述处理器501可执行的机器可读指令,当电子设备运行时,所述处理器501与所述存储器502之间通过总线503通信,所述处理器501执行所述机器可读指令,以执行如上述使用多个容器镜像共同运行容器的方法的步骤。
具体地,上述存储器502和处理器501能够为通用的存储器和处理器,这里不做具体限定,当处理器501运行存储器502存储的计算机程序时,能够执行上述使用多个容器镜像共同运行容器的方法。
对应于上述使用多个容器镜像共同运行容器的方法,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述使用多个容器镜像共同运行容器的方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种使用多个容器镜像共同运行容器的方法,其特征在于,所述方法包括:
在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像;
将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统;
所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程;
所述将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统,包括:
在所述目标容器的文件路径中创建扩展文件目录;其中,所述扩展文件目录存储在所述固有容器镜像的文件系统的任一镜像层级内;
将所述扩展容器镜像包含的每个镜像层级的已解包文件复制到所述扩展文件目录中;
联合挂载所述扩展文件目录中的扩展容器镜像与所述固有容器镜像,生成所述目标容器的新文件系统。
2.根据权利要求1所述的使用多个容器镜像共同运行容器的方法,其特征在于,所述扩展容器镜像包含多个镜像层级的已解包文件,获取用户当前为所述目标容器指定的扩展容器镜像包括:
基于用户当前触发的指令,确定所述扩展容器镜像;
查询容器镜像管理器本地的镜像数据目录,获取所述扩展容器镜像的哈希值;
基于所述扩展容器镜像的哈希值,获取所述扩展容器镜像的配置信息;
基于所述扩展容器镜像的配置信息,获取所述扩展容器镜像包含的每个镜像层级的哈希值;
基于所述扩展容器镜像包含的每个镜像层级的哈希值,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置,获取所述扩展容器镜像包含的每个镜像层级的已解包文件。
3.一种使用多个容器镜像共同运行容器的装置,其特征在于,所述装置包括:
获取模块,用于在启动目标容器时,获取所述目标容器的固有容器镜像以及用户当前为所述目标容器指定的扩展容器镜像;
生成模块,用于将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统;
挂载模块,用于所述目标容器挂载所述新文件系统,完成所述目标容器的启动过程;
所述生成模块,在将所述扩展容器镜像所包含文件存储在所述固有容器镜像的文件系统的任一镜像层级内,生成所述目标容器的新文件系统时,包括:
在所述目标容器的文件路径中创建扩展文件目录;其中,所述扩展文件目录存储在所述固有容器镜像的文件系统的任一镜像层级内;
将所述扩展容器镜像包含的每个镜像层级的已解包文件复制到所述扩展文件目录中;
联合挂载所述扩展文件目录中的扩展容器镜像与所述固有容器镜像,生成所述目标容器的新文件系统。
4.根据权利要求3所述的使用多个容器镜像共同运行容器的装置,其特征在于,所述扩展容器镜像包含多个镜像层级的已解包文件,所述获取模块,在获取用户当前为所述目标容器指定的扩展容器镜像时,包括:
基于用户当前触发的指令,确定所述扩展容器镜像;
查询容器镜像管理器本地的镜像数据目录,获取所述扩展容器镜像的哈希值;
基于所述扩展容器镜像的哈希值,获取所述扩展容器镜像的配置信息;
基于所述扩展容器镜像的配置信息,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的哈希值;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的哈希值,获取所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置;
基于所述扩展容器镜像包含的每个镜像层级的已解包文件的存储位置,获取所述扩展容器镜像包含的每个镜像层级的已解包文件。
5.一种电子设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至2任一项所述的使用多个容器镜像共同运行容器的方法的步骤。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至2任一项所述的使用多个容器镜像共同运行容器的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310833497.4A CN116560804B (zh) | 2023-07-10 | 2023-07-10 | 一种使用多个容器镜像共同运行容器的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310833497.4A CN116560804B (zh) | 2023-07-10 | 2023-07-10 | 一种使用多个容器镜像共同运行容器的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116560804A true CN116560804A (zh) | 2023-08-08 |
CN116560804B CN116560804B (zh) | 2023-09-05 |
Family
ID=87491909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310833497.4A Active CN116560804B (zh) | 2023-07-10 | 2023-07-10 | 一种使用多个容器镜像共同运行容器的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116560804B (zh) |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040024979A1 (en) * | 2002-08-02 | 2004-02-05 | International Business Machines Corporation | Flexible system and method for mirroring data |
CN104899068A (zh) * | 2015-06-30 | 2015-09-09 | 北京奇虎科技有限公司 | 使用容器进行多进程启动的方法及装置 |
CN106446275A (zh) * | 2016-10-21 | 2017-02-22 | 国云科技股份有限公司 | 一种支持文件系统扩容的容器实现方法 |
US20170177877A1 (en) * | 2015-12-18 | 2017-06-22 | Amazon Technologies, Inc. | Software container registry inspection |
US20170300311A1 (en) * | 2016-04-15 | 2017-10-19 | Microsoft Technology Licensing, Llc | Dynamic Image Generation |
CN107329792A (zh) * | 2017-07-04 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种Docker容器启动方法及装置 |
CN108958927A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 容器应用的部署方法、装置、计算机设备和存储介质 |
CN111273965A (zh) * | 2020-02-17 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 一种容器应用启动方法、系统、装置及电子设备 |
US20200319907A1 (en) * | 2019-04-08 | 2020-10-08 | Sap Se | Cloud resource credential provisioning for services running in virtual machines and containers |
CN112685134A (zh) * | 2020-12-31 | 2021-04-20 | 中科星图股份有限公司 | 一种在容器环境中基于镜像装载的镜像构建及装载方法 |
US20220075760A1 (en) * | 2020-09-10 | 2022-03-10 | Vmware, Inc. | System to support native storage of a container image on a host operating system for a container running in a virtual machine |
CN114489927A (zh) * | 2021-12-13 | 2022-05-13 | 航天信息股份有限公司 | 一种解耦依赖文件的容器部署方法及系统 |
US20220197689A1 (en) * | 2019-05-23 | 2022-06-23 | Microsoft Technology Licensing, Llc | Container instantiation with union file system layer mounts |
CN115357336A (zh) * | 2022-08-04 | 2022-11-18 | 招商银行股份有限公司 | 容器组的在线扩容方法、装置、终端设备与介质 |
-
2023
- 2023-07-10 CN CN202310833497.4A patent/CN116560804B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040024979A1 (en) * | 2002-08-02 | 2004-02-05 | International Business Machines Corporation | Flexible system and method for mirroring data |
CN104899068A (zh) * | 2015-06-30 | 2015-09-09 | 北京奇虎科技有限公司 | 使用容器进行多进程启动的方法及装置 |
US20170177877A1 (en) * | 2015-12-18 | 2017-06-22 | Amazon Technologies, Inc. | Software container registry inspection |
US20170300311A1 (en) * | 2016-04-15 | 2017-10-19 | Microsoft Technology Licensing, Llc | Dynamic Image Generation |
CN106446275A (zh) * | 2016-10-21 | 2017-02-22 | 国云科技股份有限公司 | 一种支持文件系统扩容的容器实现方法 |
CN107329792A (zh) * | 2017-07-04 | 2017-11-07 | 北京奇艺世纪科技有限公司 | 一种Docker容器启动方法及装置 |
CN108958927A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 容器应用的部署方法、装置、计算机设备和存储介质 |
US20200319907A1 (en) * | 2019-04-08 | 2020-10-08 | Sap Se | Cloud resource credential provisioning for services running in virtual machines and containers |
US20220197689A1 (en) * | 2019-05-23 | 2022-06-23 | Microsoft Technology Licensing, Llc | Container instantiation with union file system layer mounts |
CN111273965A (zh) * | 2020-02-17 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 一种容器应用启动方法、系统、装置及电子设备 |
US20220075760A1 (en) * | 2020-09-10 | 2022-03-10 | Vmware, Inc. | System to support native storage of a container image on a host operating system for a container running in a virtual machine |
CN112685134A (zh) * | 2020-12-31 | 2021-04-20 | 中科星图股份有限公司 | 一种在容器环境中基于镜像装载的镜像构建及装载方法 |
CN114489927A (zh) * | 2021-12-13 | 2022-05-13 | 航天信息股份有限公司 | 一种解耦依赖文件的容器部署方法及系统 |
CN115357336A (zh) * | 2022-08-04 | 2022-11-18 | 招商银行股份有限公司 | 容器组的在线扩容方法、装置、终端设备与介质 |
Non-Patent Citations (3)
Title |
---|
FENG YAO 等: "Performance exploration for high performance simulation in lightweight-virtualization-based cloud", 《2017 10TH INTERNATIONAL SYMPOSIUM ON COMPUTATIONAL INTELLIGENCE AND DESIGN》 * |
RUFFIN WHITE 等: "ROS and Docker", 《RESEARCHGATE》 * |
陆志刚 等: "基于分片复用的多版本容器镜像加载方法", 《软件学报》 * |
Also Published As
Publication number | Publication date |
---|---|
CN116560804B (zh) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102508845B (zh) | 对概念分层结构进行导航和搜索的界面 | |
CN110825392B (zh) | 操作系统的定制方法、批量部署方法以及批量部署系统 | |
CN109739815B (zh) | 文件处理方法、系统、装置、设备及存储介质 | |
JP5886447B2 (ja) | ロケーション非依存のファイル | |
JP2005505034A (ja) | アプリケーション展開のためのスマートディレクトリに関する方法及び装置 | |
US11553035B2 (en) | Cross-platform module for loading across a plurality of device types | |
CN110825399B (zh) | 一种应用程序的部署方法及装置 | |
CN107783770B (zh) | 页面配置更新方法、装置、服务器和介质 | |
CN112100152B (zh) | 业务数据处理方法、系统、服务器和可读存储介质 | |
CN110908671A (zh) | 构建docker镜像的方法、装置及计算机可读存储介质 | |
CN114217908B (zh) | 容器启动方法、系统、装置及设备 | |
CN110851143A (zh) | 源码部署方法、装置、设备及存储介质 | |
US9411618B2 (en) | Metadata-based class loading using a content repository | |
CN115237631A (zh) | 一种基于数据共享插件的易扩展式数据共享系统及方法 | |
CN114995948A (zh) | 下载安全容器镜像文件的方法、装置、设备及系统 | |
CN113590144B (zh) | 一种依赖处理方法及装置 | |
CN112783866B (zh) | 数据读取方法、装置、计算机设备和存储介质 | |
CN116560804B (zh) | 一种使用多个容器镜像共同运行容器的方法和装置 | |
CN104573496A (zh) | 一种禁止启动项启动的方法和装置 | |
CN115586872A (zh) | 一种容器镜像管理方法、装置、设备及存储介质 | |
JP2017126293A (ja) | 情報処理装置及びリソース管理方法 | |
CN111966744B (zh) | 工作流部署方法、装置、计算机设备和存储介质 | |
CN112115393B (zh) | 一种页面加载方法、系统、设备以及介质 | |
CN115309421A (zh) | 单点系统的静态变量同步方法、装置、设备及存储介质 | |
CN111400243B (zh) | 基于流水线服务的研发管理系统以及文件存储方法、装置 |
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 |