CN109976667B - 一种镜像管理方法、装置及系统 - Google Patents
一种镜像管理方法、装置及系统 Download PDFInfo
- Publication number
- CN109976667B CN109976667B CN201910145316.2A CN201910145316A CN109976667B CN 109976667 B CN109976667 B CN 109976667B CN 201910145316 A CN201910145316 A CN 201910145316A CN 109976667 B CN109976667 B CN 109976667B
- Authority
- CN
- China
- Prior art keywords
- node
- mirror image
- metadata
- nodes
- warehouse server
- 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
Images
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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
-
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/45562—Creating, deleting, cloning virtual machine instances
-
- 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/45587—Isolation or security of virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明的实施例提供一种镜像管理方法、装置及系统,涉及计算机技术领域,可减少镜像数据的传输次数,并提高存储空间的利用率,从而降低docker系统的开销。该系统包括:仓库服务器以及与该仓库服务器相连的N个节点,该N个节点的存储模块构成分布式存储系统,该N个节点内镜像的镜像数据共享在该分布式存储系统中;其中,第一节点,用于:生成第一镜像,该第一镜像包括第一元数据和第一镜像数据;将该第一镜像数据保存至该分布式存储系统;以及向该仓库服务器发送上传请求,该上传请求中携带有该第一元数据,该第一节点为该N个节点中的任一个;该仓库服务器,用于:接收该第一节点发送的该上传请求;并保存该上传请求中的该第一元数据。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种镜像管理方法、装置及系统。
背景技术
docker是一个应用托管框架(application hosting framework),它可以通过类似虚拟机一样的容器来部署、管理应用。
在当前的docker系统中,每个主机均与远端的docker registry(即仓库服务器)相连,各个主机在进行docker实例化操作时,需要从仓库服务器中下载(pull)所需的镜像(即image),并保存在本地仓库内;相应的,如果主机对镜像进行了修改,得到新的镜像时,还需要将新的镜像上传(push)至仓库服务器。
具体的,镜像可以以树的形式分层存储在仓库服务器中,每个节点到根节点的支路可组成一个镜像,如图1所示的二叉树,包括:节点1与节点2组成的镜像1,节点1、节点2和节点4组成的镜像2,节点1与节点3组成的镜像3等多个镜像,而每一个镜像具体可用镜像数据和元数据来描述,其中,镜像数据包含了一个完整的Linux操作系统的数据,而元数据通常通过一个JSON(JavaScript Object Notation,一种轻量级的数据交换格式)文件来描述,用于表征该镜像的属性特征,例如镜像的名称、叶子节点的ID等信息。
在docker系统中,镜像的数目可以非常多,因此,多个主机下载镜像时,既要下载镜像的镜像数据,还要下载镜像的元数据,导致整个docker系统的开销增加,并且,不同主机可能使用相同的镜像,而在现有的docker系统中,使用相同镜像的主机均需要从仓库服务器中下载该镜像,并保存至本地存储空间内,即大量主机内保存了相同的镜像,造成主机内存储空间的浪费。
发明内容
本发明的实施例提供一种镜像管理方法、装置及系统,可减少镜像数据的传输次数,并提高存储空间的利用率,从而降低docker系统的开销。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明的实施例提供一种docker系统,该系统包括:仓库服务器以及与该仓库服务器相连的N个节点,该N个节点的存储模块构成分布式存储系统,该N个节点内镜像的镜像数据共享在该分布式存储系统中,N为大于或等于2的整数;其中,第一节点,用于:生成第一镜像,该第一镜像包括第一元数据和第一镜像数据;将该第一镜像数据保存至该分布式存储系统;以及向该仓库服务器发送上传请求,该上传请求中携带有该第一元数据,该第一节点为该N个节点中的任一个;该仓库服务器,用于:接收该第一节点发送的该上传请求;并保存该上传请求中的该第一元数据。
可以看出,由于docker系统中N个节点内镜像的镜像数据共享在该分布式存储系统中,因此,在镜像上传过程中,第一节点只需向仓库服务器上传生成的新镜像的元数据即可,无需上传新镜像的镜像数据,从而可减少docker系统中镜像数据的传输次数,并提高存储空间的利用率,降低整个docker系统的开销。
在一种可能的设计中,该仓库服务器包括仓库驱动;其中,该第一节点,还用于向该仓库服务器发送该第一镜像数据;该仓库服务器,还用于:接收该第一节点发送的该第一镜像数据;并调用该仓库驱动将该第一镜像数据保存至该分布式存储系统。
在一种可能的设计中,该第一节点包括镜像管理模块,其中,该第一节点,还用于:通过该镜像管理模块向该仓库服务器发送下载请求,该下载请求中携带有第一元数据的标识;通过该镜像管理模接收该仓库服务器发送的该第一元数据,并查找该分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据;若该分布式存储系统中存储有该第一镜像数据,则通过该镜像管理模块从该分布式存储系统中获取该第一镜像数据;该仓库服务器,还用于:接收该第一节点发送的该下载请求;根据该下载请求中的第一元数据的标识查找该第一元数据;并将该第一元数据发送至该第一节点。
这样一来,由于docker系统中N个节点内镜像的镜像数据共享在该分布式存储系统中,因此,在镜像下载过程中,第一节点与仓库服务器之间只需要传输镜像的元数据,而不需要传输镜像的镜像数据,可减少镜像数据的传输次数,并提高存储空间的利用率,从而降低docker系统的开销。
在一种可能的设计中,该第一节点,还用于:将该第一元数据保存至该第一节点内的本地仓库;并对为第一镜像预置的引用计数器执行加1操作。
在一种可能的设计中,该第一节点,还用于:删除该第一节点内的该第一元数据;对该引用计数器执行减1操作。
在一种可能的设计中,该第一节点,还用于向该仓库服务器发送删除请求,该删除请求用于指示删除该仓库服务器内的第一镜像;该仓库服务器,还用于:接收该第一节点发送的该删除请求;根据该删除请求,删除该仓库服务器内的该第一元数据;若该各个节点均未使用该第一镜像,则删除存储在该分布式存储系统中的该第一镜像数据。
至此,在本发明实施例提供的docker系统中,可对镜像的镜像数据和元数据分别进行管理,各节点中镜像的镜像数据均统一存储在分布式存储系统中,也就是说,各节点可以共享分布式存储系统中的镜像数据,这样一来,不但可以避免现有技术中大量节点内保存相同的镜像而导致存储空间的浪费的问题,还使得各个节点以及仓库服务器只需要管理自身内镜像的元数据即可,从而可减少镜像数据的传输次数,降低docker系统的开销。
第二方面,本发明的实施例提供一种镜像管理方法,该方法应用于第一方面中的任一项docker系统,该方法包括:第一节点生成第一镜像,该第一镜像包括第一元数据和第一镜像数据,该第一节点为该docker系统内N个节点中的任一个;该第一节点向仓库服务器发送上传请求,该上传请求中携带有该第一元数据,以使得该仓库服务器保存该第一元数据;该第一节点将该第一镜像数据保存至该分布式存储系统中。
在一种可能的设计中,该第一节点将该第一镜像数据保存至该分布式存储系统中,包括:该第一节点向该仓库服务器发送该第一镜像数据,以使得该仓库服务器将该第一镜像数据保存至该分布式存储系统中。
在一种可能的设计中,该方法还包括:该第一节点向该仓库服务器发送下载请求,该下载请求中携带有第一元数据的标识;该第一节点接收该仓库服务器发送的与该第一元数据的标识对应的第一元数据;该第一节点根据该第一元数据,查找该分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据;若该分布式存储系统中存储有该第一镜像数据,则该第一节点从该分布式存储系统中获取该第一镜像数据。
在一种可能的设计中,在该第一节点根据该仓库服务器发送的第一元数据,查找该分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据之后,该方法还包括:若该分布式存储系统中未存储有该第一镜像数据,则该第一节点从该仓库服务器中获取该第一镜像数据。
在一种可能的设计中,在该第一节点接收到该仓库服务器发送的第一元数据之后,该方法还包括:该第一节点将该第一元数据保存至该第一节点内的本地仓库。
在一种可能的设计中,在该第一节点将该第一元数据保存至该第一节点内的本地仓库之后,该方法还包括:该第一节点对为第一镜像预置的引用计数器执行加1操作。
在一种可能的设计中,若该第一节点确定删除该第一节点内的第一镜像,则该方法还包括:该第一节点删除该第一节点内的该第一元数据;该第一节点对该引用计数器执行减1操作。
第三方面,本发明的实施例提供一种镜像管理方法,该方法应用于第一方面中的任一项docker系统,该方法包括:仓库服务器接收第一节点发送的删除请求,该删除请求用于指示删除该仓库服务器内的第一镜像,该第一镜像包括第一元数据和第一镜像数据,该第一节点为该docker系统内N个节点中的任一个;该仓库服务器根据该删除请求,删除该仓库服务器内的该第一元数据;若该各个节点均未使用该第一镜像,则该仓库服务器删除存储在该分布式存储系统中的该第一镜像数据。
在一种可能的设计中,若该各个节点均未使用该第一镜像,则该仓库服务器删除存储在该分布式存储系统中的第一镜像数据,包括:该仓库服务器判断该第一镜像的引用计数器是否为0;若该第一镜像的引用计数器为0,则该仓库服务器删除存储在该分布式存储系统中的该第一镜像数据。
第四方面,本发明的实施例提供一种节点,该节点应用于第一方面中的任一项docker系统,该节点包括:镜像生成单元,用于生成第一镜像,该第一镜像包括第一元数据和第一镜像数据;发送单元,用于向仓库服务器发送上传请求,该上传请求中携带有该第一元数据,以使得该仓库服务器保存该第一元数据;保存单元,用于将该第一镜像数据保存至该分布式存储系统中。
在一种可能的设计中,该发送单元,还用于向该仓库服务器发送该第一镜像数据,以使得该仓库服务器将该第一镜像数据保存至该分布式存储系统中。
在一种可能的设计中,该节点还包括获取单元和查找单元,其中,该发送单元,还用于向该仓库服务器发送下载请求,该下载请求中携带有第一元数据的标识;该获取单元,用于接收该仓库服务器发送的与该第一元数据的标识对应的第一元数据;以及若该分布式存储系统中存储有该第一镜像数据,则从该分布式存储系统中获取该第一镜像数据;该查找单元,用于根据该第一元数据,查找该分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据。
在一种可能的设计中,该获取单元,还用于若该分布式存储系统中未存储有该第一镜像数据,则从该仓库服务器中获取该第一镜像数据。
在一种可能的设计中,该保存单元,还用于该第一元数据保存至该第一节点内的本地仓库。
在一种可能的设计中,该节点还包括:计数单元,用于对为第一镜像预置的引用计数器执行加1操作。
在一种可能的设计中,该节点还包括删除单元,其中,该删除单元,用于删除该第一节点内的该第一元数据;该计数单元,还用于对该引用计数器执行减1操作。
第五方面,本发明的实施例提供一种仓库服务器,该仓库服务器应用于第一方面中的任一项docker系统,该仓库服务器包括:接收单元,用于接收第一节点发送的删除请求,该删除请求用于指示删除该仓库服务器内的第一镜像,该第一镜像包括第一元数据和第一镜像数据,该第一节点为该docker系统内N个节点中的任一个;删除单元,用于根据该删除请求,删除该仓库服务器内的该第一元数据;若该各个节点均未使用该第一镜像,则删除存储在该分布式存储系统中的该第一镜像数据。
在一种可能的设计中,该仓库服务器还包括判断单元,其中,该判断单元,用于判断该第一镜像的引用计数器是否为0;该删除单元,具体用于若该第一镜像的引用计数器为0,则删除存储在该分布式存储系统中的该第一镜像数据。
第六方面,本发明的实施例提供一种节点,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当该节点运行时,该处理器执行该存储器存储的该计算机执行指令,以使该节点执行如第二方面中任意一项的镜像管理方法。
第七方面,本发明的实施例提供一种仓库服务器,包括:处理器、存储器、总线和通信接口;该存储器用于存储计算机执行指令,该处理器与该存储器通过该总线连接,当该仓库服务器运行时,该处理器执行该存储器存储的该计算机执行指令,以使该仓库服务器执行如第三方面中任意一项的镜像管理方法。
第八方面,本发明实施例提供了一种计算机存储介质,用于储存为上述节点所用的计算机软件指令,其包含用于执行上述方面为节点所设计的程序。
第九方面,本发明实施例提供了一种计算机存储介质,用于储存为上述仓库服务器所用的计算机软件指令,其包含用于执行上述方面为仓库服务器所设计的程序。
本发明中,节点以及仓库服务器的名字对设备本身不构成限定,在实际实现中,这些设备可以以其他名称出现。只要各个设备的功能和本发明类似,属于本发明权利要求及其等同技术的范围之内。
另外,第二方面至第九方面中任一种可能的设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为现有技术中镜像的示意图;
图2为本发明实施例提供的一种docker系统的架构示意图一;
图3为本发明实施例提供的一种docker系统的架构示意图二;
图4为本发明实施例提供的一种docker系统的架构示意图三;
图5为现有技术中docker系统中节点的架构图;
图6为本发明实施例提供的docker系统中节点的架构图;
图7为本发明实施例提供的一种镜像下载方法的流程示意图;
图8为本发明实施例提供的一种镜像上传方法的流程示意图;
图9为本发明实施例提供的一种镜像删除方法的流程示意图;
图10为本发明实施例提供的一种节点的结构示意图一;
图11为本发明实施例提供的一种节点的结构示意图二;
图12为本发明实施例提供的一种节点的结构示意图三;
图13为本发明实施例提供的一种节点的结构示意图四;
图14为本发明实施例提供的一种仓库服务器的结构示意图一;
图15为本发明实施例提供的一种仓库服务器的结构示意图二;
图16为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
另外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本发明实施例提供的镜像管理方法,应用于如图2所示的docker系统,该docker系统内包括仓库服务器01,以及与仓库服务器01均相连的N(N为大于或等于2的整数)个节点02,其中,仓库服务器01是一个存储镜像的仓库,节点02可以从仓库服务器01中获取所需的镜像,其中,每一个镜像具体包括镜像数据和元数据。节点02内镜像的镜像数据可统一存储在分布式存储系统03中,即各节点02共享分布式存储系统03内存储的镜像数据,而每个节点02内镜像的元数据由每个节点02自己保存和维护。
其中,镜像数据包含了一个完整的Linux操作系统的数据,而元数据通常通过一个JSON(JavaScript Object Notation,一种轻量级的数据交换格式)文件来描述,用于表征该镜像的属性特征,例如镜像的名称、叶子节点的ID等信息。
需要说明的是,在本发明实例中,上述分布式存储系统中的任意节点02,可能由一个实体设备实现,例如电脑、便携式移动终端或者服务器,也可能由多个实体设备共同实现。可以理解的是,分布式存储系统中的任意功能节点02都可能是实体设备内的一个逻辑功能模块,也可能是由多个实体设备组成的一个逻辑功能模块。因此,在下述的本发明实施例中,可以由一个实体设备执行本发明实施例提供的方法中的各个步骤,可以由多个实体设备协作执行本发明实施例提供的方法中的各个步骤,对此本发明不作限定。
另外,docker系统内节点02的具体结构将在后续实施例中详细阐述,故此处不再赘述。
示例性的,如图3所示,第一节点内存储有镜像1的元数据1,第二节点内存储有镜像1的元数据1和镜像2的元数据2,而镜像1的镜像数据1和镜像2的镜像数据2均统一存储在分布式存储系统03中,那么,当第一节点1需要下载(pull)镜像2的镜像数据时,第一节点只需从仓库服务器01获取镜像2的元数据2并保存至第一节点本地,进而根据镜像2的元数据2从分布式存储系统03中读取镜像2的镜像数据2。
可以看出,基于上述docker系统,节点02在下载所需的镜像时,只需要从仓库服务器01获取该镜像的元数据,不用像现有技术那样同时从仓库服务器01获取镜像的元数据和镜像数据,从而可降低docker系统的开销。
同时,由于各节点02内镜像的镜像数据均统一存储在分布式存储系统03中,那么,每个镜像的镜像数据只用在分布式存储系统03中保存一份,从而避免了现有技术中,大量节点内保存相同的镜像而导致存储空间的浪费的问题。
当然,与现有技术类似的,图2中所示的docker系统中的部分节点02,也可以将镜像的镜像数据存储在仓库服务器01内,此时,这部分节点02仍可按照现有技术的方法,向仓库服务器01上传镜像数据和元数据,以及从仓库服务器01下载镜像数据和元数据,本发明对此不作任何限制。
进一步地,仓库服务器01内用于存储镜像数据的存储单元也可以设置在分布式存储系统03中,也就是说,如图4所示,可通过设置仓库驱动04,将仓库服务器01内存储的镜像数据保存至分布式存储系统03中,这样一来,节点02生成某个镜像时,由于该镜像的镜像数据可直接在分布式存储系统03中生成,因此,节点02向仓库服务器01上传(push)镜像时,只需将镜像的元数据发送给仓库服务器01,从而避免节点02向仓库服务器01上传镜像数据,可进一步减少镜像数据的传输次数,从而降低docker系统的开销。
进一步地,如图5所示,为docker系统中节点02的架构图。其中,docker系统中节点02具体包括:客户端11(即docker client)、服务端12、驱动13(即docker driver)、容器管理库14(即libcontainer)、容器15(即Docker container)以及支持上述架构的底层模块16(即rootfs)。
其中,客户端11(即docker client)是docker架构中用户用来和服务端12建立通信的客户端。用户通过客户端11使用docker命令行发送容器管理请求后,由服务端12接收并处理该容器管理请求。
服务端12(即docker daemon)具体可包括docker架构中的运行引擎,即dockerengine,以及专门服务于客户端11的docker服务器。
其中,docker服务器可以接收并调度分发客户端11发送的各种请求,具体包括HTTP服务器、路由器(Router)以及处理模块(Handler)。
而docker engine负责镜像以及容器的生命周期管理,例如镜像的下载(pull)和上传(push)操作,以及容器的实例化操作等。另外,docker engine可以与图2或图4中的仓库服务器01进行通信。
驱动13(即docker driver),可以实现对docker容器执行环境的设置。由于在docker运行的生命周期中,并非用户所有的操作都是针对docker容器的管理,另外还有关于docker运行信息的获取等,因此,为了将Docker容器的管理从docker engine内部的业务逻辑中区分开来,设置了驱动13来管理这部分非docker容器的管理请求。其中,在dockerdriver的实现中,可以分为以下三类驱动:graphdriver(图驱动)、networkdriver(网络驱动)和execdriver(扩展驱动)。
容器管理库14(即libcontainer)是docker架构中一个使用Go语言设计实现的库,通过调用libcontainer,可操纵容器的namespace、cgroups、apparmor、网络设备以及防火墙规则等。
容器15(即docker container)是docker架构中服务交付的最终体现形式,可按照用户的需求与指令,订制相应的Docker容器。
底层模块16,即rootfs(root file system),包含典型Linux系统中的标准目录和文件,也可称之为根文件系统。
基于上述图5所示的docker架构图,如图6所示,本发明实施例提供的节点02还增设了镜像管理模块100(即Images Manager),镜像管理模块100可分别与服务端12和仓库服务器01进行通信,作为客户端11访问仓库服务器01的代理。
另外,镜像管理模块100还用于维护节点02上的镜像的元数据,以及维护镜像在分布式存储系统03中的引用次数,判断节点02需要的镜像数据是否在分布式存储系统03中存在等。
以下,将结合图2-图6提供的docker系统,详细阐述本发明实施例提供的一种镜像管理方法,其中,本发明实施例提供的镜像管理方法具体可涉及镜像的下载(pull)方法、镜像的上传(push)方法以及镜像的删除(delete)方法,下述实例中将一一介绍。
如图7所示,本发明实施例提供一种镜像下载方法,包括:
101、第一节点向仓库服务器发送下载请求,该下载请求中携带有第一元数据的标识。
102、仓库服务器根据该下载请求查找与第一元数据的标识对应的第一元数据。
103、第一节点接收仓库服务器发送的第一元数据,
104、第一节点将该第一元数据保存至第一节点内的本地仓库。
105、第一节点将为第一镜像预置的引用计数器执行加1操作。
106、第一节点根据该第一元数据,查找分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据。
107、若分布式存储系统中存储有第一镜像数据,则第一节点从分布式存储系统中获该取第一镜像数据。
在步骤101中,当第一节点(该第一节点为上述docker系统中的任一节点)需要使用第一镜像(该第一镜像包括第一镜像数据和第一元数据),且第一节点内并未存储有该第一镜像的第一元数据时,第一节点向仓库服务器发送下载请求,该下载请求中携带有第一元数据的标识,例如,第一元数据的ID等。
例如,如图3所示,节点1内存储有镜像1的元数据,节点2内存储有镜像1和镜像2的元数据,而镜像1和镜像2的镜像数据均统一存储在分布式存储系统03中,那么,当节点1需要镜像2的镜像数据时,若确定自身并未存储镜像2的元数据,则向仓库服务器发送下载请求,该下载请求中携带有镜像2的元数据的标识。
具体的,如图6所示,第一节点内的客户端11生成下载请求,并发送至服务端12,镜像管理模块100代理服务端12与仓库服务器通信,向仓库服务器发送该下载请求。
在步骤102中,仓库服务器接收到第一节点发送的下载请求后,根据下载请求中携带的第一元数据的标识,查找与第一元数据的标识对应的第一元数据。其中,仓库服务器内存储有docker系统内所有镜像的元数据。
进一步地,仓库服务器将查找到的第一元数据发送至第一节点的镜像管理模块100。
在步骤103中,镜像管理模块100接收到仓库服务器发送的该第一元数据。
进而,在步骤104中,第一节点将该第一元数据保存至第一节点内的本地仓库,进而通过执行下述步骤105-106获取第一镜像数据,以便于第一节点后续再次需要第一镜像数据时,可通过查找本地存储的第一元数据,直接根据第一元数据内第一镜像的名称或叶子ID等属性从分布式存储系统中获该取第一镜像数据。
在步骤105中,若镜像管理模块100接收到仓库服务器发送的该第一元数据,第一节点还可以将第一镜像的引用计数器执行加1操作。
具体的,在docker系统中,可以为每一个镜像预置一个引用计数器,用来记录该镜像的使用次数,对某个镜像的引用计数器而言,该引用计数器可设置在分布式存储系统中,docker系统内的N个节点可以共享该引用计数器,当节点执行镜像下载操作时,镜像管理模块100便将对应镜像的引用计数器进行加1操作,由于同一个镜像可以同时被多个节点使用,因此,该镜像的引用计数器可用于指示该镜像的使用次数,当计数器为0时,则说明没有节点使用该镜像。
需要说明的是,步骤104-105为可选步骤,并且,步骤104与步骤105的执行顺序不做限定。
在步骤106中,镜像管理模块100根据仓库服务器发送的该第一元数据,可与服务端12建立通信,进而查找分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据。
由于本发明实施例中给出了分别如图2和图4所示的两种docker系统,因此,基于图2所示的docker系统,由于仓库服务器中用于存储镜像数据的存储单元未设置在分布式存储系统中,因此,第一节点所需的第一镜像的第一镜像数据有可能存储在该分布式存储系统中,也有可能存储在仓库服务器内,此时,第一节点接收到第一元数据后,由于第一元数据中携带有第一镜像数据的名称、标签等属性特征,因此,第一节点可根据该第一镜像数据的属性特征查找分布式存储系统中是否存储有与该第一元数据对应的第一镜像数据。
进一步地,若分布式存储系统中存储有第一镜像数据,则在步骤107中,第一节点从该分布式存储系统中获该取第一镜像数据,若分布式存储系统中未存储有第一镜像数据,则第一节点可从仓库服务器内获取与该第一元数据对应的第一镜像数据。
另外,基于图4所示的docker系统,由于仓库服务器内用于存储镜像数据的存储单元也可以设置在分布式存储系统中,也就是说,仓库服务器内存储的镜像数据与各个节点内的镜像数据,均位于分布式存储系统中,因此,第一节点接收到第一元数据后,可直接根据第一元数据中携带的第一镜像数据的属性特征从该分布式存储系统中获该取第一镜像数据。
至此,基于上述docker系统,本发明的实施例提供一种镜像下载方法,其中,第一节点向仓库服务器发送下载请求,该下载请求中携带有第一元数据的标识,以使得向仓库服务器根据下载请求查找与第一元数据的标识对应的第一元数据;进而,若接收到仓库服务器发送的第一元数据,则第一节点根据第一元数据从分布式存储系统中获取与第一元数据对应的第一镜像数据,这样一来,在镜像下载过程中,由于docker系统中各节点内镜像的镜像数据均存储在分布式存储系统中,因此,第一节点与仓库服务器之间只需要传输镜像的元数据,而不需要传输镜像的镜像数据,可减少镜像数据的传输次数,并提高存储空间的利用率,从而降低docker系统的开销。
另外,基于上述实施例中的步骤101-107,本发明的实施例还提供一种镜像删除方法,该方法用于删除docker系统中任意节点内的镜像。
示例性的,以删除上述实施例中第一节点内的第一镜像为例,该第一镜像包括第一元数据和第一镜像数据。
具体的,第一节点内的客户端11向服务端12发送删除第一镜像的删除请求,服务端12将该删除请求转发至镜像管理模块100,镜像管理模块100根据该删除请求删除第一节点内存储的第一元数据,进而,镜像管理模块100对第一镜像在分布式存储系统中的引用计数器执行减1操作,以指示该第一镜像的使用次数减1。
可以看出,由于第一镜像在分布式存储系统中可以同时被多个节点使用,因此,第一节点无需删除第一镜像的第一镜像数据,只需删除第一节点内存储的第一元数据,并将第一镜像的引用计数器进行减1即可。
进一步地,如图8所示,以上述第一节点向仓库服务器上传第一镜像为例,本发明实施例提供一种镜像上传方法,包括:
201、第一节点生成第一镜像,该第一镜像包括第一镜像数据和第一元数据。
202、第一节点向仓库服务器发送上传请求,该上传请求中携带有第一元数据。
203、仓库服务器保存该第一元数据。
204、(可选)仓库服务器向第一节点发送第一上传成功消息。
205、(可选)第一节点向仓库服务器发送第一镜像数据。
206、(可选)仓库服务器将该第一镜像数据保存至分布式存储系统中。
207、(可选)仓库服务器向第一节点发送第二上传成功消息。
在步骤201中,第一节点(该第一节点为上述docker系统中的任一节点)在运行过程中可生成新镜像,该新镜像即为步骤201中所述的第一镜像,该第一镜像具体包括第一镜像数据和第一元数据。
在步骤202中,在第一节点生成第一镜像后,第一节点向仓库服务器发送上传请求,请求将该第一镜像存储至仓库服务器中,以便于其他节点需要使用该第一镜像时,可以通过向仓库服务器发送下载请求获取该第一镜像,其中,第一节点发送的上传请求中携带有该第一镜像的第一元数据。
这里需要说明的是,生成该第一镜像的步骤可以由第一节点内的服务端12执行,那么,当第一节点的服务端12设置在图2或图4中所示的分布式存储系统中时,服务端12生成的第一镜像中包含的第一镜像数据便直接存储在了该分布式存储系统中,此时,在步骤203中,仓库服务器接收第一节点发送的该第一元数据之后,直接保存该第一元数据即可。
可选的,在仓库服务器保存该第一元数据之后,在步骤204中,仓库服务器还可以向第一节点发送第一上传成功消息,以告知第一节点该第一元数据上传成功。
可以看出,在这种情况下,第一节点只需向仓库服务器上传生成的新镜像的元数据即可,无需上传新镜像的镜像数据,从而可减少docker系统中镜像数据的传输次数,降低整个docker系统的开销。
又或者,当服务端12未设置在图4中所示的分布式存储系统中时,第一节点为了将第一镜像数据存储至该分布式存储系统中,还需要执行步骤205-207。
其中,在步骤205中,第一节点向仓库服务器发送该第一镜像数据。进而,在步骤206中,仓库服务器可调用如图4所示的仓库驱动04,将该第一镜像数据保存至分布式存储系统中。同样可选的,仓库服务器还可以向第一节点发送第二上传成功消息,以告知第一节点该第一镜像数据上传成功。
另外,基于上述实施例中的步骤101-107以及步骤201-207,本发明的实施例还提供另一种镜像删除方法,该方法用于删除docker系统中的仓库服务器内的镜像。
示例性的,如图9所示,以删除仓库服务器内的第一镜像(该第一镜像包括第一镜像数据和第一元数据)为例,本发明实施例提供一种镜像删除方法,包括:
301、仓库服务器接收第一节点发送的删除请求,该删除请求用于指示删除仓库服务器内的第一镜像。
302、仓库服务器根据该删除请求,删除仓库服务器内的第一元数据。
303、仓库服务器判断第一镜像的引用计数器是否为0。
304、若第一镜像的引用计数器为0,则仓库服务器删除存储在分布式存储系统中的第一镜像数据。
在步骤301中,第一节点(该第一节点为上述docker系统中的任一节点)内的服务端12,例如HTTP服务器,可以向仓库服务器发送删除请求,该删除请求用于指示删除仓库服务器内的第一镜像,例如,该删除请求中携带有第一镜像的第一元数据的标识。
进而,在步骤302中,仓库服务器根据接收到的该删除请求,首先删除仓库服务器内的第一元数据。
进一步地,由于docker系统中各节点中镜像的镜像数据均统一存储在分布式存储系统中,甚至,仓库服务器内的镜像数据也可以存储在该分布式存储系统中,因此,仓库服务器在删除第一镜像的第一镜像数据时,需要确定各个节点均未使用该第一镜像后,才能删除该第一镜像数据。
当然,由于上述删除请求是第一节点发送给仓库服务器的,因此,仓库服务器可默认第一节点未使用该第一镜像,进而只需确定除第一节点外的其他节点均未使用该第一镜像即可。
示例性的,如前所述,在docker系统中,可以为每一个镜像预置引用计数器,用来记录该镜像的使用次数,因此,在步骤303中,仓库服务器可以通过判断第一镜像的引用计数器是否为0,来确定该第一镜像是否被一个或多个节点使用。
具体的,仓库服务器可以调用图4中的仓库驱动04在分布式存储系统中查找第一镜像的引用计数器,若第一镜像的引用计数器为0,则说明在当前的docker系统中没有节点使用该第一镜像,此时,在步骤304中,仓库服务器删除存储在分布式存储系统中的第一镜像数据,从而完成该第一镜像的删除操作。
至此,本发明实施例提供的一种镜像管理方法,具体可包括镜像的下载方法、镜像的上传方法以及镜像的删除方法,其中,在本发明实施例提供的docker系统中,可对镜像的镜像数据和元数据分别进行管理,各节点中镜像的镜像数据均统一存储在分布式存储系统中,也就是说,各节点可以共享分布式存储系统中的镜像数据,这样一来,不但可以避免现有技术中大量节点内保存相同的镜像而导致存储空间的浪费的问题,还使得各个节点以及仓库服务器只需要管理自身内镜像的元数据即可,从而可减少镜像数据的传输次数,降低docker系统的开销。
图10为本发明实施例提供的一种docker系统内节点02的结构示意图,本发明实施例提供的节点02可以用于实施上述图2-图9所示的本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图2-图9所示的本发明各实施例。
具体的,如图10所示,节点02包括:镜像生成单元21,发送单元22以及保存单元23。
其中,镜像生成单元21,用于生成第一镜像,所述第一镜像包括第一元数据和第一镜像数据;
发送单元22,用于向仓库服务器发送上传请求,所述上传请求中携带有所述第一元数据,以使得所述仓库服务器保存所述第一元数据;
保存单元23,用于将所述第一镜像数据保存至所述分布式存储系统中。
进一步地,所述发送单元22,还用于向所述仓库服务器发送所述第一镜像数据,以使得所述仓库服务器将所述第一镜像数据保存至所述分布式存储系统中。
进一步地,如图11所示,所述节点02还包括获取单元24和查找单元25,其中,
所述发送单元22,还用于向所述仓库服务器发送下载请求,所述下载请求中携带有第一元数据的标识;
所述获取单元24,用于接收所述仓库服务器发送的与所述第一元数据的标识对应的第一元数据;以及若所述分布式存储系统中存储有所述第一镜像数据,则从所述分布式存储系统中获取所述第一镜像数据;
所述查找单元25,用于根据所述第一元数据,查找所述分布式存储系统中是否存储有与所述第一元数据对应的第一镜像数据。
进一步地,所述获取单元24,还用于若所述分布式存储系统中未存储有所述第一镜像数据,则从所述仓库服务器中获取所述第一镜像数据。
进一步地,所述保存单元23,还用于所述第一元数据保存至所述第一节点内的本地仓库。
进一步地,如图12所示,所述节点02还包括:
计数单元26,用于对为第一镜像预置的引用计数器执行加1操作。
进一步地,如图13所示,所述节点02还包括删除单元27,其中,
所述删除单元27,用于删除所述第一节点内的所述第一元数据;
所述计数单元26,还用于对所述引用计数器执行减1操作。
其中,上述镜像生成单元21,发送单元22、保存单元23、发送单元24、获取单元24、查找单元25以及计数单元26的具体功能均可以由图6所示的镜像管理模块100与图6所示的客户端11、服务端12、驱动13、容器管理库14和容器15进行交互实现。
另外,图14为本发明实施例提供的一种docker系统内仓库服务器01的结构示意图,本发明实施例提供的仓库服务器01可以用于实施上述图2-图9所示的本发明各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照图2-图9所示的本发明各实施例。
具体的,如图14所示,仓库服务器01包括:接收单元31和删除单元32。
其中,接收单元31,用于接收第一节点发送的删除请求,所述删除请求用于指示删除所述仓库服务器内的第一镜像,所述第一镜像包括第一元数据和第一镜像数据,所述第一节点为所述docker系统内N个节点中的任一个;
删除单元32,用于根据所述删除请求,删除所述仓库服务器内的所述第一元数据;若所述各个节点均未使用所述第一镜像,则删除存储在所述分布式存储系统中的所述第一镜像数据。
进一步地,如图15所示,所述仓库服务器01还包括判断单元33,其中,所述判断单元33,用于判断所述第一镜像的引用计数器是否为0;所述删除单元32,具体用于若所述第一镜像的引用计数器为0,则删除存储在所述分布式存储系统中的所述第一镜像数据。
如图16所示,图10-13中所示的节点02或图14-15中所示的仓库服务器01可以以图16中的计算机设备(或系统)的方式来实现。
图16所示为本发明实施例提供的计算机设备示意图。计算机设备100包括至少一个处理器41,通信总线42,存储器43以及至少一个通信接口44。
例如,上述接收单元31、删除单元32以及判断单元33的具体功能均可以由仓库服务器01内的处理器41调用存储器43内的计算机指令实现。
具体的,处理器41可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。
通信总线42可包括一通路,在上述组件之间传送信息。所述通信接口44,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器43可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器43可以是独立存在,通过总线与处理器相连接。存储器43也可以和处理器集成在一起。
其中,所述存储器43用于存储执行本发明方案的应用程序代码,并由处理器41来控制执行。所述处理器41用于执行所述存储器43中存储的应用程序代码。
在具体实现中,作为一种实施例,处理器41可以包括一个或多个CPU,例如图16中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备100可以包括多个处理器,例如图16中的处理器41和处理器48。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备100还可以包括输出设备45和输入设备46。输出设备45和处理器41通信,可以以多种方式来显示信息。例如,输出设备45可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备46和处理器41通信,可以以多种方式接受用户的输入。例如,输入设备46可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备100可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备100可以是台式机、便携式电脑、网络服务器、掌上电脑(Personal Digital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图16中类似结构的设备。本发明实施例不限定计算机设备100的类型。
需要说明的是,在本发明实例中,上述docker系统中的任意一种功能节点,例如,仓库服务器01、节点02,可能由一个实体设备实现,也可能由多个实体设备共同实现,docker系统中的各个功能节点可能分别由不同的实体设备实现,也可能都由同一个实体设备实现。可以理解的是,docker系统中的任意一种功能节点都可能是实体设备内的一个逻辑功能模块,也可能是由多个实体设备组成的一个逻辑功能模块。
至此,本发明实施例提供的一种镜像管理装置,具体包括仓库服务器和各个节点,其中,在本发明实施例提供的docker系统中,可对镜像的镜像数据和元数据分别进行管理,各节点中镜像的镜像数据均统一存储在分布式存储系统中,也就是说,各节点可以共享分布式存储系统中的镜像数据,这样一来,不但可以避免现有技术中大量节点内保存相同的镜像而导致存储空间的浪费的问题,还使得各个节点以及仓库服务器只需要管理自身内镜像的元数据即可,从而可减少镜像数据的传输次数,降低docker系统的开销。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种镜像管理方法,其特征在于,所述方法应用于容器系统,所述容器系统包括仓库服务器以及与所述仓库服务器相连的N个节点,每个节点包括存储模块,N为大于或等于2的整数;所述方法包括:
第一节点向所述仓库服务器发送下载请求,所述下载请求中携带有第一镜像的第一元数据的标识,所述第一节点为所述N个节点中的任一个;
所述第一节点接收所述仓库服务器发送所述第一元数据;
所述第一节点根据所述第一元数据从所述N个节点的存储模块中获取所述第一镜像的第一镜像数据。
2.根据权利要求1中所述的方法,其特征在于,所述第一节点根据所述第一元数据从所述N个节点的存储模块中获取所述第一镜像数据之前,所述方法还包括:
所述第一节点根据所述第一元数据,确定所述N个节点的存储模块中存储有与所述第一元数据对应的第一镜像数据。
3.根据权利要求1-2中任一所述的方法,其特征在于,在所述第一节点接收到所述仓库服务器发送的第一元数据之后,所述方法还包括:
所述第一节点将所述第一元数据保存至所述第一节点内的本地仓库。
4.根据权利要求3中所述的方法,其特征在于,所述第一节点将所述第一元数据保存至所述第一节点内的本地仓库之后,所述方法还包括:
所述第一节点对所述第一镜像的引用计数器执行加1操作。
5.根据权利要求1、2、4中任一所述的方法,其特征在于,所述方法还包括:
所述第一节点生成第二镜像,所述第二镜像包括第二元数据和第二镜像数据;
所述第一节点向所述仓库服务器发送上传请求,所述上传请求中携带有所述第二元数据,以使得所述仓库服务器保存所述第一元数据;
所述第一节点将所述第二镜像数据保存至所述N个节点的存储模块。
6.根据权利要求5中所述的方法,其特征在于,所述第一节点将所述第二镜像数据保存至所述N个节点的存储模块,包括:
所述第一节点向所述仓库服务器发送所述第二镜像数据,以使得所述仓库服务器将所述第二镜像数据保存至所述N个节点的存储模块。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述第一节点确定删除所述第一节点内的第三镜像,所述第三镜像包括第三元数据;
所述第一节点删除所述第一节点内的所述第三元数据;
所述第一节点对所述第一镜像的引用计数器执行减1操作。
8.一种镜像管理方法,其特征在于,所述方法应用于容器系统,所述容器系统包括仓库服务器以及与所述仓库服务器相连的N个节点,每个节点包括存储模块,N为大于或等于2的整数;所述方法包括:
所述仓库服务器接收第一节点发送的删除请求,所述删除请求用于指示删除所述仓库服务器内的第一镜像,所述第一镜像包括第一元数据和第一镜像数据,所述第一节点为所述容器系统内N个节点中的任一个;
所述仓库服务器根据所述删除请求,删除所述仓库服务器内的所述第一元数据;
若所述N个节点均未使用所述第一镜像,则所述仓库服务器删除存储在所述N个节点的存储模块中的所述第一镜像数据。
9.根据权利要求8所述的方法,其特征在于,若所述N个节点均未使用所述第一镜像,则所述仓库服务器删除存储在所述N个节点的存储模块中的第一镜像数据,包括:
所述仓库服务器判断所述第一镜像的引用计数器是否为0;
若所述第一镜像的引用计数器为0,则所述仓库服务器删除存储在所述N个节点的存储模块中的所述第一镜像数据。
10.一种容器系统,其特征在于,所述系统包括:仓库服务器以及与所述仓库服务器相连的N个节点,每个节点包括存储模块,N为大于或等于2的整数;其中,
第一节点,用于:向所述仓库服务器发送下载请求,所述下载请求中携带有第一镜像的第一元数据的标识,所述第一节点为所述N个节点中的任一个;接收所述仓库服务器发送所述第一元数据;根据所述第一元数据从所述N个节点的存储模块中获取所述第一镜像的第一镜像数据;
所述仓库服务器,用于:接收所述第一节点发送的所述下载请求;根据所述下载请求中的第一元数据的标识查找所述第一元数据;并将所述第一元数据发送至所述第一节点。
11.根据权利要求10中所述的系统,其特征在于,根据所述第一元数据从所述N个节点的存储模块中获取所述第一镜像数据之前,所述第一节点还用于:
根据所述第一元数据,确定所述N个节点的存储模块中存储有与所述第一元数据对应的第一镜像数据。
12.根据权利要求10或11所述的系统,其特征在于,在接收到所述仓库服务器发送的第一元数据之后,所述第一节点还用于:
将所述第一元数据保存至所述第一节点内的本地仓库。
13.根据权利要求12中所述的系统,其特征在于,将所述第一元数据保存至所述第一节点内的本地仓库之后,所述第一节点还用于:
对所述第一镜像的引用计数器执行加1操作。
14.根据权利要求10、11、或13中任一所述的系统,其特征在于,
所述第一节点还用于:生成第二镜像,所述第二镜像包括第二元数据和第二镜像数据;将所述第二镜像数据保存至所述N个节点的存储模块;向所述仓库服务器发送上传请求,所述上传请求中携带有所述第二元数据;
所述仓库服务器,用于:接收所述第一节点发送的所述上传请求;并保存所述上传请求中的所述第二元数据。
15.根据权利要求14所述的系统,其特征在于,所述仓库服务器包括仓库驱动;其中,
将所述第二镜像数据保存至所述N个节点的存储模块,具体包括:所述第一节点用于:向所述仓库服务器发送所述第二镜像数据;
所述仓库服务器,还用于:接收所述第一节点发送的所述第二镜像数据;并调用所述仓库驱动将所述第二镜像数据保存至所述N个节点的存储模块。
16.根据权利要求15中所述的系统,其特征在于,
所述第一节点,还用于:确定删除所述第一节点内的第三镜像,所述第三镜像包括第三元数据;删除所述第一节点内的所述第三元数据;删除所述第一节点内的所述第一元数据;对所述第一镜像的引用计数器执行减1操作。
17.根据权利要求16所述的系统,其特征在于,
所述第一节点,还用于向所述仓库服务器发送删除请求,所述删除请求用于指示删除所述仓库服务器内的所述第三镜像;
所述仓库服务器,还用于:接收所述第一节点发送的所述删除请求;根据所述删除请求,删除所述仓库服务器内的所述第三元数据;若所述N个节点均未使用所述第三镜像,则删除存储在所述N个节点的存储模块中的所述第三镜像的镜像数据。
18.一种节点,其特征在于,所述节点适用于容器系统,所述容器系统包括仓库服务器和N个所述节点;所述节点包括接口和处理器,所述接口用于与所述N个节点中的其他节点及所述仓库服务器通信,所述处理器用于执行权利要求1-7中所述的方法,N为大于或等于2的整数。
19.一种仓库服务器,其特征在于,所述仓库服务器属于容器系统,所述容器系统还包括N个节点,所述仓库服务器包括接口和处理器,所述接口用于与所述N个节点通信,所述处理器用于执行权利要求8-9中所述的方法,N为大于或等于2的整数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910145316.2A CN109976667B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910145316.2A CN109976667B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
CN201610051837.8A CN105740048B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610051837.8A Division CN105740048B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109976667A CN109976667A (zh) | 2019-07-05 |
CN109976667B true CN109976667B (zh) | 2021-09-14 |
Family
ID=56247362
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910145316.2A Active CN109976667B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
CN201610051837.8A Active CN105740048B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610051837.8A Active CN105740048B (zh) | 2016-01-26 | 2016-01-26 | 一种镜像管理方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN109976667B (zh) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107797806A (zh) * | 2016-08-29 | 2018-03-13 | 北京雪球信息科技有限公司 | 一种程序的部署方法 |
CN106506587B (zh) * | 2016-09-23 | 2021-08-06 | 中国人民解放军国防科学技术大学 | 一种基于分布式存储的Docker镜像下载方法 |
CN106708599B (zh) * | 2016-12-01 | 2020-08-25 | 携程旅游信息技术(上海)有限公司 | 虚拟机镜像下发系统及方法 |
CN108205481B (zh) * | 2016-12-19 | 2022-03-08 | 华为技术有限公司 | 应用的容器实例创建方法和装置 |
CN106997392B (zh) * | 2017-04-10 | 2020-03-03 | 北京搜狐新媒体信息技术有限公司 | Docker镜像缓存信息的处理方法、装置以及读取方法和装置 |
CN107105054B (zh) * | 2017-05-17 | 2019-12-24 | 苏州浪潮智能科技有限公司 | 一种面向docker镜像仓库的镜像垃圾清理系统及方法 |
CN107515776B (zh) * | 2017-07-18 | 2021-04-09 | 深信服科技股份有限公司 | 业务不间断升级方法、待升级节点和可读存储介质 |
CN107450961B (zh) * | 2017-09-22 | 2020-10-16 | 济南浚达信息技术有限公司 | 一种基于Docker容器的分布式深度学习系统及其搭建方法、工作方法 |
CN109669808A (zh) * | 2017-10-17 | 2019-04-23 | 中移(苏州)软件技术有限公司 | 一种系统备份的方法及设备 |
CN109962843B (zh) * | 2017-12-22 | 2021-04-27 | 上海威派格智慧水务股份有限公司 | 物联网网关实现边缘信息处理的方法 |
CN108156246B (zh) * | 2017-12-27 | 2020-12-04 | 北京微网通联股份有限公司 | 一种文件分发方法、系统、服务器及客户端 |
CN110099076A (zh) * | 2018-01-29 | 2019-08-06 | 中兴通讯股份有限公司 | 一种镜像拉取的方法及其系统 |
CN110198330B (zh) * | 2018-03-27 | 2022-03-22 | 腾讯科技(深圳)有限公司 | 镜像下载方法和装置 |
US11132293B2 (en) | 2018-04-10 | 2021-09-28 | Red Hat Israel, Ltd. | Intelligent garbage collector for containers |
CN108647248B (zh) * | 2018-04-16 | 2021-03-09 | 新华三技术有限公司成都分公司 | Worm状态监控转移方法及装置 |
CN110874255B (zh) * | 2018-08-29 | 2025-01-24 | 中兴通讯股份有限公司 | 一种垃圾清理方法及装置、设备、存储介质 |
CN110908671A (zh) * | 2018-09-18 | 2020-03-24 | 北京京东尚科信息技术有限公司 | 构建docker镜像的方法、装置及计算机可读存储介质 |
CN109936571B (zh) * | 2019-02-22 | 2020-05-29 | 全球能源互联网研究院有限公司 | 一种海量数据共享方法、开放共享平台及电子设备 |
CN109951551B (zh) * | 2019-03-21 | 2021-03-19 | 联想(北京)有限公司 | 一种容器镜像管理系统及方法 |
CN111857939A (zh) * | 2019-04-24 | 2020-10-30 | 北京京东尚科信息技术有限公司 | 镜像删除和推送的方法、系统、电子设备及存储介质 |
CN110119251B (zh) * | 2019-05-14 | 2023-01-03 | 北京杰思安全科技有限公司 | 一种基于磁盘大流量的缓冲控制方法和系统 |
CN110347535B (zh) * | 2019-07-16 | 2020-05-26 | 北京谷数科技股份有限公司 | 一种提升双控制器写性能的方法 |
CN110704162B (zh) * | 2019-09-27 | 2022-09-20 | 北京百度网讯科技有限公司 | 物理机共享容器镜像的方法、装置、设备及存储介质 |
CN111221623B (zh) * | 2019-12-26 | 2024-01-19 | 中科曙光国际信息产业有限公司 | 镜像库管理系统 |
CN113872999A (zh) | 2020-06-30 | 2021-12-31 | 中兴通讯股份有限公司 | 镜像分发方法、电子设备及存储介质 |
CN112748879B (zh) * | 2020-12-30 | 2023-03-10 | 中科曙光国际信息产业有限公司 | 数据获取方法、系统、装置、计算机设备和存储介质 |
CN114218182A (zh) * | 2021-12-07 | 2022-03-22 | 中信银行股份有限公司 | 一种学习方法、装置、设备及可读存储介质 |
CN117667298A (zh) * | 2022-08-31 | 2024-03-08 | 成都华为技术有限公司 | 启动容器的方法、装置、计算节点、共享存储设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761275A (zh) * | 2014-01-09 | 2014-04-30 | 浪潮电子信息产业股份有限公司 | 一种分布式文件系统中元数据的管理方法 |
CN104391802A (zh) * | 2014-11-24 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种精简池元数据节点刷新一致性保护方法 |
CN104516967A (zh) * | 2014-12-25 | 2015-04-15 | 国家电网公司 | 一种电力系统海量数据管理系统及其使用方法 |
WO2015127083A2 (en) * | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
CN104885076A (zh) * | 2012-05-10 | 2015-09-02 | 以太存储股份有限公司 | 分布式存储的系统和方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008037094B4 (de) * | 2008-05-08 | 2015-07-30 | Siemens Aktiengesellschaft | Speichern und Bereitstellen von medizinischen Bilddaten in einem computerbasierten verteilten System |
US8495356B2 (en) * | 2010-12-31 | 2013-07-23 | International Business Machines Corporation | System for securing virtual machine disks on a remote shared storage subsystem |
CN102932415B (zh) * | 2012-09-26 | 2015-04-15 | 东软集团股份有限公司 | 一种镜像文件存储方法及装置 |
CN103544045A (zh) * | 2013-10-16 | 2014-01-29 | 南京大学镇江高新技术研究院 | 一种基于hdfs的虚拟机镜像存储系统及其构建方法 |
US20150149410A1 (en) * | 2013-11-27 | 2015-05-28 | Microsoft Corporation | Publishing to a content delivery system |
CN104731516B (zh) * | 2013-12-18 | 2019-03-01 | 腾讯科技(深圳)有限公司 | 一种存取文件的方法、装置及分布式存储系统 |
CN104951308B (zh) * | 2015-06-30 | 2019-05-21 | 北京奇虎科技有限公司 | Docker Registry的管理优化方式及装置 |
CN105045656B (zh) * | 2015-06-30 | 2018-11-30 | 深圳清华大学研究院 | 基于虚拟容器的大数据存储与管理方法 |
CN105187500A (zh) * | 2015-08-07 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于容器的分布式存储系统部署方法 |
CN105094924B (zh) * | 2015-08-21 | 2018-06-26 | 华为技术有限公司 | 镜像文件的导入方法及装置 |
-
2016
- 2016-01-26 CN CN201910145316.2A patent/CN109976667B/zh active Active
- 2016-01-26 CN CN201610051837.8A patent/CN105740048B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104885076A (zh) * | 2012-05-10 | 2015-09-02 | 以太存储股份有限公司 | 分布式存储的系统和方法 |
CN103761275A (zh) * | 2014-01-09 | 2014-04-30 | 浪潮电子信息产业股份有限公司 | 一种分布式文件系统中元数据的管理方法 |
WO2015127083A2 (en) * | 2014-02-21 | 2015-08-27 | Solidfire, Inc. | Data syncing in a distributed system |
CN104391802A (zh) * | 2014-11-24 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种精简池元数据节点刷新一致性保护方法 |
CN104516967A (zh) * | 2014-12-25 | 2015-04-15 | 国家电网公司 | 一种电力系统海量数据管理系统及其使用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105740048B (zh) | 2019-03-08 |
CN105740048A (zh) | 2016-07-06 |
CN109976667A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976667B (zh) | 一种镜像管理方法、装置及系统 | |
US10515058B2 (en) | Unified file and object data storage | |
US10185626B2 (en) | Automatic application error detection and rollback | |
JP2017084334A (ja) | 仮想マシンイメージファイルを抽出する方法および装置 | |
CA2954294A1 (en) | Website access method, apparatus, and website system | |
US9590859B2 (en) | Discovering resources of a distributed computing environment | |
US20190258534A1 (en) | Message oriented middleware with integrated rules engine | |
WO2014120220A1 (en) | Providing access to information across multiple computing devices | |
CN109729121B (zh) | 一种云存储系统及用于云存储系统中实现自定义数据处理的方法 | |
CN113127430B (zh) | 镜像信息处理方法、装置、计算机可读介质及电子设备 | |
CN109828830B (zh) | 用于管理容器的方法和装置 | |
JP7366664B2 (ja) | オフラインブリーフケース同期 | |
CN107729421B (zh) | 存储过程的执行方法、装置及存储介质 | |
CN114443076A (zh) | 镜像构建方法、装置、设备及存储介质 | |
WO2024251107A1 (zh) | 容器编排与数据访问方法、电子设备及存储介质 | |
US12001458B2 (en) | Multi-cloud object store access | |
US20140059538A1 (en) | Virtual machine state tracking using object based storage | |
CN110851192B (zh) | 一种响应降级开关配置的方法和装置 | |
US10114864B1 (en) | List element query support and processing | |
CN113805858A (zh) | 持续部署脚本语言开发的软件的方法和装置 | |
CN107707620B (zh) | 处理io请求的方法及装置 | |
CN113760868B (zh) | 数据处理方法、装置及存储服务系统 | |
EP4170517B1 (en) | Integrating data with different configuration models | |
CN113326108B (zh) | 一种管理应用服务的方法和装置 | |
CN110209914B (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220218 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |