容器实例的创建方法、装置、电子设备及存储介质
技术领域
本发明涉及云技术和计算机技术领域,尤其涉及一种容器实例的创建方法、装置、电子设备及存储介质。
背景技术
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。目前,云技术已被广泛应用于后台服务需要大量计算、大量存储空间等各方面的情况,比如用于创建容器实例的镜像文件的存储等。
相关技术中,用户在创建容器实例的时候,是直接从镜像仓库中获取镜像文件,然后创建基于该镜像文件的容器实例。但是镜像仓库是无法保证其中存储的镜像文件是否会被篡改过,如果基于被篡改的镜像文件创建容器实例,则可能导致恶意容器的创建与运行,造成用户损失。
发明内容
本发明实施例提供一种容器实例的创建方法、装置、电子设备及存储介质,能够保证用于创建容器实例的镜像文件没有被任意篡改过,避免用户创建恶意容器实例的可能,提高用户使用容器的安全性。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种容器实例的创建方法,包括:
接收到容器实例的创建请求,所述创建请求携带用户信息;
响应于所述容器实例的创建请求,基于所述用户信息,获取用于创建容器实例的镜像文件、以及所述镜像文件对应的签名文件;
其中,所述签名文件为,基于与所述用户信息相对应的签名信息,对所述镜像文件进行签名处理得到;
基于所述镜像文件对应的签名文件,对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果;
当所述验证结果表征所述镜像文件为可信任文件时,基于所述镜像文件创建相应的容器实例。
本发明实施例还提供一种容器实例的创建装置,包括:
接收模块,用于接收到容器实例的创建请求,所述创建请求携带用户信息;
获取模块,用于响应于所述容器实例的创建请求基于所述用户信息,获取用于创建容器实例的镜像文件、以及所述镜像文件对应的签名文件;其中,所述签名文件为,基于与所述用户信息相对应的签名信息,对所述镜像文件进行签名处理得到;
验证模块,用于基于所述镜像文件对应的签名文件,对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果;
创建模块,用于当所述验证结果表征所述镜像文件为可信任文件时,基于所述镜像文件创建相应的容器实例。
上述方案中,所述验证模块,还用于解析所述签名文件,得到所述签名文件中的签名证书、及所述镜像文件对应的根证书;
对所述镜像文件对应的根证书进行验证,得到验证结果;
当所述验证结果表征所述签名证书为基于所述根证书签发时,基于所述签名证书,对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果。
上述方案中,所述验证模块,还用于解析所述签名证书,得到对应所述镜像文件的数字签名;
获取所述数字签名中的公钥及对应所述镜像文件的签名数据,所述签名数据为基于与所述公钥对应的私钥,对所述镜像文件的摘要加密得到;
采用所述公钥对所述签名数据解密,得到所述镜像文件的第一摘要;
基于镜像文件的第一摘要对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果。
上述方案中,所述验证模块,还用于对所述镜像文件进行哈希处理,得到所述镜像文件的第二摘要;
将所述镜像文件的第一摘要与所述第二摘要进行比对,得到比对结果;
当所述比对结果表征所述第一摘要与所述第二摘要一致时,表征所述镜像文件为可信任文件。
上述方案中,所述获取模块,还用于发送容器实例的镜像文件获取请求至远程镜像仓库;
接收所述远程镜像仓库返回的用于创建所述容器实例的镜像文件、以及所述镜像文件对应的签名文件。
上述方案中,所述接收模块,还用于接收到针对所述镜像文件的上传指令;
响应于所述上传指令,将所述镜像文件及对应所述镜像文件的用户信息上传至远程镜像仓库;
其中,所述用户信息,用于供所述远程镜像仓库查找到相应的签名信息,并基于所述签名信息对所述镜像文件进行签名处理,以得到所述镜像文件对应的签名文件。
上述方案中,所述镜像文件获取请求中携带对应所述镜像文件的用户信息,所述获取模块,还用于当所述远程镜像仓库基于所述用户信息查找到所述签名文件,并基于所述签名文件对所述镜像文件进行验证通过后,
接收所述远程镜像仓库返回的用于创建所述容器实例的镜像文件、以及所述镜像文件对应的签名文件。
上述方案中,所述镜像文件获取请求中携带对应所述镜像文件的用户信息,所述获取模块,还用于当所述远程镜像仓库基于所述用户信息进行用户身份验证通过后,
接收所述远程镜像仓库返回的用于创建所述容器实例的镜像文件、以及所述镜像文件对应的签名文件。
上述方案中,所述装置还包括:
第一存储模块,用于接收到针对所述签名信息的设置指令;
响应于所述设置指令,存储所述签名信息至所述远程镜像仓库。
上述方案中,所述装置还包括:
第二存储模块,用于存储所述镜像文件、以及所述镜像文件对应的签名文件至本地镜像仓库。
上述方案中,所述装置还包括:
销毁模块,用于销毁所述容器实例,并
在销毁所述容器实例之后,从所述本地镜像仓库中,获取所述镜像文件;
基于从所述本地镜像仓库获取的镜像文件创建相应的容器实例。
上述方案中,所述销毁模块,还用于发送容器实例的镜像文件获取请求至所述本地镜像仓库;
接收所述本地镜像仓库基于所述签名文件,对所述镜像文件验证通过后返回的所述镜像文件。
本发明实施例还提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的容器实例的创建方法。
本发明实施例还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,实现本发明实施例提供的容器实例的创建方法。
本发明实施例具有以下有益效果:
在创建容器实例时,获取用于创建容器实例的镜像文件、以及该镜像文件对应的签名文件;进而通过签名文件对镜像文件进行验证,得到验证结果,只有当验证结果表征针对镜像文件验证通过时,才基于该镜像文件创建容器实例;如此,在创建容器实例之前,通过签名文件对镜像文件进行验证,能够保证用于创建容器实例的镜像文件没有被任意篡改过,从而避免用户创建并启动恶意容器实例的可能,提高用户使用容器的安全性。
附图说明
图1A-F是相关技术中提供的容器实例的创建方法;
图2是本发明实施例提供的容器实例的创建方法的实施场景示意图;
图3是本发明实施例提供的电子设备的结构示意图;
图4是本发明实施例提供的容器实例的创建方法的流程示意图;
图5A为本发明实施例提供的容器实例的创建方法的流程示意图;
图5B为本发明实施例提供的容器实例的创建方法的流程示意图;
图6为本发明实施例提供的容器实例的创建方法的流程示意图;
图7为本发明实施例提供的上传镜像文件到远程镜像仓库的方法的流程示意图;
图8是本发明实施例提供的用于签名的相关信息的设置示意图;
图9为本发明实施例提供的拉取镜像文件到本地镜像仓库的方法的流程示意图;
图10A是本发明实施例提供的容器实例的创建方法的流程示意图;
图10B是本发明实施例提供的容器实例的创建方法的流程示意图;
图11是本发明实施例提供的容器实例的创建方法的流程图;
图12是本发明实施例提供的容器实例的创建装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解, “一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
2)Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
3)容器,是独立运行的一个或一组应用、及他们的运行环境。容器是Docker中的一个重要的概念,是完全使用沙箱机制,相互之间不会有任何接口。
4)镜像文件,镜像是一种文件存储形式,可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里;用GHOST等软件打开后,又恢复成许多文件。
5)镜像仓库,是Docker集中存放镜像文件的场所。
6)签名,即数字签名,只有信息的发送者才能产生的、别人无法伪造的一段数字串,同时也是对信息的发送者发送信息真实性的有效证明;数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证,是非对称密钥加密技术与数字摘要技术的应用。
7)根证书,是未被签名的公钥证书或自签名的证书,是CA认证中心给自己颁发的证书,是信任链的起始点。根证书包含三部分,用户的信息,用户的公钥,还有CA中心对该证书里面的信息的签名。
8)数字证书,即签名证书,是指在互联网通讯中标志通讯各方身份信息的一个数字认证,可以在网上用它来识别对方的身份,数字证书对网络用户在计算机网路交流中的信息和数据等以加密或解密的形式保证了信息和数据的完整性和安全性。
参见图1A-F,图1A-F是相关技术中提供的容器实例的创建方法。这里,结合图1B,参见图1A所示的镜像文件的上传流程,包括:步骤a1、通过用户客户端Push镜像文件到Docker代理;步骤a2、Docker代理将镜像文件Push到远程镜像仓库;这里,远程镜像仓库可对镜像文件进行签名;步骤a3、远程镜像仓库返回镜像文件的提交结果至Docker代理;步骤a4、Docker代理返回镜像文件的提交结果至用户客户端。
继续地,结合图1D,参见图1C所示的镜像文件的获取流程,包括:步骤b1、通过用户客户端发送Pull镜像文件的请求至Docker代理;步骤b2、Docker代理将Pull镜像文件的请求发送至远程镜像仓库;这里,远程镜像仓库对镜像文件进行签名验证;步骤b3、验证通过后,远程镜像仓库将镜像文件返回Docker代理;步骤b4、Docker代理将返回的镜像文件发送至本地镜像仓库;步骤b5、本地镜像仓库保存镜像文件并返回存储结果至Docker代理;步骤b6、Docker代理将镜像文件的存储结果返回用户客户端。
继续地,结合图1F,如图1E所示的容器实例的创建流程,包括:步骤c1、通过用户客户端发送创建容器实例的请求至Docker代理;步骤c2、Docker代理接收到创建容器实例的请求,从本地镜像仓库获取到镜像文件;步骤c3、Docker代理基于获取的镜像文件创建容器实例。
基于此,发现用户在通过客户端Push和Pull镜像文件的过程中,签名服务仅针对远程镜像仓库进行签名和验签处理,只能保证镜像文件在远程镜像仓库是安全不可篡改的。保存在本地镜像仓库的镜像文件并没有进行签名处理,而用户在创建容器的时候,如果从本地镜像仓库获取镜像文件,则无法保证其中存储的镜像文件是否会被篡改过,如果基于被篡改的镜像文件创建容器实例,则可能导致恶意容器的运行,造成用户损失。
基于此,本发明实施例提供一种容器实例的创建方法、装置、电子设备及存储介质,以至少解决上述存在的问题,接下来分别说明。
基于上述对本发明实施例中涉及的名词和术语的解释,下面说明本发明实施例提供的容器实例的创建方法的实施场景,参见图2,图2是本发明实施例提供的容器实例的创建方法的实施场景示意图,为实现支撑一个示例性应用,终端(包括终端200-1和终端200-2),其中终端200-1是开发者用户侧(镜像文件上传者)的终端,终端200-2为普通用户侧(非镜像文件上传者)的终端;终端200-1和终端200-2通过网络30连接服务器100,网络30可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
终端200-1,用于响应于上传指令,发送镜像文件至服务器100,以通过服务器100上传至镜像仓库;
服务器100,用于接收到镜像文件后,将镜像文件上传到镜像仓库;
终端200-2,用于发送容器实例的创建请求至服务器100;
服务器100,还用于获取容器实例的镜像文件、以及镜像文件对应的签名文件;基于签名文件对镜像文件进行验证,得到验证结果;当验证结果表征针对镜像文件验证通过时,返回验证通过的结果给终端200-2;
终端200-2,还用于基于镜像文件创建相应的容器实例。
在实际应用中,服务器100可以是Docker代理服务器。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本发明在此不做限制。
下面对本发明实施例提供的容器实例的创建方法的电子设备的硬件结构做详细说明,电子设备包括但不限于服务器或终端。参见图3,图3是本发明实施例提供的电子设备的结构示意图,图3所示的电子设备300包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。电子设备300中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。
存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器350旨在包括任意适合类型的存储器。
在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
呈现模块353,用于经由一个或多个与用户接口330相关联的输出装置331(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
输入处理模块354,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本发明实施例提供的容器实例的创建装置可以采用软件方式实现,图3示出了存储在存储器350中的容器实例的创建装置355,其可以是程序和插件等形式的软件,包括以下软件模块:接收模块3551、获取模块3552、验证模块3553和创建模块3554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的容器实例的创建装置可以采用软硬件结合的方式实现,作为示例,本发明实施例提供的容器实例的创建装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的容器实例的创建方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable LogicDevice)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
基于上述对本发明实施例的容器实例的创建方法的实施场景及电子设备的说明,下面说明本发明实施例提供的容器实例的创建方法。参见图4,图4是本发明实施例提供的容器实例的创建方法的流程示意图;在一些实施例中,该容器实例的创建方法可由服务器或终端单独实施,或由服务器及终端协同实施,以服务器实施为例,本发明实施例提供的容器实例的创建方法包括:
步骤401:服务器接收到容器实例的创建请求。
步骤402:响应于容器实例的创建请求,基于用户信息,获取用于创建容器实例的镜像文件、以及镜像文件对应的签名文件。
这里,该创建请求中携带有用户信息(比如用户标识),该用户信息用于供远程镜像仓库查找到该用户信息相对应的签名信息,并基于查找到的该签名信息对镜像文件进行签名处理,以得到镜像文件对应的签名文件。
在实际应用中,该服务器可以是Docker代理服务器,该Docker代理服务器中集成了验签服务。用户在开始创建容器实例时,通过终端设置的客户端发送容器实例的创建请求至Docker代理服务器,Docker代理服务器响应于该容器实例的创建请求,获取用于创建容器实例的镜像文件。同时还获取该镜像文件对应的签名文件,用于验证该镜像文件,以保证该镜像文件的完整性与安全性。
为得到镜像文件对应的签名文件,需要设置例如数字证书、签名私钥等签名信息,以便对镜像文件进行签名,在一些实施例中,服务器可通过如下方式设置相关的签名信息:接收到针对签名信息的设置指令;响应于设置指令,存储签名信息至远程镜像仓库。
这里,在本发明实施例中,针对上传镜像文件的用户均设置了对应的数字证书和签名私钥等签名信息。为保证数字证书来源的可信性,还设置了根证书,以基于根证书来签发各用户的数字证书。
服务器在接收到针对用户的签名信息的设置指令后,响应于该设置指令,将设置的用户对应的数字证书、签名私钥、根证书等签名信息存储至远程镜像仓库,以用于后续的镜像文件签名。
在创建容器实例时,需要获取镜像文件,比如可以直接在镜像仓库中获取,此时则需要在镜像仓库中存储镜像文件。因此,在一些实施例中,服务器可通过如下方式将镜像文件上传至镜像仓库:接收到针对镜像文件的上传指令;响应于上传指令,将镜像文件及对应镜像文件的用户信息上传至远程镜像仓库。
这里,用户信息(比如用户标识),用于供远程镜像仓库查找到该用户信息对应的签名信息,并基于签名信息对镜像文件进行签名处理,以得到镜像文件对应的签名文件。
当用户需要将开发的镜像文件上传到镜像仓库时,可向服务器发送针对镜像文件的上传指令。服务器接收到该上传指令后,响应于该上传指令,将镜像文件、以及镜像文件上传者的用户信息上传至远程镜像仓库。
远程镜像仓库中存储有用户信息及用户签名信息的对应关系。当远程镜像仓库接收到该镜像文件后,为保证镜像文件在后续使用中的完整性和安全性,对该镜像文件进行签名处理。具体地,远程镜像仓库基于镜像文件对应的用户信息,查找到该用户信息对应的签名信息,从而基于查找到的签名信息对镜像文件进行签名处理,具体是通过签名信息中包含的用户签名私钥,对镜像文件的摘要进行加密,得到镜像文件对应的签名数据,然后基于得到的签名数据、数字证书以及根证书生成镜像文件对应的签名文件。最后,远程镜像仓库将签名处理后的镜像文件、以及镜像文件对应的签名文件进行存储。
基于此,在创建容器实例时,服务器可通过如下方式获取镜像文件:发送容器实例的镜像文件获取请求至远程镜像仓库;接收远程镜像仓库返回的用于创建容器实例的镜像文件、以及镜像文件对应的签名文件。
服务器接收到用户触发的容器实例创建指令,响应于该创建指令,发送容器实例的镜像文件获取请求至远程镜像仓库。
在一些实施例中,该镜像文件获取请求中携带对应镜像文件的用户信息;如此,服务器可基于如下方式获取到镜像文件及对应的签名文件:当远程镜像仓库基于用户信息进行用户身份验证通过后,接收远程镜像仓库返回的用于创建容器实例的镜像文件、以及镜像文件对应的签名文件。
由于镜像文件获取请求中携带对应镜像文件的用户信息,远程镜像仓库在接收到该镜像文件获取请求后,基于获取请求中携带的用户信息,对该用户信息进行用户身份验证,具体是确定该用户信息所对应的用户是否具备获取镜像文件的权限等。
当远程镜像仓库确定该用户身份验证通过后,将获取请求中指定获取的镜像文件、以及该镜像文件对应的签名文件返回给服务器,以通过该服务器返回至用户端。
在一些实施例中,该镜像文件获取请求中携带对应镜像文件的用户信息;服务器还可基于如下方式获取到镜像文件及对应的签名文件:当远程镜像仓库基于用户信息查找到签名文件,并基于签名文件对镜像文件进行验证通过后,接收远程镜像仓库返回的用于创建容器实例的镜像文件、以及镜像文件对应的签名文件。
这里,远程镜像仓库在接收到该镜像文件获取请求后,为保证远程镜像仓库中存储的境外文件未被篡改,在查找到用户想要获取的镜像文件后,基于获取请求中该镜像文件的用户信息,查找到镜像文件对应的签名文件,基于该签名文件对镜像文件进行签名验证。当基于签名文件对镜像文件进行验证通过后,将获取请求中指定获取的镜像文件、以及该镜像文件对应的签名文件返回给服务器,以通过服务器返回至用户。
服务器接收远程镜像仓库返回的镜像文件、以及镜像文件对应的签名文件。
应用上述实施例,通过签名私钥和签名证书对镜像文件进行签名,以得到签名文件,在用户获取用于创建容器实例的镜像文件时,将镜像文件和签名文件均返回用户,以保证在创建过程中,可以通过签名文件对镜像文件进行签名验证,从而基于验证结果确定是否创建基于该镜像文件的容器实例,保证了镜像文件的完整性,避免用户创建并启动恶意容器的可能,提高用户使用容器的安全性。
步骤403:基于镜像文件对应的签名文件,对镜像文件进行验证,得到用于表征镜像文件是否为可信任文件的验证结果。
服务器获取到镜像文件、以及镜像文件对应的签名文件后,通过该签名文件对镜像文件进行验证,得到用于表征镜像文件是否为可信任文件的验证结果。这里,可信任文件即为未被恶意篡改的、完整安全的镜像文件。
在一些实施例中,服务器可通过如下方式通过签名文件对镜像文件进行验证:解析签名文件,得到签名文件中的签名证书、及镜像文件对应的根证书;对镜像文件对应的根证书进行验证,得到验证结果;当验证结果表征签名证书为基于根证书签发时,基于签名证书,对镜像文件进行验证,得到用于表征镜像文件是否为可信任文件的验证结果。
这里,对镜像文件对应的签名文件进行解析,得到签名文件中包含的签名证书、镜像文件对应的根证书以及签名数据。首先,对该镜像文件对应的根证书进行验证,确定签名文件中的签名证书是否基于根证书签发,得到验证结果。当该验证结果表征签名证书为基于根证书签发时,继续基于该签名证书,对镜像文件的签名进行验证。
在一些实施例中,服务器可通过如下方式基于签名证书,对镜像文件进行验证:解析签名证书,得到对应镜像文件的数字签名;获取数字签名中的公钥及对应镜像文件的签名数据,其中签名数据为基于与公钥对应的私钥,对镜像文件的摘要加密得到;采用公钥对签名数据解密,得到镜像文件的第一摘要;基于镜像文件的第一摘要对镜像文件进行验证,得到用于表征镜像文件是否为可信任文件的验证结果。
这里,首先对签名证书进行解析,即通过根证书对应的公钥对签名证书进行解密,得到签名证书中的对应镜像文件的数字签名。然后获取数字签名中的用户公钥及对应镜像文件的签名数据,其中该签名数据为基于该用户公钥对应的私钥,对镜像文件的摘要加密得到。基于此,可基于该用户公钥对签名数据进行解密,得到镜像文件的第一摘要,从而基于第一摘要对镜像文件进行验证。
在一些实施例中,服务器可通过如下方式基于镜像文件的第一摘要对镜像文件进行验证:对镜像文件进行哈希处理,得到镜像文件的第二摘要;将镜像文件的第一摘要与第二摘要进行比对,得到比对结果;当比对结果表征第一摘要与第二摘要一致时,表征镜像文件为可信任文件。
这里,服务器在基于签名证书得到镜像文件的第一摘要后,对镜像文件进行哈希处理,得到镜像文件的第二摘要。将第一摘要和第二摘要进行比对验证,得到比对结果,即上述签名文件针对镜像文件的验证结果。当该比对结果表征第一摘要与第二摘要一致时,则表征镜像文件为可信任文件;当该比对结果表征第一摘要与第二摘要不一致时,则表征镜像文件为不可信任文件。
步骤404:当验证结果表征镜像文件为可信任文件时,基于镜像文件创建相应的容器实例。
在基于签名文件对镜像文件进行验证得到用于表征镜像文件是否为可信任文件的验证结果后,基于该验证结果,创建基于镜像文件的容器实例。
具体地,当该验证结果表征镜像文件为可信任文件时,则表明该镜像文件没有被篡改,此时基于该镜像文件创建相应的容器实例;当该验证结果表征镜像文件为不可信任文件时,则表明该镜像文件存在被篡改的风险,此时为保证用户创建并启动容器实例的安全性,结束此次容器实例的创建,即不基于该镜像文件创建容器实例。
在一些实施例中,当验证结果表征镜像文件为可信任文件时,服务器可存储镜像文件、以及镜像文件对应的签名文件至本地镜像仓库。
基于此,在基于镜像文件创建相应的容器实例之后,服务器还可销毁容器实例,并在销毁容器实例之后,从本地镜像仓库中,获取镜像文件;基于从本地镜像仓库获取的镜像文件创建相应的容器实例。
在一些实施例中,服务器可通过如下方式从本地镜像仓库中,获取镜像文件:发送容器实例的镜像文件获取请求至本地镜像仓库;接收本地镜像仓库基于签名文件,对镜像文件验证通过后返回的镜像文件。
这里,在获取镜像文件时,本地镜像仓库也可基于签名文件对镜像文件进行签名验证,并在验证通过后,将指定获取的镜像文件返回。
应用本发明上述实施例,在创建容器实例时,获取用于创建容器实例的镜像文件、以及该镜像文件对应的签名文件;进而通过签名文件对镜像文件进行验证,得到验证结果,只有当验证结果表征针对镜像文件验证通过时,才基于该镜像文件创建容器实例;如此,在创建容器实例之前,通过签名文件对镜像文件进行验证,能够保证用于创建容器实例的镜像文件没有被任意篡改过,从而避免用户创建并启动恶意容器实例的可能,提高用户使用容器的安全性。
接下来继续对本发明实施例提供的容器实例的创建方法进行说明,参见图5A,图5A为本发明实施例提供的容器实例的创建方法的流程示意图,本发明实施例提供的容器实例的创建方法包括:
步骤501:终端发送容器实例的创建请求至代理服务器。
这里,终端设置有客户端,用户可通过客户端触发容器实例的创建请求。终端将用户触发的容器实例的创建请求发送至Docker代理服务器。该Docker代理服务器中集成了验签服务。用户在开始创建容器实例时,通过终端设置的客户端发送容器实例的创建请求至Docker代理服务器。
步骤502:代理服务器响应于该创建请求,发送容器实例的镜像文件获取请求至远程镜像仓库。
这里,Docker代理服务器响应于该容器实例的创建请求,获取用于创建容器实例的镜像文件。具体地,可通过向远程镜像仓库发送镜像文件获取请求来得到。
同时Docker代理服务器还可获取该镜像文件对应的签名文件,用于验证该镜像文件,以保证该镜像文件的完整性与安全性。
步骤503:远程镜像仓库响应于该获取请求,对获取请求指定获取的镜像文件进行签名验证。
这里,在对镜像文件进行签名验证之前,首先对发送该获取请求的用户身份和权限进行验证,具体的该获取请求中可以携带有用户信息,可以基于该用户信息,验证该获取请求对应的用户是否具备从远程镜像仓库获取镜像文件的权限。当对该用户的身份和权限验证通过后,对获取请求指定获取的镜像文件进行签名验证,以验证远程镜像仓库中镜像文件的完整性。
步骤504:签名验证通过后,将镜像文件、以及镜像文件对应的签名文件返回代理服务器。
步骤505:代理服务器接收到镜像文件、以及镜像文件对应的签名文件,基于签名文件对镜像文件进行验证,确定是否验证通过,如果是,则执行步骤506,如果否,则执行步骤507。
这里,代理服务器解析签名文件,得到签名文件中的签名证书、及镜像文件对应的根证书;对镜像文件对应的根证书进行验证。
当验证确定签名证书为基于根证书签发时,解析签名证书,得到对应镜像文件的数字签名;获取数字签名中的公钥及对应镜像文件的签名数据;采用公钥对签名数据解密,得到镜像文件的第一摘要;
对镜像文件进行哈希处理,得到镜像文件的第二摘要;将镜像文件的第一摘要与第二摘要进行比对,得到比对结果;当比对结果表征第一摘要与第二摘要一致时,表征镜像文件为可信任文件,即验证通过,执行步骤506;
当比对结果表征第一摘要与第二摘要不一致时,表征镜像文件为不可信任文件,即验证不通过,执行步骤507;
步骤506:基于镜像文件创建相应的容器实例。
步骤507:结束容器实例的创建。
下面继续结合图5A和图5B对本发明实施例提供的容器实例的创建方法进行说明,参见图5B,图5B为本发明实施例提供的容器实例的创建方法的流程示意图,本发明实施例提供的容器实例的创建方法包括:
步骤50a:代理服务器接收到容器实例的创建请求。
这里,终端设置有客户端,用户可通过客户端触发容器实例的创建请求。终端将用户触发的容器实例的创建请求发送至Docker代理服务器。该Docker代理服务器中集成了验签服务。用户在开始创建容器实例时,通过终端设置的客户端发送容器实例的创建请求至Docker代理服务器。
步骤50b:发送容器实例的镜像文件获取请求至远程镜像仓库。
这里,Docker代理服务器响应于该容器实例的创建请求,获取用于创建容器实例的镜像文件。具体地,可通过向远程镜像仓库发送镜像文件获取请求来得到,以基于从远程镜像仓库获取的镜像文件进行容器实例的创建。
步骤50c:当远程镜像仓库对镜像文件进行签名验证通过后,接收到远程镜像仓库返回的镜像文件、以及对应的签名文件。
这里,远程镜像仓库接收到镜像文件获取请求后,为保证远程镜像仓库存储的镜像文件的安全性和完整性,对镜像文件进行签名验证。在实际应用中,在对镜像文件进行签名验证之前,还对发送该获取请求的用户身份和权限进行验证,具体的该获取请求中可以携带有用户信息,可以基于该用户信息,验证该获取请求对应的用户是否具备从远程镜像仓库获取镜像文件的权限。当对该用户的身份和权限验证通过后,对获取请求指定获取的镜像文件进行签名验证,以验证远程镜像仓库中镜像文件的完整性。只有在签名验证通过后,才将镜像文件返回代理服务器。
代理服务器接收远程镜像仓库返回的镜像文件。
步骤50d:基于签名文件对镜像文件进行签名验证,得到表征镜像文件是否为可信任文件的验证结果。
步骤50e:当验证结果表征镜像文件为可信任文件时,基于镜像文件创建容器实例。
接下来基于本地镜像仓库创建容器实例,继续对本发明实施例提供的容器实例的创建方法进行说明,参见图6,图6为本发明实施例提供的容器实例的创建方法的流程示意图,本发明实施例提供的容器实例的创建方法包括:
步骤601:代理服务器将从远程镜像仓库获取的镜像文件、以及镜像文件对应的签名文件,上传至本地镜像仓库。
这里,代理服务器在确定对镜像文件的签名验证通过后,即确定镜像文件为可信任文件时,将镜像文件和签名文件上传至本地镜像仓库,以方便后续可直接基于本地镜像仓库创建容器实例。
步骤602:本地镜像仓库接收并存储镜像文件、以及镜像文件对应的签名文件。
这里,本地镜像仓库接收到上传的镜像文件和签名文件时,将该镜像文件和对应的签名文件进行存储。
步骤603:代理服务器销毁创建的容器实例。
容器实例创建完成并运行结束后,代理服务器还可对创建的容器实例进行销毁处理。
步骤604:当需要再次创建基于该镜像文件的容器实例时,发送容器实例的镜像文件获取请求至本地镜像仓库。
当需要再次基于该镜像文件创建容器实例时,可直接从保存有该镜像文件的本地镜像仓库获取,简化镜像文件的获取流程。具体地,代理服务器向本地镜像仓库发送容器实例的镜像文件获取请求,以请求本地镜像仓库返回用于创建容器实例的镜像文件。
步骤605:本地镜像仓库基于存储的签名文件对镜像文件进行签名验证,确定是否验证通过,如果是,则执行步骤606,如果否,则执行步骤608。
这里,本地镜像仓库接收到代理服务器发送的镜像文件获取请求后,为保证本地镜像文件的安全性和完整性,首先对本地存储的镜像文件进行签名验证。当针对本地存储的镜像文件的验证通过时,则表征镜像文件为可信任文件,则执行步骤606,返回镜像文件至代理服务器;当针对本地存储的镜像文件的验证不通过时,则表征镜像文件为不可信任文件,则执行步骤608,以及时结束容器实例的创建,防止用户创建并运行恶意容器。
步骤606:返回镜像文件至代理服务器。
步骤607:代理服务器接收到返回的镜像文件,基于镜像文件创建相应的容器实例。
步骤608:结束容器实例的创建。
下面将说明本发明实施例在一个实际的应用场景中的示例性应用。
接下来首先对本发明实施例提供的上传镜像文件到远程镜像仓库的方法进行说明,参见图7,图7为本发明实施例提供的上传镜像文件到远程镜像仓库的方法的流程示意图,本发明实施例提供的上传镜像文件到远程镜像仓库的方法包括:
步骤701:终端响应于开发者用户触发的镜像文件上传指令,将该上传指令发送至Docker代理。
这里,终端设置有供开发者用户上传镜像文件的客户端,在开发环境下将镜像文件打包,发送至Docker代理。
步骤702:Docker代理接收到镜像文件的上传指令,响应于上传指令,将镜像文件上传至远程镜像仓库。
这里,该上传指令由开发者触发,其中携带有上传者(即开发者)的用户信息、镜像文件的信息(比如版本名)、以及镜像文件中哪些文件需要进行签名处理的信息。
步骤703:远程镜像仓库接收到镜像文件,并对镜像文件进行签名处理。
这里,该远程镜像仓库中存储有开发者用户的签名私钥和签名证书、以及用于签发签名证书的根证书和根私钥。该开发者用户的签名私钥和签名证书、根私钥和根证书为预先设置的。具体地,可提供接口供用户设置用于签名的相关信息(签名私钥、签名证书等),参见图8,图8是本发明实施例提供的用于签名的相关信息的设置示意图,这里,通过管理员设置签名的根证书和根私钥,由开发者用户设置自身相应的签名证书和签名私钥,为保证用户签名证书的可信性,该签名证书为基于根证书签发。在设置完根证书和根私钥、用户签名证书和签名私钥后,将其存储与远程镜像仓库。
远程镜像仓库接收到开发者用户上传的镜像文件后,首先对开发者用户的身份和权限进行验证,比如通过验证上传指令中的用户信息,确定该开发者用户是否具备上传镜像文件的权限;当确定开发者的身份和权限验证通过后,采用上传该镜像文件的开发者用户的签名私钥和签名证书,对该镜像文件进行签名。具体地,是通过签名私钥对镜像文件的摘要进行加密,得到镜像文件的签名。在实际应用中,还可针对镜像文件中的部分重要文件进行签名。
示例性地,开发者用户上传镜像文件:
docker push 镜像名:版本
-sigfiles /home/tom/bin/process_A:/home/tom/bin/config.ini //用户可以设置针对镜像文件中的某些重要文件签名。
签名处理后的结果:
[image] //整个镜像签名
Name=bitnami/mongodb:3.6
Signature=ACAE$0#AB
[item signature] //单个文件签名
File= /home/tom/bin/process_A //针对process_A文件签名
Signature=93$ACQ$
[item signature] //单个文件签名
File= / home/tom/bin/config.ini //针对config.ini文件签名
Signature=AAADDE$#@$!@
步骤704:将签名处理后的镜像文件进行存储,并返回存储成功的状态信息给Docker代理,以通过Docker代理返回开发者用户终端。
接下来继续对本发明实施例提供的拉取镜像文件到本地镜像仓库的方法进行说明,参见图9,图9为本发明实施例提供的拉取镜像文件到本地镜像仓库的方法的流程示意图,本发明实施例提供的拉取镜像文件到本地镜像仓库的方法包括:
步骤901:客户端发送镜像文件的获取请求至Docker代理。
这里,用户可通过客户端触发镜像文件的获取请求,该获取请求会先连接至Docker代理,该用户可以为开发者,也可以为不具备上传镜像文件权限的普通用户,即只能获取远程镜像仓库中已存储的镜像文件。
步骤902:Docker代理响应于该获取请求,将获取请求转发至远程镜像仓库。
步骤903:远程镜像仓库接收获取请求,对获取请求指定获取的镜像文件进行签名验证。
这里,在对镜像文件进行签名验证之前,首先对发送该获取请求的用户身份和权限进行验证,具体的该获取请求中可以携带有用户信息,可以基于该用户信息,验证该获取请求对应的用户是否具备从远程镜像仓库获取镜像文件的权限。当对该用户的身份和权限验证通过后,对获取请求指定获取的镜像文件进行签名验证,以验证远程镜像仓库中镜像文件的完整性。
步骤904:签名验证通过后,将镜像文件、以及镜像文件对应的签名文件通过Docker代理返回客户端。
这里,该签名文件包括镜像文件对应的签名、用户签名证书、以及根证书。
步骤905:客户端接收远程镜像仓库返回的镜像文件和签名文件,并将该镜像文件和签名文件上传至本地镜像仓库。
步骤906:本地镜像仓库存储镜像文件、以及镜像文件对应的签名文件,并返回镜像文件的存储状态。
基于上述实施例的说明,接下来继续对本发明实施例提供的容器实例的创建方法进行说明,参见图10A,图10A为本发明实施例提供的容器实例的创建方法的流程示意图,本发明实施例提供的容器实例的创建方法包括:
步骤1001:终端发送容器实例的创建请求至本地镜像仓库。
终端设置有客户端,用户可通过客户端触发容器实例的创建请求。终端将用户触发的容器实例的创建请求,通过Docker代理发送至本地镜像仓库。
步骤1002:本地镜像仓库响应于该创建请求,获取镜像文件,并向验签服务器发送对应该镜像文件的验签请求。
这里,为了保证获取的镜像文件的完整性,需要对该镜像文件进行验证。
步骤1003:验签服务器接收到验签请求后,获取该镜像文件对应的签名文件。
步骤1004:判断该镜像文件对应的签名文件是否存在,如果存在,则执行步骤1005,如果不存在,则执行步骤1011。
步骤1005:解析签名文件,得到签名文件中的签名证书、镜像文件对应的根证书,验证该签名证书是否为根证书签发,如果是,则执行步骤1006,如果不是,则执行步骤1011。
步骤1006:解析签名证书,得到签名证书中的签名信息,获取签名信息中的公钥和对应镜像文件的签名数据。
这里,该签名数据为基于该公钥对应的私钥,对镜像文件的摘要加密得到。
步骤1007:基于签名证书中的公钥和签名信息,验证是否与镜像文件的签名一致,如果一致,则执行步骤1008,如果不一致,则执行步骤1011。
这里,首先采用签名证书的公钥对签名信息中的签名数据进行解密,得到镜像文件的第一摘要;然后对镜像文件进行哈希处理,得到镜像文件的第二摘要;将第一摘要和第二摘要进行比对,当第一摘要和第二摘要一致时,则执行步骤1008,如果不一致,则执行步骤1011。
步骤1008:将针对镜像文件验证通过的结果返回本地镜像仓库。
步骤1009:本地镜像仓库接收到镜像文件验证通过的结果,基于镜像文件,创建容器实例。
步骤1010:终端运行创建的容器实例。
步骤1011:结束容器实例的创建或运行。
该验签过程可以由外置的验签服务器完成,还可以将验签服务内置到Docker代理中,以通过Docker代理来实现对镜像文件的验签。
具体地,可参见图11,图11是本发明实施例提供的容器实例的创建方法的流程图,这里,预先在远程镜像仓库中设置用户签名私钥和签名证书,以及用于签发用户签名证书的根证书(参见步骤d0.1-d0.2)。在开发者push镜像的过程中,对开发者用户push的镜像文件进行签名处理(参见步骤d2.1);并在用户从远程镜像仓库Pull镜像文件时,返回用户想要获取的镜像文件、以及该镜像文件对应的签名文件(参见步骤e3),该签名文件包括镜像文件的签名、签名证书以及根证书。
基于此,用户在创建容器实例时,从本地镜像仓库获取用于创建容器实例的镜像文件,并向验签服务器请求验证签名(参见步骤f2.1);验签服务器可基于签名文件对镜像文件进行验证,并返回验证结果(参见步骤f2.2-f2.3)。只有在验证通过时,才基于镜像文件创建容器实例。
接下来结合图10A和图10B,继续对本发明实施例提供的容器实例的创建方法进行说明,参见图10B,图10B为本发明实施例提供的容器实例的创建方法的流程示意图,本发明实施例提供的容器实例的创建方法包括:
步骤100a:在基于本地镜像仓库存储的镜像文件创建容器实例时,验签服务器接收到本地镜像仓库发送的针对镜像文件的验签请求。
这里,终端设置有客户端,用户可通过客户端触发容器实例的创建请求。终端将用户触发的容器实例的创建请求,通过Docker代理发送至本地镜像仓库,以基于本地镜像仓库存储的镜像文件创建容器实例。
此时,本地镜像仓库为保证镜像文件的完整性和安全性,向验签服务器发送针对镜像文件的验签请求。
步骤100b:响应于验签请求,查找该镜像文件对应的签名文件。
这里,验签服务器基于镜像文件,查找该镜像文件对应的签名文件,确定是否存在该镜像文件对应的签名文件。
步骤100c:当该镜像文件对应的签名文件存在时,解析该签名文件,得到签名文件中的签名证书、以及镜像文件对应的根证书。
这里,当该镜像文件对应的签名文件存在时,则继续进行验证。此时,解析该签名文件,得到签名文件中的签名证书、以及镜像文件对应的根证书。
确定该签名证书是否基于该根证书签发。
步骤100d:当确定签名证书为基于根证书签发时,则解析签名证书,得到签名证书中对应镜像文件的公钥和签名数据。
当确定签名证书为基于根证书签发时,则表征该签名证书为可信证书。此时解析该签名证书,得到签名证书中对应镜像文件的公钥和签名数据。该签名数据为基于该公钥对应的私钥,对镜像文件的摘要解密得到。
步骤100e:基于公钥对签名数据进行解密,得到镜像文件的第一摘要。
步骤100f:对镜像文件进行哈希处理,得到镜像文件的第二摘要,并将第一摘要与第二摘要进行比对,得到比对结果。
步骤100g:当比对结果表征镜像文件为可信任文件时,基于镜像文件创建容器实例。
应用上述实施例,用户在获取镜像文件时,还同时获取到该镜像文件对应的签名文件,基于此,在创建容器实例之前,可通过签名文件对镜像文件进行验证,能够保证用于创建容器实例的镜像文件没有被任意篡改过,从而避免用户创建并启动恶意容器实例的可能,提高用户使用容器的安全性。
下面继续说明本发明实施例提供的容器实例的创建装置355,在一些实施例中,容器实例的创建装置可采用软件模块的方式实现。参见图12,图12是本发明实施例提供的容器实例的创建装置355的结构示意图,本发明实施例提供的容器实例的创建装置355包括:
接收模块3551,用于接收到容器实例的创建请求,所述创建请求携带用户信息;
获取模块3552,用于响应于所述容器实例的创建请求基于所述用户信息,获取用于创建容器实例的镜像文件、以及所述镜像文件对应的签名文件;其中,所述签名文件为,基于与所述用户信息相对应的签名信息,对所述镜像文件进行签名处理得到;
验证模块3553,用于基于所述镜像文件对应的签名文件,对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果;
创建模块3554,用于当所述验证结果表征所述镜像文件为可信任文件时,基于所述镜像文件创建相应的容器实例。
在一些实施例中,所述验证模块3553,还用于解析所述签名文件,得到所述签名文件中的签名证书、及所述镜像文件对应的根证书;
对所述镜像文件对应的根证书进行验证,得到验证结果;
当所述验证结果表征所述签名证书为基于所述根证书签发时,基于所述签名证书,对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果。
在一些实施例中,所述验证模块3553,还用于解析所述签名证书,得到对应所述镜像文件的数字签名;
获取所述数字签名中的公钥及对应所述镜像文件的签名数据,所述签名数据为基于与所述公钥对应的私钥,对所述镜像文件的摘要加密得到;
采用所述公钥对所述签名数据解密,得到所述镜像文件的第一摘要;
基于镜像文件的第一摘要对所述镜像文件进行验证,得到用于表征所述镜像文件是否为可信任文件的验证结果。
在一些实施例中,所述验证模块3553,还用于对所述镜像文件进行哈希处理,得到所述镜像文件的第二摘要;
将所述镜像文件的第一摘要与所述第二摘要进行比对,得到比对结果;
当所述比对结果表征所述第一摘要与所述第二摘要一致时,表征所述镜像文件为可信任文件。
在一些实施例中,所述获取模块3552,还用于发送容器实例的镜像文件获取请求至远程镜像仓库;
接收所述远程镜像仓库返回的用于创建所述容器实例的镜像文件、以及所述镜像文件对应的签名文件。
在一些实施例中,所述接收模块3551,还用于接收到针对所述镜像文件的上传指令;
响应于所述上传指令,将所述镜像文件及对应所述镜像文件的用户信息上传至远程镜像仓库;
其中,所述用户信息,用于供所述远程镜像仓库查找到相应的签名信息,并基于所述签名信息对所述镜像文件进行签名处理,以得到所述镜像文件对应的签名文件。
在一些实施例中,所述镜像文件获取请求中携带对应所述镜像文件的用户信息,所述获取模块3552,还用于当所述远程镜像仓库基于所述用户信息查找到所述签名文件,并基于所述签名文件对所述镜像文件进行验证通过后,
接收所述远程镜像仓库返回的用于创建所述容器实例的镜像文件、以及所述镜像文件对应的签名文件。
在一些实施例中,所述镜像文件获取请求中携带对应所述镜像文件的用户信息,所述获取模块3552,还用于当所述远程镜像仓库基于所述用户信息进行用户身份验证通过后,
接收所述远程镜像仓库返回的用于创建所述容器实例的镜像文件、以及所述镜像文件对应的签名文件。
在一些实施例中,所述装置还包括:
第一存储模块,用于接收到针对所述签名信息的设置指令;
响应于所述设置指令,存储所述签名信息至所述远程镜像仓库。
在一些实施例中,所述装置还包括:
第二存储模块,用于存储所述镜像文件、以及所述镜像文件对应的签名文件至本地镜像仓库。
在一些实施例中,所述装置还包括:
销毁模块,用于销毁所述容器实例,并
在销毁所述容器实例之后,从所述本地镜像仓库中,获取所述镜像文件;
基于从所述本地镜像仓库获取的镜像文件创建相应的容器实例。
在一些实施例中,所述销毁模块,还用于发送容器实例的镜像文件获取请求至所述本地镜像仓库;
接收所述本地镜像仓库基于所述签名文件,对所述镜像文件验证通过后返回的所述镜像文件。
本发明实施例还提供一种电子设备,所述电子设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的容器实例的创建方法。
本发明实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的容器实例的创建方法。
本发明实施例还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,实现本发明实施例提供的容器实例的创建方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。计算机可以是包括智能终端和服务器在内的各种计算设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。