CN106487850B - 一种云环境下获取镜像的方法、装置和系统 - Google Patents
一种云环境下获取镜像的方法、装置和系统 Download PDFInfo
- Publication number
- CN106487850B CN106487850B CN201510546093.2A CN201510546093A CN106487850B CN 106487850 B CN106487850 B CN 106487850B CN 201510546093 A CN201510546093 A CN 201510546093A CN 106487850 B CN106487850 B CN 106487850B
- Authority
- CN
- China
- Prior art keywords
- mirror image
- image layer
- mirror
- layer
- virtual machine
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000003860 storage Methods 0.000 claims abstract description 347
- 238000007726 management method Methods 0.000 description 49
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000011664 signaling Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种云环境下获取镜像的方法和设备。公开了从远程镜像中心获取指定镜像的描述信息,指定镜像的描述信息包括指定镜像包含的各个镜像层的标识以及指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,第一镜像层为指定镜像包含的且允许共享的镜像层;从宿主物理机获取第一镜像层文件在宿主物理机的共享存储中的存储地址,并将第一镜像层的标识和第一镜像层文件在宿主物理机的共享存储中的存储地址记录到虚拟机的镜像层信息表中。本发明获取镜像的方法,有效的减少了物理机上的虚拟机对镜像文件的重复下载,提升容器部署速度。
Description
技术领域
本发明涉及云计算领域,尤其涉及一种云环境下获取镜像的方法、装置和系统。
背景技术
云计算是一种服务的交付和消费模式。云服务供应商(Cloud Service Provider,CSP)将大量计算资源用网络连接起来并进行统一的管理、分配和调度,构成一个巨大的计算资源池向用户提供服务。一般来说,云服务大致可分为3个层次,即基础设施即服务(IaaS,也称为I层)、平台即服务(PaaS,也称为P层)和软件即服务(SaaS,也称为S层)。目前,业界最多的为I层供应商(如Amazon的AWS平台)。I层主要为用户提供计算、存储、网络传输等基础设施能力,是以虚拟机技术为核心构建的应用运行平台。
随着以docker为代表的容器技术的兴起,业界出现了一种以docker容器作为应用程序运行形态的趋势。docker技术的初衷,是实现一个应用程序构建、分发、运行的统一平台,docker容器镜像则是对应用程序及其运行环境的一个标准化封装。应用程序随其运行环境、依赖、配置等打包成统一的容器镜像格式后,可以直接运行在任何安装有docker的操作系统环境中,无需进行其他的操作。相比传统应用程序部署方式,省去了切换运行环境后,需要重新进行依赖安装、环境配置等繁琐操作,因此,docker技术特别适合应用快速部署的场景。
一个完整的docker容器镜像包含两部分,一部分是镜像描述文件,描述了镜像的标识ID、镜像的大小、镜像的分层结构(每个镜像层的ID及镜像层之间的依赖关系)等信息。另一部分是镜像数据文件,也就是镜像的实际文件内容。镜像数据文件以分层的结构来保存,每个镜像层是一个单独的文件集合。例如一个完整的web应用镜像可能是由suse操作系统镜像层、apache软件镜像层以及app镜像层组成。当容器运行时,容器引擎会根据分层结构将各镜像层以只读模式从底层开始依次挂载到容器的运行环境中,并在最上层增加一个用于运行应用的可读写的层,容器运行时对镜像文件所有的修改都会写入可读写的层,原始的镜像文件不会做任何写操作。
Docker容器是从镜像开始的,镜像可以是本地创建的、本地缓存的,或者是从远程镜像中心中下载的。远程镜像中心中一般会提供一些基础的镜像,如各种版本的操作系统镜像,apache等常用软件镜像。用户可以在这些已有镜像的基础上创建用户自己的应用镜像,并上传到远程镜像中心。
容器部署的一个典型方式是,在一个物理机(PM)上安装虚拟机管理模块,虚拟机管理模块负责在这台PM上创建虚拟资源(计算、存储、网络等)。虚拟机管理模块会在PM上创建多台虚拟机(VM),每台VM作为实际运行容器的节点。每台VM上安装有容器管理模块,在VM上执行容器的创建、更新、删除等操作。在每台VM上还运行一个镜像管理模块,负责管理VM上的镜像。镜像管理模块保存了VM上的所有镜像的相关信息,一般包括镜像ID、镜像的分层结构、镜像数据文件地址等。镜像管理模块可以接收容器管理模块的镜像请求指令,从远程镜像中心下载相应镜像并保存到VM或者返回VM本地已保存镜像供容器管理模块使用。
具体的,VM收到创建容器的请求,在检查本地没有创建容器需要的指定镜像后,会启动下载指定镜像的流程。整个下载流程包括:
1、首先VM向远程镜像中心发送查询镜像的消息,消息中会包含要下载的指定镜像的标识。为了区分不同用户,消息中一般还会包含用户身份的标识,如预置的用户名密码或者token等;
2、远程镜像中心验证用户身份信息合法后,会返回VM指定镜像的信息,包含镜像的大小、镜像分层结构以及各镜像层的id等。
3、VM根据远程镜像中心返回的各镜像层的id,在VM本地已经存储的镜像层中查询哪些镜像层不存在。如果某些镜像层已经存在,则不需要下载这些已存在的镜像层;
4、对于VM本地不存在的镜像层,VM把这些镜像层加入VM的下载队列,逐一从远程镜像库下载这些镜像层到VM本地存储。下载过程中,远程镜像中心会验证下载请求的身份信息以确保用户是合法下载。
5、所有的镜像层都在本地存储存在以后,整个镜像的下载过程结束。
由上述过程可知,下载指定镜像时,VM根据远程镜像中心返回的镜像分层结构,在VM本地查询各个镜像层是否已经存储,如果已经存储,则VM不再下载该已经存储的镜像层。但是当在同一PM上的多台VM要下载镜像时,虽然下载的可能是不同的镜像,但是这些不同的镜像很有可能包含了相同的镜像层,特别是像操作系统镜像层、数据库等基础软件镜像层,会在很多镜像中包含,因此,同一PM上的多台VM可能会同时下载或者重复下载同一个镜像层文件。这样就造成了冗余的网络流量,并且相互之间也影响镜像的下载速度,从而影响了容器部署速度。
发明内容
本发明提供了一种云环境下获取镜像的方法,有效的减少了物理机上的虚拟机对镜像文件的重复下载,提升容器部署速度。
第一方面,本发明提供一种云环境下获取镜像的方法,包括:从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址;向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
结合第一方面,在第一方面的第一种可能的实现方式中,根据所述指定镜像的信息,确定虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心返回的第二镜像层文件,在本地存储所述第二镜像层文件,并将所述第二镜像层的标识和所述第二镜像层文件的存储地址记录到所述虚拟机的镜像层信息表中。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在所述从远程镜像中心获取指定镜像的描述信息之前,所述方法还包括:创建容器,确定所述虚拟机本地不存在所述指定镜像,其中所述指定镜像为创建所述容器所需的镜像。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述共享存储为创建在所述宿主物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。
第二方面,提供了一种云环境下获取镜像的方法,所述方法应用于物理机上,包括:接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识,其中,所述物理机为所述第一虚拟机的宿主物理机;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在所述物理机的共享存储中的镜像层文件的存储地址;向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;向所述第一虚拟机发送所述第一镜像层文件的存储地址。
结合第二方面,在第二方面的第一种可能的实现方式中,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中之后,所述方法还包括:接收第二虚拟机发送的获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识,其中,所述物理机为所述第二虚拟机的宿主物理机;根据所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件的存储地址;将所述第一镜像层文件的存储地址发送给所述第二虚拟机。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述共享存储为创建在所述物理机上,以便于以所述物理机为宿主物理机的虚拟机进行访问的存储空间。
第三方面,还提供了一种云环境下获取镜像的虚拟机,包括容器镜像管理模块:其中,所述容器镜像管理模块,用于从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址;向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
结合第三方面,在第三方面的第一种可能的实现方式中,所述虚拟机还包括私有存储,所述容器镜像管理模块,还用于根据所述指定镜像的信息,确定虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心返回的第二镜像层文件;所述私有存储,用于存储所述容器镜像管理模块接收的所述第二镜像层文件;所述容器镜像管理模块,还用于将所述第二镜像层的标识和所述第二镜像层文件在所述私有存储中的存储地址记录到所述虚拟机的镜像层信息表中。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述虚拟机还包括容器管理模块,所述容器管理模块,用于创建容器,确定所述虚拟机本地不存在所述指定镜像,其中所述指定镜像为创建所述容器所需的镜像;向所述容器镜像管理模块发送获取指定镜像的请求,所述获取指定镜像的请求包括所述指定镜像的名称;所述容器镜像管理模块,还用于接收所述容器管理模块发送的所述获取指定镜像的请求。
结合第三方面或第三方面的第一种实现方式或者第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述共享存储为创建在所述宿主物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。
第四方面,还提供了一种云环境下获取镜像的物理机,包括容器镜像管理模块和共享存储,其中:所述容器镜像管理模块,用于接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像的第一请求消息包括第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在共享存储中的镜像层文件的存储地址;向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件;其中,所述物理机为所述第一虚拟机的宿主物理机;所述共享存储,用于存储所述容器镜像管理模块接收到的所述第一镜像层文件;所述容器镜像管理模块,还用于将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中,并向所述第一虚拟机发送所述第一镜像层文件的存储地址。
结合第四方面,在第四方面的第一种可能的实现方式中,所述容器镜像管理模块,还用于在将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中之后,接收第二虚拟机发送的获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件的存储地址;将所述第一镜像层文件的存储地址发送给所述第二虚拟机,其中所述物理机为所述第二虚拟机的宿主物理机。
结合第四方面或第四方面的第一种实现方式,在第四方面的第二种可能的实现方式中,所述共享存储为创建在所述物理机上,以便于以所述物理机为宿主物理机的虚拟机进行访问的存储空间。
第五方面,还提供了一种云环境下获取镜像的系统,包括第一虚拟机、物理机和远程镜像中心,其中所述物理机为所述第一虚拟机的宿主物理机:所述第一虚拟机,用于从所述远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定第一虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述第一虚拟机的镜像层信息表包括所述第一虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述物理机的共享存储中的镜像层文件的存储地址;向所述物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述物理机返回的第一镜像层文件在所述物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述物理机的共享存储中的存储地址记录到所述第一虚拟机的镜像层信息表中;所述物理机,用于接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在共享存储中的镜像层文件的存储地址;向所述远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;所述远程镜像中心,用于接收所述物理机发送的获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;根据所述第一镜像层标识,获取所述第一镜像层文件,并将所述第一镜像层文件发送给所述物理机。
结合第五方面,在第五方面的第一种可能的实现方式中,所述第一虚拟机还用于根据所述指定镜像的信息,确定第一虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心返回的第二镜像层文件,在本地存储所述第二镜像层文件,并将所述第二镜像层的标识和所述第二镜像层文件的存储地址记录到所述第一虚拟机的镜像层信息表中;所述远程镜像中心,还用于接收所述第一虚拟机发送的获取第二镜像层的请求消息,根据所述获取第二镜像层的请求消息中包括的所述第二镜像层的标识,获取所述第二镜像层文件,并将所述第二镜像层文件发送给所述第一虚拟机。
结合第五方面或第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,所述的系统还包括第二虚拟机,用于向所述物理机发送获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识;接收所述物理机发送的所述第一镜像层文件在所述共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述共享存储中的存储地址记录到所述第二虚拟机的镜像层信息表中,其中所述物理机为所述第二虚拟机的宿主物理机;所述物理机,还用于接收所述第二虚拟机发送的获取第一镜像层的第三请求消息,根据所述获取第一镜像层的第三请求消息中包括的所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件在所述共享存储中的存储地址;将所述第一镜像层文件在所述共享存储中的存储地址发送给所述第二虚拟机。
根据本发明提供的技术方案,在物理机上建立有共享存储,建立在所述宿主物理机上的所有虚拟机都可以访问该共享存储。对于虚拟机的镜像层信息表中不存在且允许共享的镜像层,虚拟机从宿主物理机获取该镜像层文件在共享存储上的存储地址,而不需要虚拟机自身从远程镜像中心下载并保持在本地。通过本发明实施例提供的方法,虚拟机直接从宿主物理机获取可共享的镜像层的存储地址,并通过该存储地址访问镜像层文件,从而有效的减少虚拟机从远程镜像中心下载镜像层文件,提升了容器部署的速度。
附图说明
图1为本本发明一实施例所提供的一种云环境获取镜像的系统框图;
图2为本发明一实施例所提供一种云环境获取镜像的方法的流程图;
图3为本发明一实施例提供的又一种云环境获取镜像的方法的流程图;
图4为本发明一实施例提供的一种上传或下载镜像的方法的示意图;
图5为本发明一实施例提供的一种云环境下获取镜像的方法的示范性信令图;
图6为本发明一实施例提供的一种云环境下获取镜像的虚拟机的示范性逻辑结构示意图;
图7为本发明一实施例提供的又一种云环境下获取镜像的虚拟机的示范性逻辑结构示意图;
图8为本发明一实施例提供的一种云环境下获取镜像的物理机的示范性逻辑结构示意图;
图9为本发明一实施例提供的又一种云环境下获取镜像的物理机的示范性逻辑结构示意图;
图10为本发明一实施例提供的一种云环境下获取镜像的系统的示范性逻辑结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明具体实施例作进一步的详细描述。为了全面理解本发明,在以下详细描述中提到了众多具体细节。但是本领域技术人员应该理解,本发明可以无需这些具体细节实现。在其他实例中,不详细描述公知的方法、过程、组件和电路等,以免造成实施例不必要地模糊。显然,以下所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图1是依据本发明一实施例所提供的一种云环境获取镜像的系统框图。该系统包含多个设备,通过有线或者无线通信网络相互通信。其中,
远程镜像中心102:可以为网络中的一个VM或者PM,用于为系统中的VM或PM提供镜像下载和镜像保存的服务。远程镜像中心102可以包括一些基础的镜像,如各种版本的操作系统镜像,apache等常用软件镜像。用户可以在这些已有镜像的基础上创建用户自己的应用镜像,并上传到远程镜像中心102中保存。需要说明的是,远程镜像中心102中的镜像以分层的结构来存储,也就是说一个镜像包括一个或多个镜像层,每个镜像层都是一个单独的文件集合。镜像层分为公共镜像层和私有镜像层两种,其中公共镜像层可供任何人下载,具体可以是可共享的镜像层文件,而私有镜像层仅对合法用户(可提供用户名密码或者token等身份认证信息的用户)开放下载。
物理机PM 104:在PM104上创建有多台虚拟机VM 1041,容器运行在VM1041上,所述PM104成为VM1041的宿主物理机。在PM104上还包含PM容器镜像管理模块1042和一个可供PM上所有VM访问的共享存储1043,其中共享存储用来保存可共享的镜像层文件。在本发明中,PM104也称为VM1044的宿主物理机。
每台VM 1044上安装有容器管理模块10441,用于在VM上创建容器。在每台VM上还运行一个VM容器镜像管理模块10442,负责管理VM上的镜像。VM容器镜像管理模块10442保存了VM上的所有镜像的相关信息,一般包括镜像ID、镜像的分层结构、镜像层数据文件地址等。VM容器镜像管理模块10442可以接收容器管理模块10441的镜像请求指令,从远程镜像中心获取指定镜像的描述信息,该指定镜像的描述信息包括指定镜像的各个镜像层的标识以及每一个镜像层是否可以在该PM的不同VM之间共享的指示信息。对于私有存储10443中存在的镜像层,则该已经存在的镜像层不需要再下载;对于私有存储10443中不存在且可在VM间共享的镜像层X,VM容器镜像管理模块10442向其宿主机的PM容器镜像管理模块1042发送获取镜像层X的请求信息,如果PM的共享存储1043上存在该镜像层X,则PM容器镜像管理模块1042向VM返回该镜像层X在共享存储上的存储地址;如果PM的共享存储1043上不存在该镜像层X,则PM容器镜像管理模块1042从远程镜像中心102下载该镜像层X到PM上的共享存储1043,并向VM返回该镜像层X在共享存储上的存储地址。对于本地不存在但不能在VM间共享的镜像层Y,VM直接从远程镜像中心102下载该镜像层Y并将下载的镜像层Y存储到私有存储10443中。
以下结合附图详细说明本申请涉及的云环境下获取镜像方法、装置及系统的实现。
图2为本发明提供的一种云环境下获取镜像的方法的流程图,包括:
步骤202:从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;
可选的,在步骤202之前,所述方法还包括创建容器,确定虚拟机本地不存在创建所述容器所需的指定镜像。
具体的,所述从远程镜像中心获取指定镜像的描述信息,具体为:虚拟机向所述远程镜像中心发送获取指定镜像的描述信息的请求消息,该获取指定镜像的描述信息的请求消息包括所述指定镜像的名称;接收所述远程镜像中心根据所述指定镜像的名称获取的描述信息。
可选的,所述是否为允许共享的镜像层的指示信息可以是一个标识位,例如该标识位取值为1则表示对应的镜像层位允许共享的镜像层,取值为0则表示对应的镜像层是不允许共享的镜像层;所述是否为允许共享的镜像层的指示信息也可以是一个预定的字段,例如share字段,当该share字段取值true则表示对应的镜像层位允许共享的镜像层,取值为false则表示对应的镜像层是不允许共享的镜像层;所述指示信息也可以是其他任意形式,本发明对指示信息的具体表现形式不做限定。
示范性的,虚拟机从远程镜像中心获取指定镜像的描述信息的一种可能实现方式包括:
虚拟机向远程镜像中心发送的获取指定镜像的描述信息的请求消息为:
GET http://registry.Platform.com:5000/images/app/json HTTP/1.1
虚拟机接收远程镜像中心返回的消息为:
其中,registry.acmehuawei.com:5000是远程镜像中心的访问地址,images表明是对镜像的操作,app是镜像名,json要求返回json格式的描述。
返回的消息中描述了镜像app包含的每个镜像层的信息,每个镜像层的信息至少包含镜像层的标识(Id字段)和是否可共享的指示信息(Share字段)。
步骤204:根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址;
其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址。需用说明的是,由于宿主物理机的共享存储可以供创建在该宿主物理机之上的所有虚拟机进行访问,所以对于一个镜像层文件而言,无论该镜像层文件是保存在虚拟机本地,还是保存在物理机的共享存储中,虚拟机都可以及时获取该镜像层文件。
具体的,虚拟机根据步骤202获取的指定镜像的描述信息,确定指定镜像包含的各个镜像层标识以及每个镜像层是否允许共享。对于虚拟机下载并保存在本地私有存储上的镜像层文件,以及通过宿主物理机获取的保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件,虚拟机会将镜像层标识和相应的存储地址保存在虚拟机的镜像层信息表中。需要说明的是,所述镜像层信息表可以是数据表、文本文件或者其他任意实现形式,本发明对镜像层信息表的具体实现方式不做限定。
虚拟机检索虚拟机的镜像层信息表,确定指定镜像的哪些镜像层在虚拟机镜像层信息表中不存在,对于虚拟机镜像层信息表中已经存在的镜像层,则不需要再下载;对于虚拟机镜像层信息表中不存在的镜像层,需要根据步骤202获取的指定镜像的描述信息,确定这些不存在的镜像层是否为允许共享的镜像层。
步骤206:向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;
对于虚拟机镜像层信息表中不存在且允许共享的镜像层,虚拟机向宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括镜像层的标识。
以步骤202中的获取的指定镜像的描述信息为例,假设虚拟机镜像层信息表中不存在镜像层b750fe79269d2ec9a3c593ef05b4332b,并且从该镜像层的share字段可知,该镜像层为允许共享的镜像层,则虚拟机向宿主物理机发送获取第一镜像层的第一请求消息的可能实现方式是:
GET 10.175.10.100:8080/layer/b750fe79269d2ec9a3c593ef05b4332b HTTP/1.1
其中,layer表明需要下载镜像层,layer后面紧跟的b750fe79269d2ec9a3c593ef05b4332b是需要下载的镜像层的标识。
步骤208:接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
具体的,所述共享存储为创建在所述宿主物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。宿主物理机接收到虚拟机发送的获取镜像层的第一请求后,确定共享存储中是否存储了所述第一镜像层文件,如果已经存储,则宿主物理机直接将所述第一镜像层文件在共享存储中的存储地址发送给所述虚拟机;如果没有存储,则所述宿主物理机向远处镜像中心获取所述第一镜像层文件,将获取到的第一镜像层文件保存在共享存储中,并向所述虚拟机发送所述第一镜像层文件在所述共享存储中的存储地址。
宿主物理机将第一镜像层文件在所述共享存储中的存储地址发送给所述虚拟机,一种可能的实现方式是:
HTTP/1.1200OK
Content-Type:application/json
{
“Path”:“10.175.10.100/LocalShareImage/b750fe79269d2ec9a3c593ef05b4332b”
}
其中,Path字段说明了镜像在PM共享存储上的存储地址。
可选的,对于虚拟机镜像层信息表中不存在且不允许共享的镜像层,虚拟机向远程镜像中心直接获取。所述方法还包括:根据所述指定镜像的信息,确定虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心返回的第二镜像层文件,在本地存储所述第二镜像层文件,并将所述第二镜像层的标识和所述第二镜像层文件的存储地址记录到所述虚拟机的镜像层信息表中。
当虚拟机需要使用所述第一镜像层时,虚拟机通过虚拟机镜像层信息表获取第一镜像层文件在共享存储中的存储地址,并根据所述存储地址获取第一镜像层文件。
本发明实施例提供的云环境下镜像层的下载方法中,在所述宿主物理机上建立有共享存储,建立在所述宿主物理机上的所有虚拟机都可以访问该共享存储。对于虚拟机的镜像层信息表中不存在且允许共享的镜像层,虚拟机从宿主物理机获取该镜像层文件在共享存储上的存储地址,而不需要虚拟机自身从远程镜像中心下载并保持在本地。通过本发明实施例提供的方法,虚拟机直接从宿主物理机获取可共享的镜像层的存储地址,并通过该存储地址访问镜像层文件,从而有效的减少虚拟机从远程镜像中心下载镜像层文件,提升了容器部署的速度。
图3为本发明提供的又一种云环境下获取镜像的方法的流程图,所述方法应用于物理机上,包括:
步骤302:接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识,其中,所述物理机为所述第一虚拟机的宿主物理机;
具体的,第一虚拟机和所述物理机是宿主关系,也就是说所述物理机是所述第一虚拟机的宿主物理机。
可选的,在步骤302之前,所述方法还包括,所述第一虚拟机确定第一虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述第一镜像层文件为允许共享的镜像层。所述第一虚拟机的镜像层信息表包括所述第一虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址。
可选的,所述获取第一镜像层的第一请求消息的可能实现方式是:
GET 10.175.10.100:8080/layer/b750fe79269d2ec9a3c593ef05b4332b HTTP/1.1
其中,layer表明需要下载镜像层,layer后面紧跟的b750fe79269d2ec9a3c593ef05b4332b是第一镜像层的标识。
步骤304:根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在所述物理机的共享存储中的镜像层文件的存储地址;
具体的,对于物理机下载并保存在共享存储上的镜像层文件,物理机会将镜像层标识和相应的存储地址保存在物理机的镜像层信息表中。当物理机接收到第一虚拟机的发送的获取第一镜像层的第一请求消息时,根据所述获取第一镜像层的第一请求消息中的第一镜像层的标识,检索物理机的镜像层信息表,确定所述第一镜像层文件的存储地址是否存在。当物理机检索不到所述第一镜像层文件的存储地址时,则表明物理机的共享存储中没有存储所述第一镜像层文件,此时物理机需要从远程镜像中心下载所述第一镜像层文件。需要说明的是,所述物理机的镜像层信息表可以是数据表、文本文件或者其他任意实现形式,本发明对镜像层信息表的具体实现方式不做限定。
步骤306:向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;
步骤308:接收所述远程镜像中心返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;
具体的,所述共享存储为创建在所述物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。也就是说,所述物理机将从远程镜像中心获取的第一镜像层文件存储在共享存储中,则建立在所述物理机上的所有虚拟机只要获取该第一镜像层文件在共享存储中的存储地址,就都可以访问到该第一镜像层文件。所述物理机将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中,以便于物理机后续检索所述物理机的镜像层信息表来获取第一镜像层文件的存储地址。
步骤310:向所述第一虚拟机发送所述第一镜像层文件的存储地址。
具体的,所述物理机向所述第一虚拟机发送所述第一镜像层文件的存储地址,以便于所述第一虚拟机根据所述第一镜像层文件的存储地址访问所述第一镜像层文件。
可选的,当建立在所述物理机上的其他虚拟机,如第二虚拟机,需要下载所述第一镜像层文件时,直接从所述物理机获取所述第一镜像层文件的存储地址即可。所述第二虚拟机直接从物理机获取第一镜像层文件,而不需要像现有技术一样再次去远程镜像中心下载所述第一镜像层文件,有效的减少了虚拟机下载镜像层文件的次数,加快了获取镜像层文件的速度,进而提高了容器的部署速度。具体的,所述方法还包括:接收第二虚拟机发送的获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识,其中,所述物理机为所述第二虚拟机的宿主物理机;根据所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件的存储地址;将所述第一镜像层文件的存储地址发送给所述第二虚拟机。
本发明实施例提供的云环境下镜像层的下载方法中,在所述物理机上建立有共享存储,建立在所述宿主物理机上的所有虚拟机都可以访问该共享存储。对于虚拟机的镜像层信息表中不存在且允许共享的镜像层,虚拟机从宿主物理机获取该镜像层文件在共享存储上的存储地址,而不需要虚拟机自身从远程镜像中心下载并保持在本地。通过本发明实施例提供的方法,虚拟机直接从宿主物理机获取可共享的镜像层的存储地址,并通过该存储地址访问镜像层文件,从而有效的减少虚拟机从远程镜像中心下载镜像层文件,提升了容器部署的速度。
为更加清楚描述上述云环境下镜像下载的处理过程,现举例描述,在本发明实施例中假设在同一个PM上存在两个VM(如VMa和VMb),且这两个VM分别属于用户A和用户B。为了清晰的描述虚拟机或物理机从远程镜像中心下载镜像的过程,有必要先介绍下远程镜像中心中的镜像的上传以及保存过程。如图4所示,远程镜像中心中的镜像由远程镜像中心的管理员或者普通用户上传。为便于描述,假设管理员向远程镜像中心上传了Suse和Apache这两个镜像,其中Suse镜像是一个OpenSuse操作系统的容器镜像,只包含suse这一个镜像层。Apache镜像是一个基于Suse镜像的安装有Apache软件的镜像,包含suse和apache两个镜像层。管理员在上传时将suse和apache这两个镜像层标记为可共享,以表示任何用户都可以下载访问这两个镜像层文件。
用户A下载了Apache镜像,因为Apache镜像基于Suse镜像创建,因此,用户A实际需要下载suse和apache两个镜像层文件。用户A通过在Apache镜像基础上执行代码拷贝、Apache软件配置等操作,生成了一个新的镜像层moduleA,制作了自己的镜像AA(包含suse、apache、moduleA三个镜像层)。然后,用户A将镜像AA上传到远程镜像中心。因为suse、apache镜像层在远程镜像中心已经存在,所以,用户A只需要上传镜像AA的分层结构信息(由suse、apache、moduleA顺序组成)和moduleA镜像层即可。在上传时,用户A将镜像层moduleA标记为用户私有镜像层,不能共享。类似的,用户B也制作了自己的镜像B并上传到远程镜像中心,将镜像层moduleB标记为不可共享。需要说明的是,用户A和用户B可以在任意与远程镜像中心建立通信连接的设备上,如虚拟机或者物理机,进行镜像的下载和制作,对此本发明不做限定。
远程镜像中心对上传的镜像进行保存,具体的可以通过表1所示的中心镜像信息表来记录保存的镜像,该中心镜像信息表记录了远程镜像中心中所有保存的镜像的名称、镜像对应的标识以及分层结构信息。
表1中心镜像信息表
Name | ID | Tree |
Suse | 0001 | suse |
Apache | 0002 | suse,apache |
镜像AA | 0003 | suse,apache,moduleA |
镜像BB | 0004 | suse,apache,moduleB |
表1中每一行代表一个镜像的信息,其中,Name列为镜像的名称;ID列为镜像的标识,该镜像的标识为远程镜像中心生成且在远程镜像中心保持唯一;Tree列是镜像的分层结构信息描述,描述了镜像自底向上的层次结构。例如第二行的Apache镜像,其标识为0002,从底层向上依次包括suse和apache这两个镜像层。
远程镜像中心中还包括一个中心镜像层数据表,用于描述各个镜像层的信息。每一个镜像层的信息包括该镜像层的名称、标识、存储路径以及是否允许共享的指示信息。具体的,如表2所示:表中Name列是镜像层的名称;ID列为镜像层的标识,该镜像层的标识是远程镜像中心为镜像层生成且在远程镜像中心保持唯一;Path列是镜像层在远程镜像中心的实际存储地址;Share列标示该镜像层是否可以在不同VM之间共享,true为可以共享,false为不可以共享。具体的,当一个镜像层的share为true时,表明该镜像层为可共享镜像层,可以供任何用户下载;当share为false时,表明该镜像层为私有镜像层,只能供提供特定用户使用。
表2中心镜像层信息表
Name | ID | Path | Share |
suse | i001 | /store/suse | true |
apache | i002 | /store/apache | true |
moduleA | i003 | /store/moduleA | false |
moduleB | i004 | /store/moduleB | false |
初始部署系统时,除了在PM上创建VMa和VMb这两台虚拟机外,还在PM的文件目录/LocalShareImage创建一块NFS类型的共享存储,并配置为VMa和VMb均可访问。可选的,在VMa和VMb这两台VM上通过mount命令挂载这块共享存储到各自的/ShareImage目录:
#mount–F nfs 10.175.10.100:/LocalShareImage/ShareImage
其中10.175.10.100是PM的IP地址。之后在VM上通过访问/ShareImage地址就可以直接访问PM上的/LocalShareImage目录,即PM上的共享存储。
初始部署系统时,VMa和VMb的本地私有存储(镜像文件库)以及PM的共享存储中都没有任何的镜像文件。当用户A需要在VMa上创建容器A时,VMa确定VMa上没有创建容器A需要的镜像AA,因此,VMa需要下载镜像AA,参阅图3,图5是本发明一实施例提供的一种云环境下获取镜像的方法的示范性信令图,具体的:
步骤502:VMa向远程镜像中心发送获取指定镜像的描述信息的请求消息,该获取指定镜像的描述信息的请求消息包括所述指定镜像的名称AA。
步骤504:远程镜像中心通过查询其镜像信息表和镜像层信息表(如表1和表2)得到镜像AA及其镜像层的信息,并向VMa发送镜像AA的描述信息,所述描述信息包括镜像AA包含的各个镜像层的标识以及所述镜像AA的每个镜像层是否为允许共享的镜像层的指示信息;
可选的,所述描述信息中还包括镜像AA的标识、分层结构信息以及各镜像层的名称。
具体的,远程镜像中心根据镜像信息表(如表1),确定镜像AA的标识为0003,分层结构信息为(suse,apache,moduleA);镜像层suse的标识为i001,可以在VM间共享;镜像层apache的标识为i002,可以在VM间共享;镜像层moduleA的标识为i003,不可以在VM间共享。
步骤506:VMa收到远程镜像中心返回的信息后,在VMa镜像层信息表中进行查询,确定镜像AA的哪些镜像层在VMa镜像层信息表中不存在,且确定这些不存在的镜像层是否可在VM间共享。
具体的,对于在VMa镜像层信息表中不存在,且在VM间不可以共享的镜像层,则执行步骤522;对于在VMa镜像层信息表中不存在,且在VM间可以共享的镜像层,则执行步骤508;
此时VMa的镜像层信息表为空,因此VMa确定镜像AA的suse、apache和moduleA镜像层不存在,其中镜像层suse和apache可以在VM件共享。VMa需要下载suse、apache和moduleA这三个镜像层文件,其中由于moduleA镜像层为不可以VM间共享,所以VMa直接从远程镜像中心下载,并存储在本地的VM私有存储中;suse和apache镜像层位可以VM间共享,所以VMa可以向宿主PM发送获取suse和apache镜像层的信息。
步骤508:VMa向PM发送获取镜像层的请求消息,消息中包含需要获取的镜像层的标识。
具体的,所述需要获取的镜像层为suse镜像层,所述获取镜像层存储地址的消息中,包含需要获取的镜像层的名称suse和标识i001。
步骤510:PM根据镜像层的标识在PM镜像层信息表中检索镜像层的信息,如果检索不到镜像层的信息,则进入步骤512;如果检索到镜像层的信息,则将进入步骤518;
初始时PM镜像层信息表为空,所以根据use镜像层标识i001,查找不到suse镜像层信息,因此,进入步骤512。
步骤512:向远程镜像中心发送下载镜像层的请求消息,该下载镜像层的请求消息中包括所述需要获取的镜像层的标识;
具体的,PM向远程镜像中心发送下载suse镜像层的请求消息,消息中包含镜像层的名称suse和标识i001。
步骤514:远程镜像中心接收PM发送的下载镜像层的请求消息,获取所述需要获取的镜像层并返回给PM。
具体的,远程镜像中心根据所述下载镜像层的请求消息中需要获取的镜像层的标识,检索本地的镜像层数据表,确定所述需要获取的镜像层在本地的存储位置,获取所述需要获取的镜像层,并将获取的镜像层发送给PM。
步骤516:PM接收镜像中心返回的镜像层文件,将接收的镜像层文件保存在共享存储中,并记录接收到的镜像层信息到PM镜像层数据表中。
具体的,PM接收镜像中心返回的suse镜像层文件后,将接收到的suse镜像层文件存储到/LocalShareImage/suse目录下,并记录suse镜像层信息到其镜像层数据表中。此时,PM镜像层数据表如表3所示:
表3 PM镜像层数据表
Name | ID | Path |
suse | i001 | /LocalShareImage/suse |
步骤518:PM向VMa发送镜像层文件在共享存储中的存储地址。
具体的,PM将收到的suse镜像层文件在共享存储上的存储地址/LocalShareImage/suse发送给VMa。
步骤520:VMa将获取的镜像层文件的存储地址保存到其镜像层数据表中。
具体的,VMa将suse镜像层在共享存储上的存储地址转换为可访问地址。因为之前PM上的/LocalShareImage已经挂载到VMa上的/ShareImage目录,所以VMa将suse镜像层在VMa上的访问地址转换为/ShareImage/suse。
具体的,VMa将获取的suse镜像层的信息保存到其镜像层数据表中,此时VMa的镜像层数据表如下:
表4 VMa镜像数据表
Name | ID | Path |
suse | i001 | /ShareImage/suse |
类似的,通过重复步骤4-10,可以下载apache镜像层。需要说明的是,虚拟机也可以通过步骤508一次性将需要获取的镜像层标识,即suse和apache镜像层的标识,发送给物理机,物理机获取suse和apache镜像层在共享存储中的存储地址后,将两者的存储地址一起发送给虚拟机。本发明对于虚拟机从物理机是依次还是一次性获取需要的镜像层文件的存储地址不做限定。VMa获取suse和apache镜像层的信息后,VMa的镜像层数据表如下所示:
表5 VMa镜像层数据表
Name | ID | Path |
suse | i001 | /ShareImage/suse |
apache | i002 | /ShareImage/apache |
步骤522:VMa向远程镜像管理中心发送下载moduleA镜像层的请求信息;
步骤524:VMa接收远程镜像中心返回的moduleA镜像层文件;
步骤526:将moduleA镜像层文件保存到VMa的/LocalImage/moduleA目录,并将moduleA镜像层的信息记录到VMa的镜像层数据表中。此时,VMa的镜像层数据表如下表6所示:
表6 VMa镜像层数据表
Name | ID | Path |
suse | i001 | /ShareImage/suse |
apache | i002 | /ShareImage/apache |
moduleA | I003 | /LocalImage/moduleA |
步骤528:镜像AA的所有镜像层都已经下载注册完成后,VMa将镜像AA的信息写入到VMa的镜像数据表中,如下表7所示:
表7 VMa的镜像数据表
Name | ID | Tree |
镜像AA | 0003 | suse,apache,moduleA |
至此VMa上获取镜像AA的过程结束,VMa根据镜像AA的分层结构信息及各镜像层存储地址,按镜像分层结构信息依次挂载各镜像层,启动容器A。
之后,当用户B需要在VMb上启动容器B时,因为VMb上不存在镜像BB,因此VMb需要下载镜像BB,具体的:由于镜像BB包括的镜像层为suse,apache和moduleB,其中suse和apache为可以在VM件共享,且在PM的共享存储中已经存储有这两个镜像层,所以PM可以直接将suse和apache在PM共享存储中的存储地址返回给VMb。由于moduleB镜像层为不可以VM间共享,所以VMb直接从远程镜像中心下载,并存储在本地的VM私有存储中。镜像BB的具体的下载过程与步骤502-528相同,这里不再赘述。
按照现有技术,VMa和VMb需要分别从远程镜像中心下载suse和apache镜像层,并保存在各自的私有存储中。而本发明实施例提供的镜像下载的方法,在物理机上建立有共享存储,建立在所述宿主物理机上的所有虚拟机都可以访问该共享存储。对于虚拟机的镜像层信息表中不存在且允许共享的镜像层,虚拟机从宿主物理机获取该镜像层文件在共享存储上的存储地址,而不需要虚拟机自身从远程镜像中心下载并保持在本地。通过本发明实施例提供的方法,虚拟机直接从宿主物理机获取可共享的镜像层的存储地址,并通过该存储地址访问镜像层文件,从而有效的减少虚拟机从远程镜像中心下载镜像层文件,提升了容器部署的速度。
另外,从用户的角度来看,为了保证容器的隔离特性,虚拟机需要各自独立地保存用户的镜像。但是,实际上,用户想要隔离保存的是用户自己创建的镜像层,对于操作系统镜像层、基础软件镜像层等这些公用的镜像层,每个虚拟机都可以随意的从远程镜像中心进行下载,因此这些公共的镜像层对于容器的隔离特性并没有贡献,但是现有技术中这些公共镜像层在多个VM上的存储,导致了在同一台PM上就造成了冗余的存储。本发明实施例中将suse和apache这两个可共享的镜像层存储在物理机的共享存储中,将镜像层moduleA和moduleB这两个私有镜像层分布保存在VMa和VMb的私有存储中,既满足了容器的隔离性要求,又节约了物理机的存储资源(虚拟机的私有存储也是物理机的存储资源的一部分),同时对于容器B而言,由于镜像层suse和apache在物理机的共享存储中已经存在,可以直接获取,而不需要再次从远程镜像中心下载,加速了容器B的部署速度。
本发明实施例还描述了与图2所示实施例属于同一发明构思下的一种虚拟机,图6是依据本发明一实施例的虚拟机的示范性逻辑结构示意图。如图6所示,虚拟机包括容器镜像管理模块601。
所述容器镜像管理模块,用于从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址;向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
具体的,上述虚拟机还包括私有存储602。所述容器镜像管理模块601,还用于根据所述指定镜像的信息,确定虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心返回的第二镜像层文件;所述私有存储602,用于存储所述容器镜像管理模块接收的所述第二镜像层文件;所述容器镜像管理模块601,还用于将所述第二镜像层的标识和所述第二镜像层文件在所述私有存储中的存储地址记录到所述虚拟机的镜像层信息表中。
可选的,上述虚拟机还包括容器管理模块603。所述容器管理模块603,用于创建容器,确定所述虚拟机本地不存在所述指定镜像,其中所述指定镜像为创建所述容器所需的镜像;向所述容器镜像管理模块发送获取指定镜像的请求,所述获取指定镜像的请求包括所述指定镜像的名称;所述容器镜像管理模块601,还用于接收所述容器管理模块发送的所述获取指定镜像的请求。
具体的,所述共享存储为创建在所述宿主物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。
图7描述了本发明另一个实施例提供的虚拟机的结构,用于执行前述图2和图5所述实施例的虚拟机实施的镜像下载的方法,包括至少一个处理器701(例如CPU),至少一个网络接口702或者其他通信接口,存储器703,和至少一个通信总线704,用于实现这些装置之间的连接通信。处理器701用于执行存储器703中存储的可执行程序,例如计算机程序。存储器703可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口702(可以是有线或者无线)实现该系统网关与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器703存储了程序7031,程序7031可以被处理器701执行,这个程序包括:从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址;向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
本发明实施例还描述了与图3所示实施例属于同一发明构思下的一种物理机,如图8所示,图8为本发明实施例提供的物理机的结构示意图,该授物理机可以包括:容器镜像管理模块801和共享存储802,其中:
所述容器镜像管理模块801,用于接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像的第一请求消息包括第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在共享存储中的镜像层文件的存储地址;向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件;其中,所述物理机为所述第一虚拟机的宿主物理机;
所述共享存储802,用于存储所述容器镜像管理模块接收到的所述第一镜像层文件;
所述容器镜像管理模块801,还用于将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中,并向所述第一虚拟机发送所述第一镜像层文件的存储地址。
可选的,所述容器镜像管理模块801,还用于在将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中之后,接收第二虚拟机发送的获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件的存储地址;将所述第一镜像层文件的存储地址发送给所述第二虚拟机,其中所述物理机为所述第二虚拟机的宿主物理机。
具体的,所述共享存储为创建在所述物理机上,以便于以所述物理机为宿主物理机的虚拟机进行访问的存储空间。
图9描述了本发明另一个实施例提供的物理机的结构,用于执行前述图3和图5所述实施例的物理机实施的镜像下载的方法,包括至少一个处理器901(例如CPU),至少一个网络接口902或者其他通信接口,存储器903,和至少一个通信总线904,用于实现这些装置之间的连接通信。处理器901用于执行存储器903中存储的可执行程序,例如计算机程序。存储器903可能包含高速随机存取存储器(RAM:Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口902(可以是有线或者无线)实现该系统网关与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
在一些实施方式中,存储器903存储了程序9031,程序9031可以被处理器901执行,这个程序包括:接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识,其中,所述物理机为所述第一虚拟机的宿主物理机;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在所述物理机的共享存储中的镜像层文件的存储地址;向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;向所述第一虚拟机发送所述第一镜像层文件的存储地址。
图10是依据本发明一实施例的云环境下获取镜像的系统的示范性逻辑结构示意图。如图10所示,包括第一虚拟机1001、物理机1002和远程镜像中心1003,其中所述物理机1002为所述第一虚拟机1001的宿主物理机:
所述第一虚拟机1001,用于从所述远程镜像中心1003获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定第一虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述第一虚拟机的镜像层信息表包括所述第一虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述物理机的共享存储中的镜像层文件的存储地址;向所述物理机1002发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述物理机1002返回的第一镜像层文件在所述物理机1002的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述物理机的共享存储中的存储地址记录到所述第一虚拟机的镜像层信息表中;
所述物理机1002,用于接收第一虚拟机1001发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在共享存储中的镜像层文件的存储地址;向所述远程镜像中心1003发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心1003返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;
所述远程镜像中心1003,用于接收所述物理机1002发送的获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;根据所述第一镜像层标识,获取所述第一镜像层文件,并将所述第一镜像层文件发送给所述物理机1002。
可选的,所述第一虚拟机1001,还用于根据所述指定镜像的信息,确定第一虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心1003发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心1003返回的第二镜像层文件,在本地存储所述第二镜像层文件,并将所述第二镜像层的标识和所述第二镜像层文件的存储地址记录到所述第一虚拟机的镜像层信息表中;所述远程镜像中心1003,还用于接收所述第一虚拟机1001发送的获取第二镜像层的请求消息,根据所述获取第二镜像层的请求消息中包括的所述第二镜像层的标识,获取所述第二镜像层文件,并将所述第二镜像层文件发送给所述第一虚拟机1001。
可选的,所述系统还包括第二虚拟机1004,用于向所述物理机1002发送获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识;接收所述物理机1002发送的所述第一镜像层文件在所述共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述共享存储中的存储地址记录到所述第二虚拟机的镜像层信息表中,其中所述物理机1002为所述第二虚拟机的宿主物理机;所述物理机1002,还用于接收所述第二虚拟机1004发送的获取第一镜像层的第三请求消息,根据所述获取第一镜像层的第三请求消息中包括的所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件在所述共享存储中的存储地址;将所述第一镜像层文件在所述共享存储中的存储地址发送给所述第二虚拟机1004。
第一虚拟机1001用于执行图2所示的方法,该设备及其操作以及与该设备及其操作有关的具体细节在图5-图7中也做了描述,因此此处不再赘述。
物理机1002用于执行图3所示的方法,该设备及其操作以及与该设备及其操作有关的具体细节在图5、图8和图9中也做了描述,因此此处不再赘述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
上述装置和系统内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(ROM:Read-Only Memory)或随机存储记忆体(RAM:RandomAccess Memory)等。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (17)
1.一种云环境下获取镜像的方法,其特征在于,包括:
从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;
根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址;
向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;
接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述指定镜像的信息,确定虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;
向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;
接收所述远程镜像中心返回的第二镜像层文件,在本地存储所述第二镜像层文件,并将所述第二镜像层的标识和所述第二镜像层文件的存储地址记录到所述虚拟机的镜像层信息表中。
3.如权利要求1所述的方法,其特征在于,在所述从远程镜像中心获取指定镜像的描述信息之前,所述方法还包括:
创建容器,确定所述虚拟机本地不存在所述指定镜像,其中所述指定镜像为创建所述容器所需的镜像。
4.如权利要求1-3任一所述的方法,其特征在于,所述共享存储为创建在所述宿主物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。
5.一种云环境下获取镜像的方法,所述方法应用于物理机上,其特征在于,
接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识,其中,所述物理机为所述第一虚拟机的宿主物理机;
根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在所述物理机的共享存储中的镜像层文件的存储地址;
向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;
接收所述远程镜像中心返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;
向所述第一虚拟机发送所述第一镜像层文件的存储地址。
6.如权利要求5所述的方法,其特征在于,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中之后,所述方法还包括:
接收第二虚拟机发送的获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识,其中,所述物理机为所述第二虚拟机的宿主物理机;
根据所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件的存储地址;
将所述第一镜像层文件的存储地址发送给所述第二虚拟机。
7.如权利要求5-6任一所述的方法,其特征在于,所述共享存储为创建在所述物理机上,以便于以所述物理机为宿主物理机的虚拟机进行访问的存储空间。
8.一种云环境下获取镜像的虚拟机,其特征在于,包括容器镜像管理模块:其中,
所述容器镜像管理模块,用于从远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述虚拟机的镜像层信息表包括所述虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述虚拟机的宿主物理机的共享存储中的镜像层文件的存储地址;向所述宿主物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述宿主物理机返回的第一镜像层文件在所述宿主物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述宿主物理机的共享存储中的存储地址记录到所述虚拟机的镜像层信息表中。
9.如权利要求8所述的虚拟机,其特征在于,所述虚拟机还包括私有存储,
所述容器镜像管理模块,还用于根据所述指定镜像的信息,确定虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;接收所述远程镜像中心返回的第二镜像层文件;
所述私有存储,用于存储所述容器镜像管理模块接收的所述第二镜像层文件;
所述容器镜像管理模块,还用于将所述第二镜像层的标识和所述第二镜像层文件在所述私有存储中的存储地址记录到所述虚拟机的镜像层信息表中。
10.如权利要求8所述的虚拟机,其特征在于,所述虚拟机还包括容器管理模块,
所述容器管理模块,用于创建容器,确定所述虚拟机本地不存在所述指定镜像,其中所述指定镜像为创建所述容器所需的镜像;向所述容器镜像管理模块发送获取指定镜像的请求,所述获取指定镜像的请求包括所述指定镜像的名称;
所述容器镜像管理模块,还用于接收所述容器管理模块发送的所述获取指定镜像的请求。
11.如权利要求8-10任一所述的虚拟机,其特征在于,所述共享存储为创建在所述宿主物理机上,以便于建立在所述宿主物理机上的虚拟机进行访问的存储空间。
12.一种云环境下获取镜像的物理机,其特征在于,包括容器镜像管理模块和共享存储,其中:
所述容器镜像管理模块,用于接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像的第一请求消息包括第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在共享存储中的镜像层文件的存储地址;向远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件;其中,所述物理机为所述第一虚拟机的宿主物理机;
所述共享存储,用于存储所述容器镜像管理模块接收到的所述第一镜像层文件;
所述容器镜像管理模块,还用于将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中,并向所述第一虚拟机发送所述第一镜像层文件的存储地址。
13.如权利要求12所述的物理机,其特征在于,所述容器镜像管理模块,还用于在将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中之后,接收第二虚拟机发送的获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件的存储地址;将所述第一镜像层文件的存储地址发送给所述第二虚拟机,其中所述物理机为所述第二虚拟机的宿主物理机。
14.如权利要求12-13任一所述的物理机,其特征在于,所述共享存储为创建在所述物理机上,以便于以所述物理机为宿主物理机的虚拟机进行访问的存储空间。
15.一种云环境下获取镜像的系统,其特征在于,包括第一虚拟机、物理机和远程镜像中心,其中所述物理机为所述第一虚拟机的宿主物理机:
所述第一虚拟机,用于从所述远程镜像中心获取指定镜像的描述信息,所述指定镜像的描述信息包括所述指定镜像包含的各个镜像层的标识以及所述指定镜像的每个镜像层是否为允许共享的镜像层的指示信息;根据所述指定镜像的描述信息,确定第一虚拟机的镜像层信息表中不存在第一镜像层文件的存储地址,其中,所述第一镜像层为所述指定镜像包含的且允许共享的镜像层,所述第一虚拟机的镜像层信息表包括所述第一虚拟机获取的保存在本地的镜像层文件的存储地址和保存在所述物理机的共享存储中的镜像层文件的存储地址;向所述物理机发送获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括所述第一镜像层的标识;接收所述物理机返回的第一镜像层文件在所述物理机的共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述物理机的共享存储中的存储地址记录到所述第一虚拟机的镜像层信息表中;
所述物理机,用于接收第一虚拟机发送的获取第一镜像层的第一请求消息,所述获取第一镜像层的第一请求消息包括第一镜像层的标识;根据所述第一镜像层的标识,确定物理机的镜像层信息表中不存在第一镜像层文件的存储地址,其中所述物理机的镜像层信息表包括保存在共享存储中的镜像层文件的存储地址;向所述远程镜像中心发送获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;接收所述远程镜像中心返回第一镜像层文件,在所述共享存储中存储所述第一镜像层文件,并将所述第一镜像层的标识和所述第一镜像层文件的存储地址记录到所述物理机的镜像层信息表中;
所述远程镜像中心,用于接收所述物理机发送的获取第一镜像层的第二请求消息,所述获取第一镜像层的第二请求消息包括所述第一镜像层的标识;根据所述第一镜像层标识,获取所述第一镜像层文件,并将所述第一镜像层文件发送给所述物理机。
16.如权利要求15所述的系统,其特征在于,所述第一虚拟机还用于根据所述指定镜像的信息,确定第一虚拟机的镜像层信息表中不存在第二镜像层文件的存储地址,其中,所述第二镜像层为所述指定镜像包含的且不允许共享的镜像层;向所述远程镜像中心发送获取第二镜像层的请求消息,所述获取第二镜像层的请求消息包括所述第二镜像层的标识;
接收所述远程镜像中心返回的第二镜像层文件,在本地存储所述第二镜像层文件,并将所述第二镜像层的标识和所述第二镜像层文件的存储地址记录到所述第一虚拟机的镜像层信息表中;
所述远程镜像中心,还用于接收所述第一虚拟机发送的获取第二镜像层的请求消息,根据所述获取第二镜像层的请求消息中包括的所述第二镜像层的标识,获取所述第二镜像层文件,并将所述第二镜像层文件发送给所述第一虚拟机。
17.如权利要求15或16所述的系统,其特征在于,还包括第二虚拟机,用于向所述物理机发送获取第一镜像层的第三请求消息,所述获取第一镜像层的第三请求消息包括所述第一镜像层的标识;接收所述物理机发送的所述第一镜像层文件在所述共享存储中的存储地址,并将所述第一镜像层的标识和所述第一镜像层文件在所述共享存储中的存储地址记录到所述第二虚拟机的镜像层信息表中,其中所述物理机为所述第二虚拟机的宿主物理机;
所述物理机,还用于接收所述第二虚拟机发送的获取第一镜像层的第三请求消息,根据所述获取第一镜像层的第三请求消息中包括的所述第一镜像层的标识,确定物理机的镜像层信息表中存在所述第一镜像层文件在所述共享存储中的存储地址;将所述第一镜像层文件在所述共享存储中的存储地址发送给所述第二虚拟机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510546093.2A CN106487850B (zh) | 2015-08-29 | 2015-08-29 | 一种云环境下获取镜像的方法、装置和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510546093.2A CN106487850B (zh) | 2015-08-29 | 2015-08-29 | 一种云环境下获取镜像的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106487850A CN106487850A (zh) | 2017-03-08 |
CN106487850B true CN106487850B (zh) | 2019-10-25 |
Family
ID=58235095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510546093.2A Active CN106487850B (zh) | 2015-08-29 | 2015-08-29 | 一种云环境下获取镜像的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106487850B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107301063B (zh) * | 2017-05-10 | 2020-07-31 | 北京奇艺世纪科技有限公司 | 一种镜像管理方法及装置 |
CN109587281B (zh) * | 2017-09-29 | 2020-07-28 | 华为技术有限公司 | 容器配置方法和计算节点 |
CN107888695B (zh) * | 2017-11-23 | 2019-09-13 | 新华三云计算技术有限公司 | 云平台创建镜像的方法和云平台设备 |
CN109901908A (zh) * | 2017-12-11 | 2019-06-18 | 中国移动通信集团山西有限公司 | 销毁docker容器的方法、装置、设备和介质 |
CN108089912A (zh) * | 2017-12-19 | 2018-05-29 | 深信服科技股份有限公司 | 一种虚拟机与容器超融合系统构建方法及装置 |
CN108170511A (zh) * | 2017-12-26 | 2018-06-15 | 深信服科技股份有限公司 | 一种docker镜像获取方法、装置、设备及存储介质 |
CN108156246B (zh) * | 2017-12-27 | 2020-12-04 | 北京微网通联股份有限公司 | 一种文件分发方法、系统、服务器及客户端 |
CN110018878B (zh) * | 2018-01-09 | 2022-08-30 | 阿里巴巴集团控股有限公司 | 一种分布式系统数据加载方法以及装置 |
CN108401031B (zh) * | 2018-03-13 | 2020-12-15 | 深圳市腾讯计算机系统有限公司 | 一种镜像文件传输方法、装置及存储介质 |
CN108804202A (zh) * | 2018-06-11 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种企业级容器镜像管理方法和系统 |
CN110659100B (zh) * | 2018-06-29 | 2022-05-24 | 华为技术有限公司 | 容器管理方法、装置和设备 |
CN109933342B (zh) * | 2019-03-18 | 2020-10-16 | 北京升鑫网络科技有限公司 | 一种从本地docker镜像中提取文件内容的方法及装置 |
CN111464603B (zh) * | 2020-03-24 | 2022-03-29 | 聚好看科技股份有限公司 | 一种服务器扩容方法及扩容系统 |
CN111858160B (zh) * | 2020-06-23 | 2023-12-22 | 杭州龙境科技有限公司 | 一种便于云手机访问的IeMMC方法和系统 |
CN112416393B (zh) * | 2020-11-18 | 2022-07-05 | 国网福建省电力有限公司 | 一种基于容器技术的人工智能模型远程升级方法及系统 |
CN112596825B (zh) * | 2020-11-26 | 2022-04-01 | 新华三大数据技术有限公司 | 一种云桌面启动方法及装置 |
CN112714163B (zh) * | 2020-12-22 | 2022-06-10 | 北京百度网讯科技有限公司 | 数据传输方法、装置、电子设备和介质 |
CN112527467B (zh) * | 2020-12-23 | 2024-06-11 | 同盾控股有限公司 | 容器镜像的存储结构、查询方法、删除方法、装置、设备和介质 |
CN113209633B (zh) * | 2021-06-09 | 2023-07-07 | 腾讯科技(深圳)有限公司 | 镜像的处理方法、装置、电子设备及可读存储介质 |
CN114995948A (zh) * | 2022-05-13 | 2022-09-02 | 阿里巴巴(中国)有限公司 | 下载安全容器镜像文件的方法、装置、设备及系统 |
CN117032893B (zh) * | 2023-08-14 | 2024-07-26 | 曙光云计算集团股份有限公司 | 一种容器镜像管理方法、装置、设备及介质 |
CN117041272B (zh) * | 2023-10-07 | 2024-01-30 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101443746A (zh) * | 2006-05-18 | 2009-05-27 | 李尚奎 | 用于保护客户端及服务器的方法 |
CN102447723A (zh) * | 2010-10-12 | 2012-05-09 | 运软网络科技(上海)有限公司 | 客户端虚拟化架构 |
CN103795759A (zh) * | 2012-10-31 | 2014-05-14 | 北京搜狐新媒体信息技术有限公司 | 一种虚拟机镜像文件的调度方法和系统 |
CN104679527A (zh) * | 2013-11-26 | 2015-06-03 | 中国银联股份有限公司 | 虚拟机镜像离线升级方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050198303A1 (en) * | 2004-01-02 | 2005-09-08 | Robert Knauerhase | Dynamic virtual machine service provider allocation |
-
2015
- 2015-08-29 CN CN201510546093.2A patent/CN106487850B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101443746A (zh) * | 2006-05-18 | 2009-05-27 | 李尚奎 | 用于保护客户端及服务器的方法 |
CN102447723A (zh) * | 2010-10-12 | 2012-05-09 | 运软网络科技(上海)有限公司 | 客户端虚拟化架构 |
CN103795759A (zh) * | 2012-10-31 | 2014-05-14 | 北京搜狐新媒体信息技术有限公司 | 一种虚拟机镜像文件的调度方法和系统 |
CN104679527A (zh) * | 2013-11-26 | 2015-06-03 | 中国银联股份有限公司 | 虚拟机镜像离线升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106487850A (zh) | 2017-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106487850B (zh) | 一种云环境下获取镜像的方法、装置和系统 | |
CN106506587B (zh) | 一种基于分布式存储的Docker镜像下载方法 | |
US10664331B2 (en) | Generating an application programming interface | |
US10148736B1 (en) | Executing parallel jobs with message passing on compute clusters | |
US10659523B1 (en) | Isolating compute clusters created for a customer | |
US9021245B2 (en) | Applying settings in a cloud computing environment based on geographical region | |
US20190012365A1 (en) | User request processing method and device | |
CN109391664A (zh) | 用于多集群容器部署的系统和方法 | |
CN109818934B (zh) | 一种自动化日志处理的方法、装置及计算设备 | |
EP3618352B1 (en) | Virtual machine management | |
CN115269184A (zh) | 函数即服务(faas)执行分配器 | |
US20130212340A1 (en) | Partition aware quality of service feature | |
US9065832B2 (en) | Method and apparatus for automated network connectivity for managed application components within a cloud | |
JP5911448B2 (ja) | 移行支援装置、移行支援方法およびプログラム | |
US11811839B2 (en) | Managed distribution of data stream contents | |
WO2013157042A1 (ja) | 分散アプリケーション及びデータホスティングシステム | |
CN103957270A (zh) | 一种云原子单元投递与部署的方法及装置 | |
US11645424B2 (en) | Integrity verification in cloud key-value stores | |
WO2018090606A1 (zh) | 数据存储方法及装置 | |
WO2017148382A1 (zh) | 在云计算管理平台中虚拟机访问存储设备的方法和装置 | |
CN108200211B (zh) | 集群中镜像文件下载的方法、节点和查询服务器 | |
US9716666B2 (en) | Process cage providing attraction to distributed storage | |
CN113395340A (zh) | 一种信息更新方法、装置、设备、系统和可读存储介质 | |
WO2017054533A1 (zh) | 云互通的外部资源管理方法、装置及系统 | |
WO2016101662A1 (zh) | 一种数据处理方法及相关服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |