私有镜像克隆方法、装置、计算机设备及存储介质转让专利

申请号 : CN201910410585.7

文献号 : CN110275717A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 黄桂钦

申请人 : 平安科技(深圳)有限公司

摘要 :

本申请实施例提供一种私有镜像克隆方法、装置、计算机设备及存储介质,其涉及云计算技术领域,可应用于PaaS平台中。所述方法包括:根据所设置的需克隆的目的应用环境和目的区域确定目的镜像仓库;判断产生克隆指令的物理机上是否存在原私有镜像;若产生克隆指令的物理机上存在原私有镜像,将所述原私有镜像克隆至目的镜像仓库。本申请实施例克隆的过程自动化完成,无需用户干预,提高了私有镜像克隆的速度和效率,私有镜像克隆到目的镜像仓库后,可直接利用克隆后的私有镜像,如此,无需跨区域获取私有镜像,提高了安全性,进一步提高利用私有镜像创建容器应用的效率。

权利要求 :

1.一种私有镜像克隆方法,其特征在于,所述方法包括:若接收到私有镜像克隆指令,获取所述克隆指令中的原私有镜像,并根据所述克隆指令调用预设设置接口,以接收通过所述预设设置接口设置的需克隆的目的应用环境和目的区域;

根据所述目的应用环境和目的区域确定目的镜像仓库;

判断产生所述克隆指令的物理机上是否存在所述原私有镜像;

若产生所述克隆指令的物理机上存在所述原私有镜像,将所述原私有镜像克隆至所述目的镜像仓库。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:若产生所述克隆指令的物理机上不存在所述原私有镜像,根据所述原私有镜像的信息确定原镜像仓库;

判断所述原镜像仓库中是否存在所述原私有镜像;

若所述原镜像仓库中存在所述原私有镜像,从所述原镜像仓库中下载所述原私有镜像到所述物理机上;

将所述原私有镜像克隆至所述目的镜像仓库。

3.根据权利要求2所述的方法,其特征在于,在所述根据所述目的应用环境和目的区域确定目的镜像仓库之后,所述方法还包括:根据所述原私有镜像名称在目的镜像仓库中查找是否存在名称相同的私有镜像;

若在目的镜像仓库中不存在名称相同的私有镜像,执行所述判断产生所述克隆指令的物理机上是否存在所述原私有镜像的步骤。

4.根据权利要求2所述的方法,其特征在于,所述预设设置接口还用于设置所述原私有镜像克隆后的私有镜像名称;

在所述根据所述目的应用环境和目的区域确定目的镜像仓库之后,所述方法还包括:根据所述克隆后的私有镜像名称在目的镜像仓库中查找是否存在名称相同的私有镜像;若在目的镜像仓库中不存在名称相同的私有镜像,执行所述判断产生所述克隆指令的物理机上是否存在所述原私有镜像的步骤;

在所述将所述原私有镜像克隆至所述目的镜像仓库之前,所述方法还包括:将所述物理机上的所述原私有镜像的名称修改为所设置的所述克隆后的私有镜像名称。

5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:在数据库中添加克隆后的私有镜像的信息。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:若接收到编辑指令,获取所述编辑指令中的待编辑的私有镜像,所述待编辑的私有镜像包括克隆后的私有镜像;

根据所述编辑指令调用编辑接口,以接收通过所述编辑接口设置的所述待编辑的私有镜像的修改信息;

若接收到编辑完成指令,接收所述待编辑的私有镜像的修改信息,并将所述修改信息更新至数据库。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:若接收到应用创建指令,获取所述应用创建指令中的私有镜像,所述应用创建指令中的私有镜像包括克隆后的私有镜像;

根据所述应用创建指令调用设置接口,以接收通过所述设置接口设置的需创建的容器应用的信息,其中,容器应用的信息中的容器应用的镜像为所述应用创建指令中的私有镜像;

根据所述应用创建指令中的私有镜像和所设置的容器应用的信息创建容器应用。

8.一种私有镜像克隆装置,其特征在于,所述私有镜像克隆装置包括:设置单元,用于若接收到私有镜像克隆指令,获取所述克隆指令中的原私有镜像,并根据所述克隆指令调用预设设置接口,以接收通过所述预设设置接口设置的需克隆的目的应用环境和目的区域;

目的仓库确定单元,用于根据所述目的应用环境和目的区域确定目的镜像仓库;

物理机判断单元,用于判断产生所述克隆指令的物理机上是否存在所述原私有镜像;

克隆单元,用于若产生所述克隆指令的物理机上存在所述原私有镜像,将所述原私有镜像克隆至所述目的镜像仓库。

9.一种计算机设备,其特征在于,所述计算机设备包括存储器,以及与所述存储器相连的处理器;

所述存储器用于存储计算机程序;所述处理器用于运行所述存储器中存储的计算机程序,以执行如权利要求1-7任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1-7任一项所述的方法。

说明书 :

私有镜像克隆方法、装置、计算机设备及存储介质

技术领域

