CN108228842A - Docker镜像库文件存储方法、终端、设备以及存储介质 - Google Patents

Docker镜像库文件存储方法、终端、设备以及存储介质 Download PDF

Info

Publication number
CN108228842A
CN108228842A CN201810016146.3A CN201810016146A CN108228842A CN 108228842 A CN108228842 A CN 108228842A CN 201810016146 A CN201810016146 A CN 201810016146A CN 108228842 A CN108228842 A CN 108228842A
Authority
CN
China
Prior art keywords
abstracted
bucket
file
storage
access instruction
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.)
Granted
Application number
CN201810016146.3A
Other languages
English (en)
Other versions
CN108228842B (zh
Inventor
刘俊杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201810016146.3A priority Critical patent/CN108228842B/zh
Priority to PCT/CN2018/077126 priority patent/WO2019134222A1/zh
Publication of CN108228842A publication Critical patent/CN108228842A/zh
Application granted granted Critical
Publication of CN108228842B publication Critical patent/CN108228842B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/168Details of user interfaces specifically adapted to file systems, e.g. browsing and visualisation, 2d or 3d GUIs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种Docker镜像库文件存储方法、终端、设备以及存储介质,其中,所述方法包括:将若干个镜像文件抽象成对象;确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;将所抽象的桶分配至不同的对象容器中;若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。本发明实施例实现镜像的自我管控,同时节省了镜像文件的存储成本。

Description

Docker镜像库文件存储方法、终端、设备以及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种Docker镜像库文件存储方法、终端、设备以及存储介质。
背景技术
现有技术中,采用传统的存储方式来存储镜像仓库的镜像文件,例如内存存储方式或者文件系统存储方式等等,由于镜像文件一般情况下较大,以内存存储或者文件系统存储的方式,导致迁移镜像文件的效率不高,并且存储过程需要消耗大量的存储设备,造成镜像文件的存储成本过高。
发明内容
有鉴于此,本发明实施例提供一种Docker镜像库文件存储方法、终端、设备以及存储介质,实现镜像的自我管控,同时节省了镜像文件的存储成本。
一方面,本发明实施例提供了一种Docker镜像库文件存储方法,该方法包括:
将若干个镜像文件抽象成对象;
确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;
将所抽象的桶分配至不同的对象容器中;
若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
进一步地,所述将若干个镜像文件抽象成对象,包括:
确定所述镜像文件对应的哈希值;
根据所述哈希值确定相对应的ID号;
根据所述ID号查找出所述镜像文件相对应的保存路径;
根据所查找的保存路径将若干个镜像文件抽象成对象。
进一步地,所述将所抽象的桶分配至不同的对象容器中,包括:
扫描所有桶中对象的对象名称;
识别当前所扫描的对象名称所对应的命名规范;
确定相同命名规范的对象;
将所确定的相同命名规范的对象分配至同一个对象容器中。
进一步地,所述将所抽象的桶分配至不同的对象容器中,包括:
确定所述对象容器进行存储的存储量;
根据所确定的存储量按照预设顺序对所述桶中的对象进行分配。
进一步地,所述根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户,包括:
根据所述访问指令将镜像仓库的驱动与对象存储系统对接;
将所述访问指令发送至对象存储系统中的对象容器中;
在所述对象容器中读取相对应的桶;
根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
另一方面,本发明实施例提供了一种Docker镜像库文件存储终端,所述终端包括:
抽象单元,用于将若干个镜像文件抽象成对象;
第一确定单元,用于确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;
分配单元,用于将所抽象的桶分配至不同的对象容器中;
读取单元,用于若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
进一步地,所述抽象单元,包括:
第二确定单元,用于确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号;
查找单元,用于根据所述ID号查找出所述镜像文件相对应的保存路径;
抽象子单元,用于根据所查找的保存路径将若干个镜像文件抽象成对象。
进一步地,所述分配单元,包括:
扫描单元,用于扫描所有桶中对象的对象名称;
识别单元,用于识别当前所扫描的对象名称所对应的命名规范;
第三确定单元,用于确定相同命名规范的对象;
第一分配子单元,用于将所确定的相同命名规范的对象分配至同一个对象容器中。
又一方面,本发明实施例还提供了一种Docker镜像库文件存储设备,其包括:
存储器,用于存储实现Docker镜像库文件存储方法的程序;以及
处理器,用于运行所述存储器中存储的实现Docker镜像库文件存储方法的程序,以执行如上所述的方法。
再一方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现如上所述的方法。
本发明实施例通过将若干个镜像文件抽象成对象;确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;将所抽象的桶分配至不同的对象容器中;若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。本发明实施例实现镜像的自我管控,同时节省了镜像文件的存储成本。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种Docker镜像库文件存储方法的示意流程图;
图2是本发明实施例提供的一种Docker镜像库文件存储方法的示意流程图;
图3是本发明实施例提供的一种Docker镜像库文件存储方法的示意流程图;
图4是本发明另一实施例提供的一种Docker镜像库文件存储方法的示意流程图;
图5是本发明另一实施例提供的一种Docker镜像库文件存储方法的示意流程图;
图6是本发明实施例提供的一种Docker镜像库文件存储终端的示意性框图;
图7是本发明实施例提供的一种Docker镜像库文件存储终端的另一示意性框图;
图8是本发明实施例提供的一种Docker镜像库文件存储终端的另一示意性框图;
图9是本发明实施例提供的一种Docker镜像库文件存储终端的另一示意性框图;
图10是本发明实施例提供的一种Docker镜像库文件存储终端的另一示意性框图;
图11是本发明实施例提供的一种Docker镜像库文件存储设备的结构组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
请参阅图1,图1为本发明实施例提供的一种Docker镜像库文件存储方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。本发明实施例所述的Docker镜像库文件存储方法,能够实现镜像的自我管控,同时节省了镜像文件的存储成本。图1是本发明实施例提供的Docker镜像库文件存储方法的示意流程图。该方法包括步骤S101~S104。
S101,将若干个镜像文件抽象成对象。
在本发明实施例中,在Docker镜像库中存储着不同的镜像文件,其中,Docker镜像库包括存储着镜像文件以及镜像文件的位置,具体的,Docker镜像库提供一个注册服务器,该注册服务器用于保存多个仓库,每个仓库又可以包含多个具备不同标签的镜像文件;在实际使用中,Docker镜像库运行中使用的默认仓库为Docker Hub公共仓库;对于Docker镜像库中的镜像文件的存储,所使用的存储方式有很多种方案,例如,可以是内存存储方式,也可以是文件系统形式的存储方式等等。
需要说明的是,考虑到镜像文件的结构特性,本发明实施例使用对象存储方式对镜像文件进行存储,将若干个镜像文件抽象成对象,比如将镜像文件1抽象成Object1,将镜像文件2抽象成Object2等等,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
下面以Docker镜像库中的tomcat镜像为例,对抽象过程进行说明:
Docker镜像库中的tomcat镜像,可以查询得到该镜像的版本为8,在Docker镜像库中tomcat镜像的存储一共可以分为三层,也就是说该镜像存在三个镜像文件,分别作为镜像文件1、镜像文件2、镜像文件3,获取三个镜像文件的哈希值,并读取哈希值所应的ID号,通过哈希值的ID号查找镜像文件的保存路径,不同的镜像文件的保存路径不相同,将不同镜像文件对应的不同的保存路径作为对象的名字对镜像文件进行抽象。
进一步地,如图2所示,步骤S101包括步骤S201~S203。
S201,确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号。
在本发明实施例中,在Docker镜像库中,每一个镜像文件都对应一个哈希值,通过FileHash()函数获取哈希值,具体的,通过FileName得到被获取哈希值对应的文件名,通过Type_获取对应的哈希值,函数执行成功后,将返回对应的哈希值。根据所述哈希值确定相对应的ID号,由于每一个哈希值都对应一个唯一ID号,或者是对应码,通过确定所述哈希值之后,可以利用hashID函数获取与哈希值对应的ID字段,将所获取的ID字段作为哈希值的ID号。
S202,根据所述ID号查找出所述镜像文件相对应的保存路径。
在本发明实施例中,每个镜像文件所查找出的保存路径的格式为:镜像名-镜像版本号-哈希值对应的ID号为例如,在Docker镜像库中tomcat镜像的存储一共分为三层,也就是说该镜像存在三个镜像文件,分别作为镜像文件1、镜像文件2、镜像文件3,获取三个镜像文件的哈希值,并读取哈希值所应的ID号,所读取的ID号分别为aaa111、bbb222、ccc333,那么通过该ID号查找镜像文件的保存路径可以为/myimage/tomcat/8/aaa111、/myimage/tomcat/8/bbb222、/myimage/tomcat/8/ccc333。
S203,根据所查找的保存路径将若干个镜像文件抽象成对象。
在本发明实施例中,将每个镜像文件对应的保存路径作为对象的名字对镜像文件进行抽象,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
S102,确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶。
在本发明实施例中,在本发明实施例中,每个镜像仓库包括多个镜像文件,将同一个镜像仓库的镜像文件抽象成的对象称为相同逻辑路径下的对象,所述将同一逻辑路径下的对象抽象成桶,例如,可以是将逻辑路径相同的三个对象抽象成桶1,也可以是将逻辑路径相同的四个对象抽象成桶2等等,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
下面将逻辑路径相同的三个对象抽象成桶1为例,对抽象过程进行说明,抽象的过程可以是:将分别保存为/myimage/tomcat/8/aaa111/myimage/tomcat/8/bbb222,/myimage/tomcat/8/ccc333的三个对象,均属于相同/myimage路径下的对象,因此,将/myimage作为桶名抽象成桶,而/myimage/tomcat/8/aaa111,/myimage/tomcat/8/bbb22,/myimage/tomcat/8/ccc333则作为桶/myimage中的对象。由于同一逻辑路径下存储着同一仓库的镜像文件抽象成的对象,因此,将相同逻辑路径下的对象抽象成桶保证了镜像文件的完整性。
S103,将所抽象的桶分配至不同的对象容器中。
在本发明实施例中,所述对象容器可以是磁盘,该磁盘的数量根据存储需要可以是一个或者多个,在将所抽象的桶分配至不同的磁盘中时,分配的方式为随机分散分配,所谓随机分散分配指的是,将桶中的不同对象随机分配至磁盘中,需要说明的是,将对象分配至磁盘的存储方式中,一个对象可以重复存储在不同的磁盘中,而且该对象为分散存储在不同的磁盘中,例如,将Bucker1中的Object1分配至磁盘1中,也可以同时将Bucket1中的Object1分配至磁盘2中;将Bucket2中的Object1分配至磁盘2中,也可以同时将Bucket2中的Object1分配至磁盘3中;将Bucket3中的Object1分配至磁盘3中,也可以同时将Bucket3中的Object1分配至磁盘4中等等。
需要说明的是,本实施例中的磁盘属于自研存储系统中的用于存储文件、数据的存储媒介,自研存储系统可以将系统处理完的文件/数据保存至磁盘,也可以从磁盘中读取已保存的文件/数据,镜像仓库对于自研存储系统而言属于外部设备,镜像仓库可以调用存储系统的接口(该接口为设置在自研存储系统中面向外部设备的端口),将镜像仓库中的对象文件交由自研存储系统保存,或者根据对象名从自研存储系统中读取相应的对象文件。
S104,若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
在本发明实施例中,对象容器为对象存储系统中的存储硬件,该存储硬件可以是磁盘,一个对象存储系统可以包括API Gateway、存储系统以及磁盘,若接收到用户的访问指令,访问指令需要通过镜像仓库支持的后端存储驱动,该驱动可以是AWS S3,OpenstackSwift,阿里云对象存储等等,向对象存储系统中的磁盘要求读取所抽象的桶。
需要说明的是,具体的访问过程为:预先将镜像仓库的驱动与对象存储系统对接,通过该驱动将所述访问指令发送至对象存储系统中的磁盘中,在所述磁盘中读取相对应的桶,根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
可选的,用户的访问指令可以是所读取对象的逻辑路径和对象名,例如Bucket1、Object1,其中Bucket1为对象的逻辑路径,Object1为对象名,将该逻辑路径和对象名发送至磁盘中后,不需要关心具体需要从哪个磁盘访问数据,而是遍历对象存储系统中的所有磁盘以读取相对应的数据。
进一步地,如图3所示,步骤S104包括步骤S301~S304。
S301,根据所述访问指令将镜像仓库的驱动与对象存储系统对接。
在本发明实施例中,所述对象存储系统可以是自研对象存储系统,镜像仓库与对象存储系统可以通过存储驱动-存储系统的兼容API进行连接。
S302,将所述访问指令发送至对象存储系统中的对象容器中。
在本发明实施例中,对于镜像仓库来说,只需要正常配置存储驱动,并不需要了解存储驱动背后是如何处理数据的;对于自研的存储系统来说,镜像仓库通过存储驱动将访问指令发送至兼容API之后,存储系统只需要根据访问指令的信息对相关文件进行正常的读写,不需要了解请求方的具体情况。
S303,在所述对象容器中读取相对应的桶。
在本发明实施例中,若访问指令到达存储系统,根据该访问指令在对象容器中进行正常的读写操作,以读取相对应的桶。
S304,根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
由以上可见,本发明实施例通过将若干个镜像文件抽象成对象;确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;将所抽象的桶分配至不同的对象容器中;若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。本发明实施例实现镜像的自我管控,同时节省了镜像文件的存储成本。
请参阅图4,图4是本发明实施例提供的一种Docker镜像库文件存储方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。如图4所示,该方法包括步骤S401~S407。
S401,将若干个镜像文件抽象成对象。
在本发明实施例中,在Docker镜像库中存储着不同的镜像文件,其中,Docker镜像库包括存储着镜像文件以及镜像文件的位置,具体的,Docker镜像库提供一个注册服务器,该注册服务器用于保存多个仓库,每个仓库又可以包含多个具备不同标签的镜像文件;在实际使用中,Docker镜像库运行中使用的默认仓库为Docker Hub公共仓库;对于Docker镜像库中的镜像文件的存储,所使用的存储方式有很多种方案,例如,可以是内存存储方式,也可以是文件系统形式的存储方式等等。
需要说明的是,考虑到镜像文件的结构特性,本发明实施例使用对象存储方式对镜像文件进行存储,将若干个镜像文件抽象成对象,比如将镜像文件1抽象成Object1,将镜像文件2抽象成Object2等等,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
下面以Docker镜像库中的tomcat镜像为例,对抽象过程进行说明:
Docker镜像库中的tomcat镜像,可以查询得到该镜像的版本为8,在Docker镜像库中tomcat镜像的存储一共可以分为三层,也就是说该镜像存在三个镜像文件,分别作为镜像文件1、镜像文件2、镜像文件3,获取三个镜像文件的哈希值,并读取哈希值所应的ID号,通过哈希值的ID号查找镜像文件的保存路径,不同的镜像文件的保存路径不相同,将不同镜像文件对应的不同的保存路径作为对象的名字对镜像文件进行抽象。
S402,确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶。
在本发明实施例中,在本发明实施例中,每个镜像仓库包括多个镜像文件,将同一个镜像仓库的镜像文件抽象成的对象称为相同逻辑路径下的对象,所述将同一逻辑路径下的对象抽象成桶,例如,可以是将逻辑路径相同的三个对象抽象成桶1,也可以是将逻辑路径相同的四个对象抽象成桶2等等,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
下面将逻辑路径相同的三个对象抽象成桶1为例,对抽象过程进行说明,抽象的过程可以是:将分别保存为/myimage/tomcat/8/aaa111/myimage/tomcat/8/bbb222,/myimage/tomcat/8/ccc333的三个对象,均属于相同/myimage路径下的对象,因此,将/myimage作为桶名抽象成桶,而/myimage/tomcat/8/aaa111,/myimage/tomcat/8/bbb22,/myimage/tomcat/8/ccc333则作为桶/myimage中的对象。由于同一逻辑路径下存储着同一仓库的镜像文件抽象成的对象,因此,将相同逻辑路径下的对象抽象成桶保证了镜像文件的完整性。
S403,扫描所有桶中对象的对象名称。
在本发明实施例中,通过连接数据库,使用结构化查询语言(Structured QueryLanguage,SQL)对所有桶中的对象进行扫描并获取,具体的,使用SELECT语句获取所有的桶,同时使用WHERE语句获取桶中的对象名称,从而达到扫描对象名称的效果。
S404,识别当前所扫描的对象名称所对应的命名规范。
在本发明实施例中,所述识别当前所扫描的对象名称所对应的命名规范可以是识别所述对象名称之间是否存在数值顺序上的规律,例如,第一个对象名称为“xx111”,第二个对象名称为“xx222”,由于“111”和“222”之间存在各个位数上递增的规律,那么就可以识别出所述对象名称之间存在数值顺序上的规律,从而判断所述对象名称之间具有相同的命名规范。所述识别当前所扫描的对象名称所对应的命名规范可以是识别所述对象名称之间是否存在字母顺序上的规律,例如,第一个对象名称为“aaa”,第二个对象名称为“bbb”,由于“a”与“b”存在字母顺序上的规律,那么就可以识别出所述对象名称之间存在字母顺序上的规律,从而判断所述对象名称之间具有相同的命名规范。
S405,确定相同命名规范的对象。
S406,将所确定的相同命名规范的对象分配至同一个对象容器中。
在本发明实施例中,所述对象容器可以是磁盘,该磁盘的数量根据存储需要可以是一个或者多个,将桶中的不同对象随机分配至磁盘中的分配原则可以是,将相同命名规范的对象分配至同一个对象容器中,例如,将Bucket1中的Object1分配至磁盘1中,也可以同时将相同命名规范的Bucket2中的Object2分配至磁盘1中。另外,对于不同命名规范的对象可以随机分配至不同的对象容器,也可以将不同命名规范的对象分配至同一个对象容器中。
S407,若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
在本发明实施例中,对象容器为对象存储系统中的存储硬件,该存储硬件可以是磁盘,一个对象存储系统可以包括API Gateway、存储系统以及磁盘,若接收到用户的访问指令,访问指令需要通过镜像仓库支持的后端存储驱动,该驱动可以是AWS S3,OpenstackSwift,阿里云对象存储等等,向对象存储系统中的磁盘要求读取所抽象的桶。
需要说明的是,具体的访问过程为:预先将镜像仓库的驱动与对象存储系统对接,通过该驱动将所述访问指令发送至对象存储系统中的磁盘中,在所述磁盘中读取相对应的桶,根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
可选的,用户的访问指令可以是所读取对象的逻辑路径和对象名,例如Bucker1、Object1,其中Bucker1为对象的逻辑路径,Object1为对象名,将该逻辑路径和对象名发送至磁盘中后,不需要关心具体需要从哪个磁盘访问数据,而是遍历对象存储系统中的所有磁盘以读取相对应的数据。
请参阅图5,图5是本发明实施例提供的一种Docker镜像库文件存储方法的示意流程图。该方法可以运行在智能手机(如Android手机、IOS手机等)、平板电脑、笔记本电脑以及智能设备等终端中。如图5所示,该方法包括步骤S501~S505。
S501,将若干个镜像文件抽象成对象。
在本发明实施例中,在Docker镜像库中存储着不同的镜像文件,其中,Docker镜像库包括存储着镜像文件以及镜像文件的位置,具体的,Docker镜像库提供一个注册服务器,该注册服务器用于保存多个仓库,每个仓库又可以包含多个具备不同标签的镜像文件;在实际使用中,Docker镜像库运行中使用的默认仓库为Docker Hub公共仓库;对于Docker镜像库中的镜像文件的存储,所使用的存储方式有很多种方案,例如,可以是内存存储方式,也可以是文件系统形式的存储方式等等。
需要说明的是,考虑到镜像文件的结构特性,本发明实施例使用对象存储方式对镜像文件进行存储,将若干个镜像文件抽象成对象,比如将镜像文件1抽象成Object1,将镜像文件2抽象成Object2等等,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
下面以Docker镜像库中的tomcat镜像为例,对抽象过程进行说明:
Docker镜像库中的tomcat镜像,可以查询得到该镜像的版本为8,在Docker镜像库中tomcat镜像的存储一共可以分为三层,也就是说该镜像存在三个镜像文件,分别作为镜像文件1、镜像文件2、镜像文件3,获取三个镜像文件的哈希值,并读取哈希值所应的ID号,通过哈希值的ID号查找镜像文件的保存路径,不同的镜像文件的保存路径不相同,将不同镜像文件对应的不同的保存路径作为对象的名字对镜像文件进行抽象。
S502,确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶。
在本发明实施例中,在本发明实施例中,每个镜像仓库包括多个镜像文件,将同一个镜像仓库的镜像文件抽象成的对象称为相同逻辑路径下的对象,所述将同一逻辑路径下的对象抽象成桶,例如,可以是将逻辑路径相同的三个对象抽象成桶1,也可以是将逻辑路径相同的四个对象抽象成桶2等等,抽象的过程可以是通过程序设计语言进行抽象,具体的抽象过程在此不作限制。
下面将逻辑路径相同的三个对象抽象成桶1为例,对抽象过程进行说明,抽象的过程可以是:将分别保存为/myimage/tomcat/8/aaa111/myimage/tomcat/8/bbb222,/myimage/tomcat/8/ccc333的三个对象,均属于相同/myimage路径下的对象,因此,将/myimage作为桶名抽象成桶,而/myimage/tomcat/8/aaa111,/myimage/tomcat/8/bbb22,/myimage/tomcat/8/ccc333则作为桶/myimage中的对象。由于同一逻辑路径下存储着同一仓库的镜像文件抽象成的对象,因此,将相同逻辑路径下的对象抽象成桶保证了镜像文件的完整性。
S503,确定所述对象容器进行存储的存储量。
在本发明实施例中,所述对象容器可以是磁盘,该磁盘的数量根据存储需要可以是一个或者多个,不同的磁盘,其存储量并不相同,预先确定磁盘的存储量,当将所抽象的桶分配至磁盘中时,可以通过判断磁盘的存储量是否已满,从而更换/增加其它磁盘进行存储。
S504,根据所确定的存储量按照预设顺序对所述桶中的对象进行分配。
在本发明实施例中,根据磁盘的存储量,可以有计划的对所述桶中的对象进行分配并存储,所述预设顺序可以是根据对象大小,从大到小的规则进行存储,也可以是根据对象进行抽象时的日期的规则进行存储等等。
S505,若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
在本发明实施例中,对象容器为对象存储系统中的存储硬件,该存储硬件可以是磁盘,一个对象存储系统可以包括API Gateway、存储系统以及磁盘,若接收到用户的访问指令,访问指令需要通过镜像仓库支持的后端存储驱动,该驱动可以是AWS S3,OpenstackSwift,阿里云对象存储等等,向对象存储系统中的磁盘要求读取所抽象的桶。
需要说明的是,具体的访问过程为:预先将镜像仓库的驱动与对象存储系统对接,通过该驱动将所述访问指令发送至对象存储系统中的磁盘中,在所述磁盘中读取相对应的桶,根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
可选的,用户的访问指令可以是所读取对象的逻辑路径和对象名,例如Bucker1、Object1,其中Bucker1为对象的逻辑路径,Object1为对象名,将该逻辑路径和对象名发送至磁盘中后,不需要关心具体需要从哪个磁盘访问数据,而是遍历对象存储系统中的所有磁盘以读取相对应的数据。
请参阅图6,对应上述一种Docker镜像库文件存储方法,本发明实施例还提出一种Docker镜像库文件存储终端,该终端100包括:抽象单元101、第一确定单元102、分配单元103、读取单元104。
其中,所述抽象单元101,用于将若干个镜像文件抽象成对象。
第一确定单元102,用于确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶。
分配单元103,用于将所抽象的桶分配至不同的对象容器中。
读取单元104,用于若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
由以上可见,本发明实施例通过将若干个镜像文件抽象成对象;确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;将所抽象的桶分配至不同的对象容器中;若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。本发明实施例实现镜像的自我管控,同时节省了镜像文件的存储成本。
如图7所示,所述抽象单元101,包括:
第二确定单元1011,用于确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号。
查找单元1012,用于根据所述ID号查找出所述镜像文件相对应的保存路径。
抽象子单元1013,用于根据所查找的保存路径将若干个镜像文件抽象成对象。
如图8所示,所述读取单元104,包括:
对接单元1041,用于根据所述访问指令将镜像仓库的驱动与对象存储系统对接。
第一发送单元1042,用于将所述访问指令发送至对象存储系统中的对象容器中。
读取子单元1043,用于在所述对象容器中读取相对应的桶。
第二发送单元1044,用于根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
请参阅图9,对应上述一种Docker镜像库文件存储方法,本发明实施例还提出一种Docker镜像库文件存储终端,该终端200包括:抽象单元201、第一确定单元202、扫描单元203、识别单元204、第三确定单元205、第一分配子单元206、读取单元207。
其中,所述抽象单元201,用于将若干个镜像文件抽象成对象。
第一确定单元202,用于确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶。
扫描单元203,用于扫描所有桶中对象的对象名称。
识别单元204,用于识别当前所扫描的对象名称所对应的命名规范。
第三确定单元205,用于确定相同命名规范的对象。
第一分配子单元206,用于将所确定的相同命名规范的对象分配至同一个对象容器中。
读取单元207,用于若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶。
请参阅图10,对应上述一种Docker镜像库文件存储方法,本发明实施例还提出一种Docker镜像库文件存储终端,该终端300包括:抽象单元301、第一确定单元302、第四确定单元303、第二分配子单元304、读取单元305。
其中,所述抽象单元301,用于将若干个镜像文件抽象成对象。
第一确定单元302,用于确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶。
第四确定单元303,用于确定所述对象容器进行存储的存储量。
第二分配子单元304,用于根据所确定的存储量按照预设顺序对所述桶中的对象进行分配。
读取单元305,用于若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶。
在硬件实现上,以上抽象单元101、第一确定单元102、分配单元103、读取单元104等可以以硬件形式内嵌于或独立于数据处理的装置中,也可以以软件形式存储于数据处理装置的存储器中,以便处理器调用执行以上各个单元对应的操作。该处理器可以为中央处理单元(CPU)、微处理器、单片机等。
上述Docker镜像库文件存储终端可以实现为一种计算机程序的形式,计算机程序可以在如图11所示的计算机设备上运行。
图11为本发明一种Docker镜像库文件存储设备的结构组成示意图。该设备可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式装置等具有通信功能的电子装置。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。参照图11,该计算机设备500包括通过系统总线501连接的处理器502、非易失性存储介质503、内存储器504和网络接口505。其中,该计算机设备500的非易失性存储介质503可存储操作系统5031和计算机程序5032,该计算机程序5032被执行时,可使得处理器502执行一种Docker镜像库文件存储方法。该计算机设备500的处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序被处理器执行时,可使得处理器502执行一种Docker镜像库文件存储方法。计算机设备500的网络接口505用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502执行如下操作:
将若干个镜像文件抽象成对象;
确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;
将所抽象的桶分配至不同的对象容器中;
若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
在一个实施例中,所述将若干个镜像文件抽象成对象,包括:
确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号;
根据所述ID号查找出所述镜像文件相对应的保存路径;
根据所查找的保存路径将若干个镜像文件抽象成对象。
在一个实施例中,所述将所抽象的桶分配至不同的对象容器中,包括:
扫描所有桶中对象的对象名称;
识别当前所扫描的对象名称所对应的命名规范;
确定相同命名规范的对象;
将所确定的相同命名规范的对象分配至同一个对象容器中。
在一个实施例中,所述将所抽象的桶分配至不同的对象容器中,包括:
确定所述对象容器进行存储的存储量;
根据所确定的存储量按照预设顺序对所述桶中的对象进行分配。
在一个实施例中,所述根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户,包括:
根据所述访问指令将镜像仓库的驱动与对象存储系统对接;
将所述访问指令发送至对象存储系统中的对象容器中;
在所述对象容器中读取相对应的桶;
根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
本领域技术人员可以理解,图11中示出的Docker镜像库文件存储设备的实施例并不构成对Docker镜像库文件存储设备具体构成的限定,在其他实施例中,Docker镜像库文件存储设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,Docker镜像库文件存储设备仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图11所示实施例一致,在此不再赘述。
本发明提供了一种计算机可读存储介质,计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现以下步骤:
将若干个镜像文件抽象成对象;
确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;
将所抽象的桶分配至不同的对象容器中;
若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
在一个实施例中,所述将若干个镜像文件抽象成对象,包括:
确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号;
根据所述ID号查找出所述镜像文件相对应的保存路径;
根据所查找的保存路径将若干个镜像文件抽象成对象。
在一个实施例中,所述将所抽象的桶分配至不同的对象容器中,包括:
扫描所有桶中对象的对象名称;
识别当前所扫描的对象名称所对应的命名规范;
确定相同命名规范的对象;
将所确定的相同命名规范的对象分配至同一个对象容器中。
在一个实施例中,所述将所抽象的桶分配至不同的对象容器中,包括:
确定所述对象容器进行存储的存储量;
根据所确定的存储量按照预设顺序对所述桶中的对象进行分配。
在一个实施例中,所述根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户,包括:
根据所述访问指令将镜像仓库的驱动与对象存储系统对接;
将所述访问指令发送至对象存储系统中的对象容器中;
在所述对象容器中读取相对应的桶;
根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
本发明前述的存储介质包括:磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等各种可以存储程序代码的介质。
本发明所有实施例中的单元可以通过通用集成电路,例如CPU(CentralProcessing Unit,中央处理器),或通过ASIC(Application Specific IntegratedCircuit,专用集成电路)来实现。
本发明实施例Docker镜像库文件存储方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例Docker镜像库文件存储终端中的单元可以根据实际需要进行合并、划分和删减。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种Docker镜像库文件存储方法,其特征在于,所述方法包括:
将若干个镜像文件抽象成对象;
确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;
将所抽象的桶分配至不同的对象容器中;
若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
2.如权利要求1所述的方法,其特征在于,所述将若干个镜像文件抽象成对象,包括:
确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号;
根据所述ID号查找出所述镜像文件相对应的保存路径;
根据所查找的保存路径将若干个镜像文件抽象成对象。
3.如权利要求1所述的方法,其特征在于,所述将所抽象的桶分配至不同的对象容器中,包括:
扫描所有桶中对象的对象名称;
识别当前所扫描的对象名称所对应的命名规范;
确定相同命名规范的对象;
将所确定的相同命名规范的对象分配至同一个对象容器中。
4.如权利要求1所述的方法,其特征在于,所述将所抽象的桶分配至不同的对象容器中,包括:
确定所述对象容器进行存储的存储量;
根据所确定的存储量按照预设顺序对所述桶中的对象进行分配。
5.如权利要求1所述的方法,其特征在于,所述根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户,包括:
根据所述访问指令将镜像仓库的驱动与对象存储系统对接;
将所述访问指令发送至对象存储系统中的对象容器中;
在所述对象容器中读取相对应的桶;
根据镜像仓库与对象存储系统的对接关系将所获取的桶发送至用户。
6.一种Docker镜像库文件存储终端,其特征在于,所述终端包括:
抽象单元,用于将若干个镜像文件抽象成对象;
第一确定单元,用于确定相同逻辑路径的对象,并将相同逻辑路径下的对象抽象成桶;
分配单元,用于将所抽象的桶分配至不同的对象容器中;
读取单元,用于若接收到用户的访问指令,根据所述访问指令从相对应的对象容器中读取所抽象的桶并发送给用户。
7.如权利要求6所述的终端,其特征在于,所述抽象单元,包括:
第二确定单元,用于确定所述镜像文件对应的哈希值,并根据所述哈希值确定相对应的ID号;
查找单元,用于根据所述ID号查找出所述镜像文件相对应的保存路径;
抽象子单元,用于根据所查找的保存路径将若干个镜像文件抽象成对象。
8.如权利要求6所述的终端,其特征在于,所述分配单元,包括:
扫描单元,用于扫描所有桶中对象的对象名称;
识别单元,用于识别当前所扫描的对象名称所对应的命名规范;
第三确定单元,用于确定相同命名规范的对象;
第一分配子单元,用于将所确定的相同命名规范的对象分配至同一个对象容器中。
9.一种Docker镜像库文件存储设备,其特征在于,包括:
存储器,用于存储实现Docker镜像库文件存储方法的程序;以及
处理器,用于运行所述存储器中存储的实现Docker镜像库文件存储方法的程序,以执行如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现如权利要求1-5任一项所述的方法。
CN201810016146.3A 2018-01-08 2018-01-08 Docker镜像库文件存储方法、终端、设备以及存储介质 Active CN108228842B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201810016146.3A CN108228842B (zh) 2018-01-08 2018-01-08 Docker镜像库文件存储方法、终端、设备以及存储介质
PCT/CN2018/077126 WO2019134222A1 (zh) 2018-01-08 2018-02-24 Docker镜像库文件存储方法、终端、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810016146.3A CN108228842B (zh) 2018-01-08 2018-01-08 Docker镜像库文件存储方法、终端、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN108228842A true CN108228842A (zh) 2018-06-29
CN108228842B CN108228842B (zh) 2020-09-25

Family

ID=62640183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810016146.3A Active CN108228842B (zh) 2018-01-08 2018-01-08 Docker镜像库文件存储方法、终端、设备以及存储介质

Country Status (2)

Country Link
CN (1) CN108228842B (zh)
WO (1) WO2019134222A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306970A (zh) * 2019-08-01 2021-02-02 广州虎牙科技有限公司 一种容器镜像仓库的处理方法、装置、设备和存储介质

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113434254B (zh) * 2021-06-30 2023-03-07 深圳平安智汇企业信息管理有限公司 客户端部署方法、装置、计算机设备及存储介质
CN113568708B (zh) * 2021-07-29 2022-10-04 马上消费金融股份有限公司 平台创建方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105069353A (zh) * 2015-08-11 2015-11-18 武汉大学 一种基于Docker的可信容器安全加固方法
CN106506587A (zh) * 2016-09-23 2017-03-15 中国人民解放军国防科学技术大学 一种基于分布式存储的Docker镜像下载方法
US20170083544A1 (en) * 2015-09-17 2017-03-23 International Business Machines Corporation Image building
CN107147728A (zh) * 2017-05-31 2017-09-08 莫倩 一种对象存储系统多租户的管理方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102855294B (zh) * 2012-08-13 2016-12-21 北京联创信安科技股份有限公司 一种智能哈希数据布局方法、集群存储系统及其方法
CN102932415B (zh) * 2012-09-26 2015-04-15 东软集团股份有限公司 一种镜像文件存储方法及装置
CN103116661B (zh) * 2013-03-20 2016-01-27 广东宜通世纪科技股份有限公司 一种数据库的数据处理方法
CN104268159B (zh) * 2014-09-03 2017-06-20 河海大学 一种基于动态镜像的实时数据仓库数据预存取方法
CN106997392B (zh) * 2017-04-10 2020-03-03 北京搜狐新媒体信息技术有限公司 Docker镜像缓存信息的处理方法、装置以及读取方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105069353A (zh) * 2015-08-11 2015-11-18 武汉大学 一种基于Docker的可信容器安全加固方法
US20170083544A1 (en) * 2015-09-17 2017-03-23 International Business Machines Corporation Image building
CN106506587A (zh) * 2016-09-23 2017-03-15 中国人民解放军国防科学技术大学 一种基于分布式存储的Docker镜像下载方法
CN107147728A (zh) * 2017-05-31 2017-09-08 莫倩 一种对象存储系统多租户的管理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306970A (zh) * 2019-08-01 2021-02-02 广州虎牙科技有限公司 一种容器镜像仓库的处理方法、装置、设备和存储介质
CN112306970B (zh) * 2019-08-01 2024-04-19 广州虎牙科技有限公司 一种容器镜像仓库的处理方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN108228842B (zh) 2020-09-25
WO2019134222A1 (zh) 2019-07-11

Similar Documents

Publication Publication Date Title
US10747724B2 (en) System and method of using data blocks to optimize file storage
CN103198090B (zh) 用于优化虚拟桌面环境中的存储分配的方法和系统
CN104699423B (zh) Linux系统中绑定盘符的方法和装置
CN109146364A (zh) 仓库物料管理方法及系统
CN108228842A (zh) Docker镜像库文件存储方法、终端、设备以及存储介质
CN103458004A (zh) 物联网设备签约信息变更方法和设备
US11768883B2 (en) System and method for in-place record content management
CN108319496A (zh) 资源访问方法、业务服务器、分布式系统及存储介质
CN109873839B (zh) 数据访问的方法、服务器与分布式系统
JP2003271429A (ja) 記憶装置資源管理方法、記憶資源管理プログラム、該プログラムを記録した記録媒体、及び記憶資源管理装置
CN103312624A (zh) 一种消息队列服务系统和方法
US20180300188A1 (en) Method for bidirectional calling between open system and mainframe system performed by computing device
CN104243736A (zh) 信息处理设备及信息处理方法
CN106469372A (zh) 一种地址映射方法及装置
CN109213447A (zh) 一种san存储卷挂载、卸载方法及系统
CN109343962A (zh) 数据处理方法、装置及分布式服务系统
US8510423B2 (en) Install system and install method
CN104956340A (zh) 可扩展数据重复删除
US9836491B1 (en) Method and apparatus for hardware-implemented AVL tree updates
US7778660B2 (en) Mobile communications terminal, information transmitting system and information receiving method
CN105068791A (zh) 一种实现底层库的方法及装置
US10516723B2 (en) Distributing subscriber data in a mobile data network
CN109195202A (zh) 用于标识无线接入点的方法与设备
CN101997885A (zh) 一种用户数据调度方法、服务器及数据中心
CN106407345A (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