容器镜像获取方法及设备
技术领域
本发明涉及计算机
技术领域
,尤其涉及一种容器镜像获取方法及设备。背景技术
容器化技术是现有服务端的常用技术,每个服务端可以作为一个容器。其中,常用的一个容器化技术为docker容器,docker容器的镜像是一个基于LXC(linux container,linux容器)的高级容器引擎,源代码托管在Github(基于git的代码托管中心)中。用户可以从容器服务端中获取容器镜像文件,以基于该容器镜像文件进行开发实现个性化的容器。
现有技术中,从容器服务端中获取的容器镜像文件与拉取的容器客户端的处理器相关的。例如,若容器客户端的处理器为X86,则获取的容器镜像文件是适用于X86处理器的容器镜像文件,若容器客户端的处理器为ARM,则获取的容器镜像文件是适用于ARM处理器的容器镜像文件。
然而,上述方案获取容器镜像文件的复杂度较高。
发明内容
本发明提供一种容器镜像获取方法及设备,用以解决获取容器镜像文件的复杂度较高的问题。
第一方面,本发明提供一种容器镜像获取方法,应用于容器服务端,包括:
接收容器客户端发送的镜像获取指令,所述镜像获取指令中携带第一场景标签,所述第一场景标签用于表示所述容器客户端的信息;
若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则从所述目标镜像列表中获取目标镜像信息项,所述目标镜像信息项的第二场景标签与所述第一场景标签匹配,所述第一场景标签和所述第二场景标签是用户自定义的标签;
将所述目标镜像信息项对应的容器镜像文件发送给所述容器客户端。
第二方面,本发明提供一种容器镜像获取方法,应用于容器客户端,包括:
向容器服务端发送镜像获取指令,所述镜像获取指令中携带第一场景标签,所述第一场景标为用户自定义的标签,所述第一场景标签用于表示所述容器客户端的信息;
接收所述容器服务端发送的所述第一场景标签对应的容器镜像文件。
第三方面,本发明实施例还提供了一种容器服务端,包括:
镜像获取指令接收模块,用于接收容器客户端发送的镜像获取指令,所述镜像获取指令中携带第一场景标签,所述第一场景标签用于表示所述容器客户端的信息;
目标镜像信息项获取模块,用于若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则从所述目标镜像列表中获取目标镜像信息项,所述目标镜像信息项的第二场景标签与所述第一场景标签匹配,所述第一场景标签和所述第二场景标签是用户自定义的标签;
镜像文件发送模块,用于将所述目标镜像信息项对应的容器镜像文件发送给所述容器客户端。
第四方面,本发明实施例还提供了一种容器客户端,包括:
镜像指令发送模块,用于向容器服务端发送镜像获取指令,所述镜像获取指令中携带第一场景标签,所述第一场景标为用户自定义的标签,所述第一场景标签用于表示所述容器客户端的信息;
镜像文件接收模块,用于接收所述容器服务端发送的所述第一场景标签对应的容器镜像文件。
第五方面,本发明实施例还提供了一种容器服务端,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述容器服务端实现如第一方面所述的方法。
第六方面,本发明实施例还提供了一种容器客户端,包括:至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述容器客户端实现如第二方面所述的方法。
第七方面,本发明实施例还提供了一种容器镜像服务系统,包括:第三方面或第五方面的容器服务端和第四方面或第六方面的容器客户端。
第八方面,本发明实施例还提供了一种非临时性计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被容器服务端执行时用于实现第一方面所述的方法,当所述计算机执行指令被容器客户端执行时用于实现第二方面所述的方法。
第九方面,本发明实施例还提供了一种计算机程序,该计算机程序用于实现上述第一方面或第二方面的方法。
本发明提供的容器镜像获取方法及设备,该方法包括:容器服务端接收容器客户端发送的镜像获取指令,该镜像获取指令中携带第一场景标签,该第一场景标签用于表示该容器客户端的信息;若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则容器服务端从所述目标镜像列表中获取目标镜像信息项,所述目标镜像信息项的第二场景标签与所述第一场景标签匹配,所述第一场景标签和所述第二场景标签是用户自定义的标签;容器服务端将目标镜像信息项对应的容器镜像文件发送给容器客户端。本发明可以允许用户为容器镜像文件添加自定义场景标签,以表示容器镜像文件适用的多种场景。例如,可以通过一个场景标签表示容器镜像文件适用的处理器信息、操作系统类型、操作系统内核、操作系统版本等。从而在获取容器镜像文件时只需要匹配一个场景标签即可得到该容器镜像文件适用的场景,而不需要分别匹配用于表示处理器信息、操作系统类型、操作系统内核、操作系统版本等的四个字段,可以有效减少获取容器镜像文件时需要用户输入的字段和匹配的字段,有助于降低获取容器镜像文件的复杂度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明实施例提供的一种容器镜像服务系统的结构示意图;
图2、3为本发明实施例提供的两种容器镜像获取方法的步骤流程图;
图4为本发明实施例提供的容器服务端和容器客户端之间的交互过程示意图;
图5为本发明实施例提供的一种容器服务端的结构框图;
图6为本发明实施例提供的一种容器客户端的结构框图;
图7为本发明实施例提供的电子设备的结构框图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
本发明实施例提供的容器镜像获取方法可以应用于容器镜像服务系统中,该容器镜像服务系统中通常包括容器客户端和容器服务端。其中,容器服务端用于存储容器镜像文件,容器客户端用于从容器服务端中获取容器镜像文件,并使用容器镜像文件进行进一步开发。如图1所示的容器镜像服务系统示例性的给出了两个容器客户端CT1和CT2、以及一个容器服务端。用户可以在CT1、CT2中指定容器镜像文件的标识等信息,以使CT1和CT2从容器服务端中获取容器镜像文件。
可以理解的是,CT1和CT2获取的容器镜像文件可以不同,CT1和CT2可以一次从容器服务端中获取一个或多个容器镜像文件。
现有技术中,从容器服务端中获取的容器镜像文件与拉取的容器客户端的处理器相关的。例如,若容器客户端的处理器为X86,则获取的容器镜像文件是适用于X86处理器的容器镜像文件;若容器客户端的处理器为ARM,则获取的容器镜像文件是适用于ARM处理器的容器镜像文件。
为了实现上述基于处理器的容器镜像获取,可以通过镜像列表中的一个字段表示每个容器镜像文件适用的处理器信息。从而,当容器客户端从容器服务端中获取镜像文件时指定处理器信息,以获取对应的容器镜像文件。然而,上述方案存在一定限制,当每增加一个容器镜像文件适用的场景时,均需要在镜像列表中添加一个字段,如此,在容器镜像文件适用的场景较多时,获取容器镜像文件时需要匹配的字段较多,导致获取容器镜像文件的复杂度较高。
为了解决上述技术问题,本发明实施例提供了一种容器镜像获取方法,可以允许用户为容器镜像文件添加自定义场景标签,以表示容器镜像文件适用的多种场景。例如,可以通过一个场景标签表示容器镜像文件适用的处理器信息、操作系统类型、操作系统内核、操作系统版本等。从而可以有效减少获取容器镜像文件时需要匹配的字段,有助于降低容器镜像文件获取复杂度。
下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
参照图2,图2是本发明实施例提供的一种容器镜像获取方法的步骤流程图,应用于容器服务端,由容器服务端执行该方法的步骤,该方法包括S101至S103:
S101:接收容器客户端发送的镜像获取指令,该镜像获取指令中携带第一场景标签,该第一场景标签用于表示该容器客户端的信息。
其中,容器客户端的信息可以包括但不限于:容器客户端的处理器信息、容器客户端的操作系统类型、操作系统内核、操作系统版本。容器客户端的处理器信息可以包括处理器的架构等。
可以理解的是,该第一场景标签是用户在容器客户端中输入的,用户自定义的场景标签。
S102:若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则从目标镜像列表中获取目标镜像信息项,目标镜像信息项的第二场景标签与第一场景标签匹配,第一场景标签和第二场景标签是用户自定义的标签。
其中,目标镜像列表中存在一个或多个镜像信息项,每个镜像信息项对应一个容器镜像文件,该镜像信息项用于表示对应的容器镜像文件的信息。容器镜像文件的信息包括但不限于:容器镜像文件的地址、类型、大小、摘要、适用的处理器信息、适用的操作系统类型、第二场景标签等。
对于docker容器,目标镜像列表的名称为manifest list,其中的每个镜像信息项的名称为manifest。目标镜像列表可以理解为一个配置文件,其中的信息是灵活配置得到的。该配置文件可以是一个JS(java script,java脚本)文件,从而创建该配置文件就是基于空的JS文件配置各个镜像信息项。
下面举例说明上述目标镜像列表的结构。
上述目标镜像列表中,标签“schemaVersion”用于表示目标镜像列表中包括的镜像信息项的数量。标签“mediaType”用于表示目标镜像列表和镜像信息项的类型,通过一个字符串表示。标签“size”用于表示镜像信息项的大小。标签“digest”用于表示镜像信息项的摘要,可以认为是镜像信息项的唯一标识。“platform”是现有技术中的标签,用于表示manifest适用的设备,具体涉及到设备的处理器信息“architecture”和设备的操作系统类型“os”,“tag”是manifest的第二场景标签。
从上述目标镜像列表中包括两个镜像信息项manifest,其中一个镜像信息项的第二场景标签为“kernel-3.10”,另一个镜像信息项的第二场景标签为“kernel-4.19.90”。
对于第二场景标签为“kernel-3.10”的镜像信息项,其适用的操作系统类型为linux,适用的处理器信息为mips。可以看出,本发明实施例可以用一个第二场景标签“kernel-3.10”,即可代表该镜像信息项对应的容器镜像文件适用于操作系统类型linux和处理器信息mips的设备上。
对于第二场景标签为“kernel-4.19.90”的镜像信息项,其适用的操作系统类型为unix,适用的处理器信息为arm64。可以看出,本发明实施例可以用一个第二场景标签“kernel-4.19.90”,即可代表该镜像信息项对应的容器镜像文件适用于操作系统类型unix和处理器信息arm64的设备上。
从而,可以在目标镜像列表中删除“architecture”和“os”这两个标签,避免与“tag”的信息出现重复,降低了信息冗余。
当然,第二场景标签“tag”除了表示处理器信息和操作系统类型之外,还可以表示操作系统内核、操作系统版本。也就是第一场景标签用于表示容器客户端使用的操作系统信息和处理器信息,第二场景标签用于表示对应的镜像信息项对应的容器镜像文件适用的操作系统信息和处理器信息,操作系统信息包括:操作系统类型、操作系统内核、操作系统版本。如此,自定义的第二场景标签“tag”可以灵活的表示容器镜像文件适用的设备的各种信息,实现了采用一个标签进行匹配即可实现容器镜像文件的下载,减少了获取容器镜像文件时所需匹配的标签数量,降低了获取容器镜像文件的复杂度。
可以理解的是,目标镜像列表中的镜像信息项与容器服务端中存储的容器镜像文件对应。当新增一个容器镜像文件时,不仅要将该容器镜像文件存储至该容器服务端中,还需要向容器服务端中的目标镜像列表中添加该容器镜像文件对应的镜像信息项。当删除一个容器镜像文件时,不仅要将该容器镜像文件从该容器服务端中删除,还需要从容器服务端中的目标镜像列表中将该容器镜像文件对应的镜像信息项删除。
当上述目标镜像列表中的其中一个第二场景标签与第一场景标签匹配时,确定该第二场景标签所在的镜像信息项为目标镜像信息项,并将该目标镜像信息项对应的容器镜像文件确定为用户获取的容器镜像文件。
在一实施例中,镜像获取指令中除携带第一场景标签外还携带第一参考信息,所述第一参考信息包括以下至少一项:容器客户端的处理器信息和所述容器客户端的操作系统类型;所述若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则从目标镜像列表中获取目标镜像信息项,目标镜像信息项的第二场景标签与第一场景标签匹配,具体包括:
若目标镜像列表中存在至少一个包含第二场景标签和第二参考信息的第一镜像信息项,则从所述第一镜像信息项中获取第二镜像信息项,所述第二镜像信息项的第二场景标签与所述第一场景标签匹配,所述第二镜像信息项的第二参考信息与所述第一参考信息匹配。
其中,第一镜像信息项是目标镜像列表中包括第二场景标签和第二参考信息的镜像信息项,第二参考信息包括所在的容器镜像信息项所对应的容器镜像文件适用的容器客户端的处理器信息和操作系统类型。
在本发明实施例中,为了降低获取容器镜像文件的复杂度,可以在容器服务端中存储多个镜像列表,每个镜像列表中包括一个或多个镜像信息项。从而,在获取容器镜像文件时,可以指定从其中一个镜像列表中获取对应的镜像信息项。如此,减少了需要匹配的镜像信息项的数量,有助于提高降低确定目标镜像信息项的复杂度,进而降低获取容器镜像文件的复杂度。
基于上述说明,所述镜像获取指令还携带目标列表标识,容器服务端在接收到镜像获取指令之后进行S102之前,还可以获取与所述目标列表标识对应的镜像列表作为目标镜像列表。
其中,目标列表标识用于唯一表示目标镜像列表,在本发明实施例中,容器服务端中可以存储多个镜像列表,每个镜像列表均用唯一的一个列表标识表示。
可选地,上述镜像列表是通过如下步骤预先生成,并存储在容器服务端中的:
接收所述容器客户端发送的至少一个容器镜像文件和一镜像列表,所述镜像列表中包括的至少一个镜像信息项与所述至少一个容器镜像文件分别对应。
可以理解的是,容器客户端可以预先制作容器镜像文件和对应的镜像列表,并发送给容器服务端存储。
在本发明实施例中,每个镜像列表对应的容器镜像文件是一系列的相关容器镜像文件,通常一同使用。当然,每个镜像列表可以指定一个列表标识。
S103:将目标镜像信息项对应的容器镜像文件发送给容器客户端。
容器客户端在接收到该容器镜像文件之后,用户可以在容器客户端中基于该容器镜像文件进行再次开发,以实现进一步增强功能。
参照图3,图3是本发明实施例提供的一种容器镜像获取方法的步骤流程图,应用于容器客户端,由容器客户端执行该方法的步骤,该方法包括S201至S202:
S201:向容器服务端发送镜像获取指令,该镜像获取指令中携带第一场景标签,该第一场景标为用户自定义的标签,该第一场景标签用于表示容器客户端的信息。
其中,镜像获取指令是在用户在容器客户端中输入第一场景标签之后生成的。当然,用户还可以输入第一参考信息。
在一实施例中,第一场景标签以命令行的形式由用户输入到用容器端,再由容器端提取封装成镜像获取指令发送给容器服务器端。
S202:接收容器服务端发送的第一场景标签对应的容器镜像文件。
该步骤是与S103对应的容器客户端的执行步骤。
可选地,上述容器客户端可以通过如下步骤预先生成镜像列表和容器镜像文件:首先,生成在至少一个客户端的信息下分别使用的至少一个容器镜像文件;生成一镜像列表,所述镜像列表中包括与所述至少一个容器镜像文件分别对应的至少一个镜像信息项,所述镜像信息项中包括对应的容器镜像文件的第二场景标签,所述第二场景标签是用户自定义的标签,所述第二场景标签用于表示所述容器镜像文件适用的容器客户端的信息;将所述至少一个容器镜像文件和所述镜像列表发送给所述容器服务端。
可以理解的是,在容器客户端上生成的容器镜像文件可以适用于与该容器客户端的信息相同的其余容器客户端。
可选地,所述容器客户端的信息包括以下至少一项信息:操作系统类型、操作系统内核、操作系统版本、处理器信息。
可以看出,图2和图3分别示出了容器镜像获取方法中容器服务端和容器客户端的执行过程。
参照图4,图4是本发明实施例提供的一种容器服务端和容器客户端之间的交互过程示意图,具体包括:
S301:容器客户端向容器服务端发送镜像获取指令,该镜像获取指令中携带第一场景标签,该第一场景标签用于表示容器客户端的信息。
相应地,容器服务端接收容器客户端发送的镜像获取指令。
S302:若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则容器服务端从目标镜像列表中获取目标镜像信息项,目标镜像信息项的第二场景标签与第一场景标签匹配,第一场景标签和第二场景标签是用户自定义的标签。
S303:容器服务端将目标镜像信息项对应的容器镜像文件发送给容器客户端。
相应地,容器客户端接收所述容器服务端发送的所述第一场景标签对应的容器镜像文件。
该方法实施例是图2和图3所示的方法实施例的结合,具体可以参照图2和图3所示的方法实施例中的详细说明,在此不再赘述。
参照图5,图5是本发明实施例提供的一种容器服务端的结构框图,包括:
镜像获取指令接收模块401,用于接收容器客户端发送的镜像获取指令,所述镜像获取指令中携带第一场景标签,所述第一场景标签用于表示所述容器客户端的信息。
目标镜像信息项获取模块402,用于若目标镜像列表中存在至少一个包含第二场景标签的镜像信息项,则从所述目标镜像列表中获取目标镜像信息项,所述目标镜像信息项的第二场景标签与所述第一场景标签匹配,所述第一场景标签和所述第二场景标签是用户自定义的标签。
镜像文件发送模块403,用于将所述目标镜像信息项对应的容器镜像文件发送给所述容器客户端。
可选地,所述第一场景标签用于表示所述容器客户端使用的操作系统信息和处理器信息,所述第二场景标签用于表示对应的镜像信息项对应的容器镜像文件适用的操作系统信息和处理器信息,所述操作系统信息包括:操作系统类型、操作系统内核、操作系统版本。
可选地,所述镜像获取指令还携带目标列表标识,所述容器服务端还包括:
目标镜像列表获取模块,用于获取与所述目标列表标识对应的镜像列表作为目标镜像列表。
可选地,所述容器服务端还包括:
镜像文件及列表接收模块,用于接收所述容器客户端发送的至少一个容器镜像文件和一镜像列表,所述镜像列表中包括的至少一个镜像信息项与所述至少一个容器镜像文件分别对应。
本发明实施例提供的容器服务端,可用于执行上述图2中所示的方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
参照图6,图6是本发明实施例提供的一种容器客户端的结构框图,包括:
镜像指令发送模块501,用于向容器服务端发送镜像获取指令,所述镜像获取指令中携带第一场景标签,所述第一场景标为用户自定义的标签,所述第一场景标签用于表示所述容器客户端的信息。
镜像文件接收模块502,用于接收所述容器服务端发送的所述第一场景标签对应的容器镜像文件。
可选地,所述容器客户端还包括:
镜像文件生成模块,用于生成在至少一个客户端的信息下分别使用的至少一个容器镜像文件。
镜像列表生成模块,用于生成一镜像列表,所述镜像列表中包括与所述至少一个容器镜像文件分别对应的至少一个镜像信息项,所述镜像信息项中包括对应的容器镜像文件的第二场景标签,所述第二场景标签是用户自定义的标签,所述第二场景标签用于表示所述容器镜像文件适用的容器客户端的信息。
镜像文件及列表发送模块,用于将所述至少一个容器镜像文件和所述镜像列表发送给所述容器服务端。
可选地,所述容器客户端的信息包括以下至少一项信息:操作系统类型、操作系统内核、操作系统版本、处理器信息。
本发明实施例提供的容器客户端,可用于执行上述图3中所示的方法实施例的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
上述容器客户端和容器服务端均可以为电子设备,图7为本发明实施例示例性示出的一种电子设备600的结构框图。该电子设备600包括存储器602和至少一个处理器601;
其中,存储器602存储计算机执行指令;
当该电子设备600为容器服务端时,至少一个处理器601执行存储器602存储的计算机执行指令,使得容器服务端实现前述图2中的方法;
当该电子设备600为容器客户端时,至少一个处理器601执行存储器602存储的计算机执行指令,使得容器客户端实现前述图3中的方法;
此外,该电子设备还可以包括接收器603和发送器604,接收器603用于接收从其余装置或设备的信息,并转发给处理器601,发送器604用于将信息发送到其余装置或设备。
上述电子设备是图2和图3所示的方法对应的装置实施例,具体可以参照图2或图3所示的方法实施例的详细说明,在此不再赘述。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当所述计算机执行指令被容器服务端执行时用于实现如图2所示的方法,当所述计算机执行指令被容器客户端执行时用于实现如图3所示的方法。
本发明实施例还提供了一种容器镜像服务系统,该系统可以包括前述容器服务端和容器客户端。
本发明实施例还提供了一种计算机程序,计算机程序用于实现前述图2或图3所示的方法。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本发明的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。