[0001] 本申请涉及云计算技术领域,尤其涉及一种私有镜像克隆方法、装置、计算机设备及存储介质。

背景技术

[0002] 私有镜像制作成功后,会涉及到使用私有镜像,以完成快速部署。在云平台中,如在PaaS(Platform-as-a-Service,平台即服务)平台中,若想利用私有镜像来创建容器应用所对应的容器实例时,会从创建容器应用所对应的区域下的镜像仓库中获取私有镜像。然而在创建容器应用所对应的区域下的镜像仓库中可能不存在该私有应用镜像,跨区域的直接获取私有应用镜像可能会存在安全问题和效率低下的问题。

发明内容

[0003] 本申请实施例提供一种私有镜像克隆方法、装置、计算机设备及存储介质,可克隆私有镜像,在利用私有镜像创建容器应用时,无需跨区域获取私有镜像,提高了安全性以及利用私有镜像创建容器应用的效率。
[0004] 第一方面,本申请实施例提供了一种私有镜像克隆方法,包括:
[0005] 若接收到私有镜像克隆指令,获取所述克隆指令中的原私有镜像,并根据所述克隆指令调用预设设置接口,以接收通过所述预设设置接口设置的需克隆的目的应用环境和目的区域;根据所述目的应用环境和目的区域确定目的镜像仓库;判断产生所述克隆指令的物理机上是否存在所述原私有镜像;若产生所述克隆指令的物理机上存在所述原私有镜像,将所述原私有镜像克隆至所述目的镜像仓库。
[0006] 第二方面,本发明实施例提供了一种私有镜像克隆装置,该私有镜像克隆装置包括用于执行上述第一方面所述的方法对应的单元。
[0007] 第三方面,本发明实施例提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;
[0008] 所述存储器用于存储计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的方法。
[0009] 第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面所述的方法。
[0010] 本申请实施例除了克隆指令会涉及用户触发外,其他都是自动化完成,无需用户干预,提高了私有镜像克隆的速度和效率,私有镜像克隆到目的镜像仓库后,可直接利用克隆后的私有镜像,如此,无需跨区域获取私有镜像,提高了安全性,进一步提高利用私有镜像创建容器应用的效率。

附图说明

[0011] 为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012] 图1是本申请实施例提供的私有镜像克隆方法的流程示意图;
[0013] 图2是本申请另一实施例提供的私有镜像克隆方法的流程示意图;
[0014] 图3是本申请另一实施例提供的私有镜像克隆方法的流程示意图;
[0015] 图4是本申请另一实施例提供的私有镜像克隆方法的流程示意图;
[0016] 图5是本申请另一实施例提供的私有镜像克隆方法的子流程示意图;
[0017] 图6是本申请实施例提供的私有镜像克隆装置的示意性框图;
[0018] 图7是本申请另一实施例提供的私有镜像克隆装置的示意性框图;
[0019] 图8是本申请另一实施例提供的私有镜像克隆装置的示意性框图;
[0020] 图9是本申请另一实施例提供的私有镜像克隆装置的示意性框图;
[0021] 图10是本申请另一实施例提供的创建单元的示意性框图;
[0022] 图11是本申请实施例提供的计算机设备的示意性框图。

具体实施方式

[0023] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024] 需要注意的是,下文描述中,容器应用的容器实例和容器应用的容器意义相同。
[0025] 图1是本申请实施例提供的私有镜像克隆方法的流程示意图。如图1所示,该方法包括S101-S107。
[0026] S101,若接收到私有镜像克隆指令,获取所述克隆指令中的原私有镜像,并根据所述克隆指令调用预设设置接口,以接收通过所述预设设置接口设置的需克隆的目的应用环境和目的区域。
[0027] 其中,私有镜像克隆指令触发的方式包括多种,如用户触摸或者点击相关按钮或者图像触发,如在私有镜像的列表中,点击某一个私有镜像所对应的克隆按钮,触发该私有镜像的克隆指令;也可以接收用户的语音克隆私有镜像信息来触发。在本实施例中,私有镜像克隆指令触发的方式不做限制。
[0028] 若接收到私有镜像克隆指令,获取所述克隆指令中的私有镜像,将该克隆指令中的私有镜像称为该原私有镜像,如克隆指令中的原私有镜像包括原私有镜像的名称、编号等可以确定是哪一个私有镜像的标识信息。根据标识信息可从数据库中获取该私有镜像的所有信息。获取克隆指令中的该原私有镜像,并根据克隆指令调用预设设置接口。其中,预设设置接口可以以界面的形式存在。通过预设设置接口可以设置该私有镜像需克隆的目的应用环境和目的区域。其中,目的应用环境包括生产环境、测试环境、开发环境。其中,生产环境可理解为为互联网用户提供服务的环境,测试环境是内部用于测试所需要使用的环境,开发环境是内部用于开发所需要使用的环境。目的区域包括两部分:“区域”+“安全区域”。其中,“安全区域”是“区域”下的一个子区域。确定私有镜像克隆在哪个具体位置中,根据目的应用环境和目的区域共同决定,可以理解为将私有镜像克隆在某个应用环境下某个区域所对应的机房中。或者也可以理解为,根据目的的应用环境和目的的区域共同决定一个机房位置。如某个应用环境下某个区域对应一个机房位置。如将原私有镜像克隆在测试环境下宝信(地名)区域下的SF(宝信下面的一个更小的区域标识)子区域所在的机房中。
[0029] S102,根据所述目的应用环境和目的区域确定目的镜像仓库。
[0030] 其中,一个应用环境和一个区域确定一个目的镜像仓库。可以理解为,一个机房对应有一个镜像仓库。如此,在创建容器应用时以方便从对应的镜像仓库中获取所需要的镜像信息,而不需要跨区域从其他的镜像仓库中获取镜像信息,提高了获取镜像信息的效率。确定目的镜像仓库包括确定目的镜像仓库对应的IP地址和/或目的镜像仓库名。具体地,在数据库中获取目的镜像仓库的对应的IP地址和/或目的镜像仓库名。
[0031] S103,判断产生所述克隆指令的物理机上是否存在所述原私有镜像。
[0032] 具体地,获取原私有镜像的名称;查询产生所述克隆指令的物理机上是否存在有与该原私有镜像名称相同的私有镜像;若物理机上存在有与该原私有镜像名称相同的私有镜像,确定物理机上存在有该原私有镜像;否则,确定物理机上不存在该原私有镜像。其中,查询物理机上是否存在有与该原私有镜像名称相同的私有镜像,包括:通过命令查看物理机上所存在的所有的私有镜像,将该原私有镜像与宿主机上所存在的所有的私有镜像进行匹配。其中,可通过dockerimages命令来查看宿主机上所存在的所有的私有镜像的列表。其中,物理机也可以理解为本地物理机,即产生克隆指令的机器。
[0033] 若物理机上不存在该原私有镜像,执行步骤S104,若物理机上存在该原私有镜像,执行步骤S107。
[0034] S104,根据所述原私有镜像的信息确定原镜像仓库。
[0035] 根据该原私有镜像确定该原私有镜像所对应的应用环境和区域,根据该原私有镜像所对应的应用环境和区域确定原镜像仓库。如根据该原私有镜像所对应的应用环境和区域在数据库中获取该原私有镜像所对应的原镜像仓库,以及原镜像仓库所对应的IP地址和/或目的镜像仓库名等信息。
[0036] S105,判断所述原镜像仓库中是否存在所述原私有镜像。
[0037] 具体地,根据该原私有镜像的名称等信息在原镜像仓库中查询是否存在该原私有镜像。
[0038] 若原镜像仓库中存在该原私有镜像,执行步骤是S106;否则,返回提示信息以告知用户没有找到该原私有镜像。
[0039] S106,从所述原镜像仓库中下载所述私有镜像到所述物理机上。
[0040] 即若所述原镜像仓库中存在所述原私有镜像,从所述原镜像仓库中下载所述私有镜像到所述物理机上。如可通过执行命令从原镜像仓库中下载该原私有镜像到本地物理机上。如dockerpull命令。具体地,如dockerpull该原私有镜像的名称。需要注意的是,将原私有镜像下载到本地物理机上,再克隆至目的镜像仓库,而不是直接从原镜像仓库将原私有镜像克隆至目的镜像仓库,是考虑到镜像仓库中数据的安全性,镜像仓库中保存有大量的数据,为了安全考虑,不直接从原镜像仓库将原私有镜像克隆至目的镜像仓库。
[0041] S107,将所述原私有镜像克隆至所述目的镜像仓库。
[0042] 如可通过执行命令将本地物理机上的该原私有镜像克隆到目的镜像仓库中。如dockerpush命令,以将原私有镜像推送至目的镜像仓库。具体地,如dockerpush{原私有镜像名称},将原私有镜像推送至目的镜像仓库。如此,以达到将原私有镜像克隆至目的镜像仓库的效果。需要注意的是,克隆至目的镜像仓库中的对应的私有镜像名称与原私有镜像名称相同。
[0043] 其中,若目的镜像仓库为原私有镜像所对应的镜像仓库,意味着将该私有镜像克隆到原私有镜像所对应的镜像仓库。可以理解地,若该原私有镜像第一次生成,将生成的该原私有镜像保存到该原私有镜像所对应的镜像仓库;若该原私有镜像并不是第一次生成,那么可以理解为是更新原私有镜像。
[0044] 若目的镜像仓库不为原私有镜像所对应的镜像仓库,意味着将该原私有镜像克隆到其他的镜像仓库。若本地物理机上存在有该原私有镜像,那么直接从本地物理机上将该原私有镜像推送至目的镜像仓库,若本地物理机上不存在该原私有镜像,从原镜像仓库中获取该私有镜像到本地物理机,再将该私有镜像从本地物理机上推送到目的镜像仓库。
[0045] 在一实施例中,将原私有镜像推送至目的镜像仓库后,所述方法还包括:
[0046] S108,在数据库中添加克隆后的私有镜像的信息。
[0047] 如在数据库中,目的镜像仓库所对应的数据表中添加克隆后的私有镜像的信息。克隆后的私有镜像的信息包括克隆后的私有镜像的名称、克隆时间等。
[0048] 上述方法实施例中可实现将私有镜像克隆至目的镜像仓库。其中,除了克隆指令可能涉及用户触发外,其他都是自动化完成,无需用户干预,提高了克隆私有镜像的速度和效率,同时克隆到目的镜像仓库中的私有镜像可以供用户下次利用私有镜像创建应用时直接使用,如可直接从对应目的数据仓库中获取该私有镜像,并在目的镜像仓库对应的应用环境和区域下创建私有镜像所对应的容器应用,因此无需跨镜像仓库来获取该私有镜像,提高了利用私有镜像创建应用的效率。
[0049] 在一实施例中,在步骤S102之后,即根据所述目的应用环境和目的区域确定目的镜像仓库之后,所述方法还包括:根据所述原私有镜像名称在目的镜像仓库中查找是否存在名称相同的私有镜像;若在目的镜像仓库中不存在名称相同的私有镜像,执行步骤S103;若在目的镜像仓库中存在名称相同的私有镜像,进行提示。该实施例进一步限定在目的镜像仓库中存在和不存在与原私有镜像名称相同的私有镜像的情况。可以理解地,若目的镜像仓库中存在与原私有镜像名称相同的私有镜像,那么在将原私有镜像克隆至目的镜像仓库中时,由于使用的是原私有镜像名称,即没有修改原私有镜像的名称,会导致克隆到目的镜像仓库中的克隆后的私有镜像的名称与原私有镜像的名称一致,如此,克隆后的私有镜像可能会覆盖掉在目的镜像仓库中的原来就存在的名称相同的私有镜像,如此会破坏目的镜像仓库的数据。因此,在本实施例中进一步限定只有在目的镜像仓库中不存在与原私有镜像名称相同的私有镜像时,才将原私有镜像克隆到目的镜像仓库,以避免目的镜像仓库数据破坏的情况出现。
[0050] 在一实施例中,预设设置接口还用于设置克隆后的私有镜像名称。对应的,图2是本申请实施例提供的私有镜像克隆方法的流程示意图。该方法包括步骤S201-S209。
[0051] S201,若接收到私有镜像克隆指令,获取所述克隆指令中的原私有镜像,并根据所述克隆指令调用预设设置接口,以接收通过所述预设设置接口设置的需克隆的目的应用环境、目的区域以及克隆后的私有镜像名称。
[0052] S202,根据所述目的应用环境和目的区域确定目的镜像仓库。
[0053] S203,根据所述克隆后的私有镜像名称在目的镜像仓库中查找是否存在名称相同的私有镜像。
[0054] 若目的镜像仓库中不存在名称相同的私有镜像,执行步骤S204;若目的镜像仓库中存在名称相同的私有镜像,进行提示。
[0055] S204,判断产生所述克隆指令的物理机上是否存在所述原私有镜像。
[0056] 若产生所述克隆指令的物理机上不存在所述原私有镜像,执行步骤S205;若产生所述克隆指令的物理机上存在所述原私有镜像,执行步骤S208。
[0057] S205,根据所述原私有镜像的信息确定原镜像仓库。
[0058] S206,判断所述原镜像仓库中是否存在所述原私有镜像。
[0059] 若所述原镜像仓库中存在所述原私有镜像,执行步骤S207;若所述原镜像仓库中不存在所述原私有镜像,进行提示。
[0060] S207,从所述原镜像仓库中下载所述原私有镜像到所述物理机上。
[0061] 需要提醒的是,将原私有镜像下载到物理机上还有一个重要的原因是,方便在本地物理机上对原私有镜像的名称做修改,即将下载到本地物理机上的原私有镜像的名称修改为克隆后的私有镜像的名称。或者从另一方面理解,若不将原私有镜像从原镜像仓库中下载到本地物理机,那么直接在原镜像仓库中将原私有镜像名称做修改,那么会破坏原镜像仓库中原私有镜像的数据;若不对原私有镜像的名称做修改,不便于用户的识别和管理,同时若目的镜像仓库中存在有与原私有镜像名称相同的私有镜像,将原私有镜像推送至目的镜像仓库中,可能会破坏目的镜像仓库中的数据。
[0062] S208,将所述物理机上的所述原私有镜像的名称修改为所设置的所述克隆后的私有镜像名称。
[0063] 可以理解地,为了方便用户的识别和管理,克隆时将原私有镜像名称修改为克隆后的私有镜像名称。如可通过命令来修改该原私有镜像的名称,如dockertag命令。具体地,如dockertag原私有镜像名称克隆后的私有镜像名称。
[0064] S209,将所述原私有镜像克隆至所述目的镜像仓库。
[0065] 如可通过执行命令将该原私有镜像克隆到目的镜像仓库中。如dockerpush命令,以将原私有镜像推送至目的镜像仓库。具体地,如dockerpush{克隆后的私有镜像名称},如此,以达到将原私有镜像克隆至目的镜像仓库的效果。需要注意的是,虽然是原私有镜像,但是该原私有镜像的名称已经发生了改变,该原私有镜像的名称已经变更为克隆后的私有镜像名称,即将该名称为克隆后的私有镜像名称所对应的私有镜像推送到目的镜像仓库中。
[0066] 在一实施例中,如图2所示,将原私有镜像推送至目的镜像仓库后,所述方法还包括:
[0067] S210,在数据库中添加克隆后的私有镜像的信息。
[0068] 需要注意的是,该实施例的步骤中与图1实施例一致的步骤,请参看图1实施例中的相应描述,在此不再赘述。
[0069] 该实施例进一步在克隆之前,将原私有镜像名称修改为克隆后的私有镜像名称,以进一步便于识别和管理,同时判断目的镜像仓库中是否存在与克隆后的私有镜像名称相同的私有镜像,以进一步排除目的镜像仓库中存在与克隆后的私有镜像名称相同的私有镜像的情况,避免破坏目的镜像仓库中的数据。
[0070] 在一实施例中,在将原私有镜像克隆至目的镜像仓库后,可对目的镜像仓库中所克隆的私有镜像进行编辑,以修改该私有镜像的信息。如此,如图3所示,所述私有镜像克隆方法包括步骤S301-S313。其中,该实施例与图2所示的实施例的区别在于:增加了步骤S311-S313。下面将详细介绍S311-S313,其他步骤S301-S310与步骤S201-S210步骤一致,具体请参看图2实施例的描述。
[0071] S311,若接收到编辑指令,获取所述编辑指令中的待编辑的私有镜像,所述待编辑的私有镜像包括克隆后的私有镜像。
[0072] 其中,编辑指令有多种方式触发,如由用户触摸或者点击相关按钮或者图像触发,如在私有镜像的列表中,点击克隆后的私有镜像(或者某一个私有镜像)所对应的编辑按钮,触发该私有镜像的编辑指令;也可以接收用户的语音编辑信息来触发等。该编辑指令中的待编辑的私有镜像中包括私有镜像的名称等标识信息。
[0073] S312,根据所述编辑指令调用编辑接口,以接收通过所述编辑接口设置的所述待编辑的私有镜像的修改信息。
[0074] 编辑接口是由开发人员开发的,可以以编辑界面的形式存在,通过编辑接口修改私有镜像的信息。如私有镜像的名称、私有镜像的描述、私有镜像的镜像组等。其中,私有镜像的描述,包括如该私有镜像具体的作用是什么,包括哪些内容等,以方便快速了解该私有镜像。私有镜像的镜像组,可以理解为,为了便于管理,将私有镜像分成不同的组,每个组中包括有一个或者多个私有镜像。
[0075] S313,若接收到编辑完成指令,接收所述待编辑的私有镜像的修改信息,并将所述修改信息更新至数据库。
[0076] 该实施例中实现了对私有镜像的信息的修改。由于上述克隆私有镜像过程自动完成,因此,提供编辑接口,以让用户方便对私有镜像的信息进行修改,提高了用户的体验。
[0077] 在一实施例中,可使用克隆至目的镜像仓库中的私有镜像来创建容器应用。如此,如图4所示,所述私有镜像克隆方法包括步骤S401-S413。其中,该实施例与图2所示的实施例的区别在于:增加了步骤S411-S413。下面将详细介绍S411-S413,其他步骤S401-S410与步骤S201-S210步骤一致,具体请参看图2实施例的描述。
[0078] S411,若接收到应用创建指令,获取所述应用创建指令中的私有镜像,所述应用创建指令中的私有镜像包括克隆后的私有镜像。
[0079] 其中,应用创建指令有多种方式触发,如由用户触摸或者点击相关按钮或者图像触发,如在私有镜像的列表中,点击克隆后的私有镜像(或者某一个私有镜像)所对应的应用创建按钮,触发该私有镜像的应用创建指令;也可以接收用户的语音应用创建信息来触发等。该应用创建指令中的私有镜像中包括私有镜像的名称等标识信息。
[0080] S412,根据所述应用创建指令调用设置接口,以接收通过所述设置接口设置的需创建的容器应用的信息,其中,容器应用的信息中的容器应用的镜像为所述应用创建指令中的私有镜像。
[0081] 设置接口是由开发人员开发的,可以以编辑界面的形式存在,通过设置接口设置需创建的容器应用的信息,其中,容器应用的信息中的容器应用的镜像默认为该应用创建指令中的私有镜像,无需再次重新设置。所设置的容器应用的信息包括容器应用的应用环境、容器应用的区域、容器应用的容器实例数量等。其中,容器应用的应用环境、容器应用的区域目的应用环境、目的区域相同,在其他实施例中,也可以不同。
[0082] S413,根据所述应用创建指令中的私有镜像和所设置的容器应用的信息创建容器应用。
[0083] 所设置的容器应用的信息包括容器应用的应用环境、容器应用的区域、容器应用的容器实例数量等。而容器应用的镜像信息为创建指令中的私有镜像。
[0084] 该实施例进一步使用克隆后的私有镜像创建容器应用,提高了容器应用创建的速度和效率。由于克隆后的私有镜像中本身包括一些另外安装的组件或者服务等,如此,利用克隆后的私有镜像创建容器应用的容器实例后,无需再重新安装另外的组件或者服务,进一步提高了容器应用创建的速度和效率。
[0085] 在一实施例中,步骤S413之后,所述方法还包括:将所创建的容器应用的信息更新至数据库。
[0086] 在一实施例中,如图5所示,步骤S413包括以下步骤S501-S503。
[0087] S501,根据所述容器应用的应用环境、容器应用的区域、容器应用的容器实例数量确定所述容器应用的容器实例的IP。
[0088] 根据所设置的容器应用的应用环境、容器应用的区域、容器应用的容器实例数量确定容器应用的容器实例的IP,包括:根据容器应用的应用环境、容器应用的区域确定容器应用创建的位置(如机房位置);根据所确定的容器应用创建的位置(如机房位置)确定预先分配的用于创建容器实例的IP地址池;从该IP地址池中获取与容器应用的容器实例数量相同的IP地址,将所获取的IP地址确定为容器应用的容器实例的IP。
[0089] S502,根据所述容器应用的应用环境、容器应用的区域、容器应用的容器实例数量、所述应用创建指令中的私有镜像确定创建所述容器应用的容器实例的宿主机。
[0090] 根据容器应用的应用环境、容器应用的区域确定容器应用创建的位置;根据所确定的容器应用创建的位置确定宿主机集群;根据私有镜像的资源信息从所确定的宿主机集群中确定创建容器应用的容器实例的具体宿主机。具体地,确定具体宿主机集群是通过容器编排工具自动确定的,根据容器应用的应用环境、容器应用的区域,通过容器编排工具识别该容器应用所处的宿主机集群,容器编排工具根据私有镜像的资源信息、以及宿主机集群的资源情况从宿主机集群中确定创建容器应用的容器实例的宿主机。其中,容器编排工具可以为Marathon编排工具,还可以为其他的容器编排工具。其中,一个容器实例创建在一个宿主机上,可以理解地,一个容器实例对应一个宿主机。
[0091] 其中,步骤S501和步骤S502的顺序并不做严格的限制,也可以先执行步骤S502,再执行步骤S501,其中,步骤S501、S502可以同时执行,也可以分开执行。
[0092] S503,根据所述应用创建指令中的私有镜像在所确定的宿主机上创建容器应用的容器实例,并将所确定的IP设置为所创建的容器实例的IP。
[0093] 具体地,步骤S503包括:通过容器编排工具将私有镜像推送到所确定的宿主机上,以根据所述私有镜像在所述宿主机上创建该容器应用的容器实例;若该容器应用的容器实例创建完成,通过自动化运维工具连接所创建的容器实例,将所创建的容器实例与所确定的IP进行绑定,以将所确定的IP设置为所创建的容器实例的IP。
[0094] 其中,容器编排工具可以为Marathon工具。Marathon工具可以简单理解为一个中转站,将私有镜像发送到该容器编排工具,然后由容器编排工具将具体镜像分配下发到所确定的宿主机上,以进行容器实例的创建。其中,运维工具如自动化运维工具ansible。
[0095] 在一实施例中,所设置的容器应用的信息还包括容器应用的使用时间、容器应用的资源组等。其中,容器应用的使用时间可以月为单位,还可以以其他的时间为单位。可以理解地,容器应用的容器实例创建成功后是需要收费的,容器应用的资源组下包括有资源账户,用于创建容器应用的容器实例所需要使用的费用。如此,如图5所示,在确定容器应用的容器实例IP和容器应用的容器实例所在的宿主机之前,步骤S413还包括以下步骤:
[0096] 501a,根据所述容器实例的使用时间、所述容器应用的资源组、所述容器应用的容器实例数量来判断所述容器应用的资源组中是否有足够金额以用来创建该容器应用的容器实例。
[0097] 由于创建的每个容器实例都是需要付费的,根据容器应用的容器实例数量、容器实例的使用时间、每个容器实例的费用计算创建当前容器应用需要支付的金额;判断容器应用的资源组中的剩余金额是否大于或者等于创建当前容器应用需要支付的金额;若是,则确定容器应用的资源组有足够金额以用来创建对应的容器应用;若否,则确定容器应用的资源组没有足够金额来进行创建。
[0098] 若容器应用的资源组没有足够金额来创建,返回创建失败的原因。若有足够金额来创建该容器应用的容器实例,执行步骤S501。
[0099] 该实施例进一步考虑了创建容器应用的一些实际情况。该实施例创建容器应用的过程自动完成,无需人工干预,提高了创建容器应用的速度。
[0100] 在一实施例中,若所设置的容器应用的信息包括启用监控信息,以上容器应用创建的过程中还涉及有为所创建容器应用的容器实例启用监控,对应的步骤还包括:
[0101] 将容器实例对应的启用监控信息中的启用监控标识推送到所确定的宿主机上,以根据宿主机的监控进程收集该容器实例的运行数据信息。
[0102] 需要注意的是,默认所有宿主机上都会安装监控进程且该监控进程是启用状态。将启用监控标识推送到所确定的宿主机上,通过宿主机上安装的监控进程来监控该容器实例。如监控容器应用的容器实例的CPU、内存等资源。
[0103] 需要注意的是,以上方法实施例的操作是需要有特定权限的用户才可以操作。在另一实施例中,在步骤S101(或者S201或者S301或者S401)之前,所述方法还包括:获取登陆用户的权限;判断登陆用户的权限与预设权限是否相同;若相同,对应执行步骤S101(或者S201或者S301或者S401),否则,进行提示。
[0104] 图6是本申请实施例提供的私有镜像克隆装置的示意性框图。该装置包括用于执行上述私有镜像克隆方法所对应的单元。如图6所示,该私有镜像克隆装置100包括设置单元101、目的仓库确定单元102、物理机判断单元103、原仓库确定单元104、镜像判断单元105、下载单元106、克隆单元107。
[0105] 设置单元101,用于若接收到私有镜像克隆指令,获取所述克隆指令中的原私有镜像,并根据所述克隆指令调用预设设置接口,以接收通过所述预设设置接口设置的需克隆的目的应用环境和目的区域。
[0106] 目的仓库确定单元102,用于根据所述目的应用环境和目的区域确定目的镜像仓库。
[0107] 物理机判断单元103,用于判断产生所述克隆指令的物理机上是否存在所述原私有镜像。
[0108] 克隆单元107,用于若产生所述克隆指令的物理机上存在所述原私有镜像,将所述原私有镜像克隆至所述目的镜像仓库。
[0109] 原仓库确定单元104,用于若产生所述克隆指令的物理机上不存在所述原私有镜像,根据所述原私有镜像的信息确定原镜像仓库。
[0110] 镜像判断单元105,用于判断所述原镜像仓库中是否存在所述原私有镜像。
[0111] 下载单元106,用于若所述原镜像仓库中存在所述原私有镜像,从所述原镜像仓库中下载所述原私有镜像到所述物理机上。
[0112] 克隆单元107,还用于若产生所述克隆指令的物理机上存在所述原私有镜像,将所述原私有镜像克隆至所述目的镜像仓库。
[0113] 在一实施例中,如图6所示,所述私有镜像克隆装置100还包括更新单元108。更新单元108,用于在数据库中添加克隆后的私有镜像的信息。
[0114] 在另一实施例中,所述私有镜像克隆装置100还包括权限获取单元、权限判断单元。其中,权限获取单元,用于获取登陆用户的权限。权限判断单元,用于判断登陆用户的权限与预设权限是否相同。若登陆用户的权限与预设权限相同,触发设置单元101。若登陆用户的权限与预设权限不相同,则进行提示。
[0115] 图7是本申请另一实施例提供的私有镜像克隆装置的示意性框图。如图7所示,该私有镜像克隆装置200包括设置单元201、目的仓库确定单元202、名称判断单元203、物理机判断单元204、原仓库确定单元205、镜像判断单元206、下载单元207、名称修改单元208以及克隆单元209。其中,该实施例与图6所示的实施例的区别在于:增加了名称判断单元203、名称修改单元208。而本实施例中的设置单元201、目的仓库确定单元202、物理机判断单元204、原仓库确定单元205、镜像判断单元206、下载单元207、克隆单元209与图6实施例中的设置单元101、目的仓库确定单元102、物理机判断单元103、原仓库确定单元104、镜像判断单元105、下载单元106、克隆单元107一一对应,在次不再赘述。下面将介绍该实施例与图6所示的实施例的区别之处。
[0116] 名称判断单元203,用于根据所述克隆后的私有镜像名称在目的镜像仓库中查找是否存在名称相同的私有镜像。若在目的镜像仓库中不存在名称相同的私有镜像,触发物理机判断单元204。
[0117] 名称修改单元208,用于将所述物理机上的所述原私有镜像的名称修改为所设置的所述克隆后的私有镜像名称。接着触发克隆单元209。
[0118] 在一实施例中,如图7所示,所述私有镜像克隆装置200还包括更新单元210。更新单元210,用于在数据库中添加克隆后的私有镜像的信息。
[0119] 图8是本申请另一实施例提供的私有镜像克隆装置的示意性框图。如图8所示,该私有镜像克隆装置300包括设置单元301、目的仓库确定单元302、名称判断单元303、物理机判断单元304、原仓库确定单元305、镜像判断单元306、下载单元307、名称修改单元308、克隆单元309、更新单元310、编辑获取单元311、编辑单元312。该实施例与图7所示的实施例的区别在于:增加了编辑获取单元311、编辑单元312。其他单元与图7实施例的单元一一对应,具体请参看图7实施例的描述,在此不再赘述。下面将介绍该实施例与图7实施例的区别之处。
[0120] 编辑获取单元311,用于若接收到编辑指令,获取所述编辑指令中的待编辑的私有镜像,所述待编辑的私有镜像包括克隆后的私有镜像。
[0121] 编辑单元312,用于根据所述编辑指令调用编辑接口,以接收通过所述编辑接口设置的所述待编辑的私有镜像的修改信息。
[0122] 更新单元310,还用于若接收到编辑完成指令,接收所述待编辑的私有镜像的修改信息,并将所述修改信息更新至数据库。
[0123] 图9是本申请另一实施例提供的私有镜像克隆装置的示意性框图。如图9所示,该私有镜像克隆装置400包括设置单元401、目的仓库确定单元402、名称判断单元403、物理机判断单元404、原仓库确定单元405、镜像判断单元406、下载单元407、名称修改单元408、克隆单元409、更新单元410、创建获取单元411、创建单元412。该实施例与图7所示的实施例的区别在于:增加了创建获取单元411、创建单元412。其他单元与图7实施例的单元一一对应,具体请参看图7实施例的描述,在此不再赘述。下面将介绍该实施例与图7实施例的区别之处。
[0124] 创建获取单元411,用于若接收到应用创建指令,获取所述应用创建指令中的私有镜像,所述应用创建指令中的私有镜像包括克隆后的私有镜像。
[0125] 创建获取单元411,还用于根据所述应用创建指令调用设置接口,以接收通过所述设置接口设置的需创建的容器应用的信息,其中,容器应用的信息中的容器应用的镜像为所述应用创建指令中的私有镜像。
[0126] 创建单元412,用于根据所述应用创建指令中的私有镜像和所设置的容器应用的信息创建容器应用。
[0127] 在一实施例中,更新单元410,还用于将所创建的容器应用的信息更新至数据库。
[0128] 在一实施例中,所设置的容器应用的镜像信息包括容器应用的应用环境、容器应用的区域、容器应用的容器实例数量。如图10所示,创建单元412包括IP确定单元4121、宿主机确定单元4122、容器创建单元4123。
[0129] IP确定单元4121,用于根据所述容器应用的应用环境、容器应用的区域、容器应用的容器实例数量确定所述容器应用的容器实例的IP。
[0130] 宿主机确定单元4122,用于根据所述容器应用的应用环境、容器应用的区域、容器应用的容器实例数量、所述应用创建指令中的私有镜像确定创建所述容器应用的容器实例的宿主机。
[0131] 容器创建单元4123,用于根据所述应用创建指令中的私有镜像在所确定的宿主机上创建容器应用的容器实例,并将所确定的IP设置为所创建的容器实例的IP。
[0132] 在一实施例中,所设置的容器应用的信息还包括器应用的使用时间、容器应用的资源组等。所述创建单元412还包括金额判断单元4121a。其中,金额判断单元4121a,用于根据所述容器实例的使用时间、所述容器应用的资源组、所述容器应用的容器实例数量来判断所述容器应用的资源组中是否有足够金额以用来创建该容器应用的容器实例。
[0133] 若容器应用的资源组没有足够金额来创建,返回创建失败的原因。若有足够金额来创建该容器应用的容器实例,触发IP确定单元4121。
[0134] 在一实施例中,所设置的容器应用的信息还包括启用监控信息,所述创建单元412还包括监控启用单元。其中,监控启用单元,用于将容器实例对应的启用监控信息中的启用监控标识推送到所确定的宿主机上,以根据宿主机的监控进程收集该容器实例的运行数据信息。如监控容器应用的容器实例的CPU、内存等资源运行数据信息。
[0135] 需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
[0136] 上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图11所示的计算机设备上运行。
[0137] 图11为本申请实施例提供的一种计算机设备的示意性框图。该设备为终端等设备,如PaaS平台中的服务器等。该设备100包括通过系统总线101连接的处理器102、存储器和网络接口103,其中,存储器可以包括非易失性存储介质104和内存储器105。
[0138] 该非易失性存储介质104可存储操作系统1041和计算机程序1042。该非易失性存储介质中所存储的计算机程序1042被处理器102执行时,可实现上述服务器中所述的私有镜像克隆方法。该处理器102用于提供计算和控制能力,支撑整个设备100的运行。该内存储器105为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器102执行时,可使得处理器102执行上述服务器中所述的私有镜像克隆方法。该网络接口103用于进行网络通信。本领域技术人员可以理解,图中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0139] 其中,所述处理器102用于运行存储在存储器中的计算机程序,以实现上述私有镜像克隆方法的任一实施例。
[0140] 应当理解,在本申请实施例中,所称处理器102可以是中央处理单元(Central Processing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(应用程序lication Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0141] 本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序可存储于一存储介质中,该存储介质可以为计算机可读存储介质。该计算机程序被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
[0142] 因此,本申请还提供了一种存储介质。该存储介质可以为计算机可读存储介质,该计算机可读存储介质包括非易失性计算机可读存储介质。该存储介质存储有计算机程序,该计算机程序当被处理器执行时实现上述私有镜像克隆方法的任一实施例。
[0143] 所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
[0144] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。