掌桥专利:专业的专利平台
掌桥专利
首页

一种容器镜像仓库的处理方法、装置、设备和存储介质

文献发布时间:2023-06-19 09:44:49


一种容器镜像仓库的处理方法、装置、设备和存储介质

技术领域

本发明实施例涉及信息存储技术领域,尤其涉及一种容器镜像仓库的处理方法、装置、设备和存储介质。

背景技术

随着容器技术的兴起和广泛运用,把应用以镜像的方式打包传输,已经成了软件分发的事实标准,但容器环境下的镜像高效分发,逐渐成为限制云厂商提供云服务的瓶颈的问题。目前Docker Registry是目前用户唯一可用的开源版本。

目前registry分布式文件系统驱动的实现,一个仓库入口仅支持配置一个存储桶(bucket)。随着存储的镜像文件的数量逐步增大,存储桶中存储的镜像文件会越来越多。用户确定需要的镜像文件后,从存储桶中获得该镜像文件时,需要从存储桶所有的镜像文件中筛选出该镜像文件。因此,随着存储桶中存储的镜像文件会越来越多,用户检索到需要的目标文件的时间会越来越长。

发明内容

本发明提供一种容器镜像仓库的处理方法、装置、设备和存储介质,以解决通过一个仓库入口检索镜像文件效率越来越低的问题。

第一方面,本发明实施例提供了一种容器镜像仓库的处理方法,一容器镜像仓库包括一个仓库入口与至少两个存储桶,所述存储桶部署在至少两个地区,所述方法包括:

通过所述仓库入口接收客户端上传的镜像文件;

确定与所述客户端属于同一地区的存储桶,作为候选存储桶;

确定适于存储所述镜像文件的候选存储桶,作为目标存储桶;

将所述镜像文件存储至所述目标存储桶。

在此基础上,所述存储桶配置有第一属性,所述第一属性用于表示部署所述存储桶的区域;

所述确定与所述客户端属于同一地区的存储桶,包括:

确定所述客户端的IP地址;

确定所述IP地址所属的区域;

若部署所述存储桶的区域包括所述IP地址所属的区域,则确定所述存储桶为候选存储桶。

在此基础上,所述确定适于存储所述镜像文件的候选存储桶,包括:

确定所述候选存储桶的桶编号;

确定所述镜像文件的哈希值;

将所述哈希值与所述桶编号进行匹配;

若匹配成功,则确定所述桶编号对应的候选存储桶为适于存储所述镜像文件的目标存储桶。

在此基础上,所述将所述哈希值与所述桶编号进行匹配,包括:

以所述候选存储桶的桶编号作为节点,建立哈希环;

将所述哈希值映射到所述哈希环上;

在所述哈希环上,确定与所述哈希值距离最近的桶编号,以作为目标桶编号;

将所述目标桶编号对应的候选存储桶作为存储所述镜像文件的目标存储桶。

在此基础上,所述将所述镜像文件存储至所述目标存储桶之后,还包括:

将所述镜像文件存储至所述地区之外的存储桶中。

在此基础上,所述将所述镜像文件存储至所述地区之外的存储桶中,包括:

将所述镜像文件存储至部署所述地区之外的所有存储桶中;

或者,

从除所述地区之外每个地区中部署的存储桶,选择一个存储桶作为特征存储桶;

将所述镜像文件存储至所述特征存储桶中。

在此基础上,所述通过所述仓库入口接收客户端上传的镜像文件之前,还包括:

对客户端进行身份验证;

若验证失败,则禁止所述客户端上传下载镜像文件。

第二方面,本发明实施例还提供了一种容器镜像仓库的处理方法,一容器镜像仓库包括一个仓库入口与至少两个存储桶,所述存储桶部署在至少两个地区,所述方法包括:

通过所述仓库入口接收客户端发送的下载指令;

根据所述下载指令确定镜像文件;

确定与所述客户端属于同一地区的候选存储桶;

从所述候选存储桶中确定目标存储桶,所述目标存储桶用于向客户端提供所述镜像文件;

将所述目标存储桶存储的所述镜像文件发送至所述客户端。

第三方面,本发明实施例还提供了一种容器镜像仓库的处理装置,其特征在于,一容器镜像仓库包括一个仓库入口与至少两个存储桶,所述存储桶部署在至少两个地区,所述装置包括:

镜像文件接收模块,用于通过所述仓库入口接收客户端上传的镜像文件;

候选存储桶第一确定模块,用于确定与所述客户端属于同一地区的存储桶,作为候选存储桶;

目标存储桶第一确定模块,用于确定适于存储所述镜像文件的候选存储桶,作为目标存储桶;

镜像文件存储模块,用于将所述镜像文件存储至所述目标存储桶。

在此基础上,候选存储桶第一确定模块包括:

IP地址确定子模块,用于确定所述客户端的IP地址;

区域确定子模块,用于确定所述IP地址所属的区域;

候选存储桶确定子模块,用于若部署所述存储桶的区域包括所述IP地址所属的区域,则确定所述存储桶为候选存储桶。

在此基础上,目标存储桶第一确定模块包括:

桶编号确定子模块,用于确定所述候选存储桶的桶编号;

哈希值确定子模块,用于确定所述镜像文件的哈希值;

编号匹配子模块,用于将所述哈希值与所述桶编号进行匹配;

第一执行子模块,用于若匹配成功,则确定所述桶编号对应的候选存储桶为适于存储所述镜像文件的目标存储桶。

在此基础上,编号匹配子模块包括:

哈希环构建单元,用于以所述候选存储桶的桶编号作为节点,建立哈希环;

哈希值映射单元,用于将所述哈希值映射到所述哈希环上;

目标桶编号确定单元,用于在所述哈希环上,确定与所述哈希值距离最近的桶编号,以作为目标桶编号;

目标存储桶确定单元,用于将所述目标桶编号对应的候选存储桶作为存储所述镜像文件的目标存储桶。

在此基础上,还包括:

同步模块,用于将所述镜像文件存储至所述地区之外的存储桶中。

在此基础上,同步模块包括:

第一同步单元,用于将所述镜像文件存储至部署所述地区之外的所有存储桶中;

或者,

特征存储桶确定单元,用于从除所述地区之外每个地区中部署的存储桶,选择一个存储桶作为特征存储桶;

特征存储桶使用单元,用于将所述镜像文件存储至所述特征存储桶中。

在此基础上,还包括:

身份验证模块,用于对客户端进行身份验证;

第二执行子模块,用于若验证失败,则禁止所述客户端上传下载镜像文件。

第四方面,本发明实施例还提供了一种容器镜像仓库的处理装置,其特征在于,一容器镜像仓库包括一个仓库入口与至少两个存储桶,所述存储桶部署在至少两个地区,所述装置包括:

下载指令接收模块,用于通过所述仓库入口接收客户端发送的下载指令;

镜像文件确定模块,用于根据所述下载指令确定镜像文件;

候选存储桶第二确定模块,用于确定与所述客户端属于同一地区的候选存储桶;

目标存储桶第二确定模块,用于从所述候选存储桶中确定目标存储桶,所述目标存储桶用于向客户端提供所述镜像文件;

镜像文件发送模块,用于将所述目标存储桶存储的所述镜像文件发送至所述客户端。

第五方面,本发明实施例还提供了一种电子设备,包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如任一方面所述的一种容器镜像仓库的处理方法。

第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如任一方面所述的一种容器镜像仓库的处理方法。

本发明实施例通过为一个仓库入口配置多个存储桶,即实现一容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。通过仓库入口接收客户端上传的镜像文件,确定与客户端属于同一地区的存储桶,作为候选存储桶,确定适于存储所述镜像文件的候选存储桶,作为目标存储桶,最后将镜像文件存储至所述目标存储桶。这样使得镜像文件存储在不同的存储桶中,减少了单个存储桶存储镜像文件的存储压力。当单个存储桶中存储的镜像文件数量少时,针对用户检索的镜像文件的查找速度会加快。

附图说明

图1为本发明实施例一提供的一种容器镜像仓库的处理方法的流程图;

图2A为本发明实施例二提供的一种容器镜像仓库的处理方法的流程图;

图2B为本发明实施例二提供的一种用户上传/下载镜像文件的示意图;

图3为本发明实施例三提供的一种容器镜像仓库的处理方法的流程图;

图4为本发明实施例四提供的一种容器镜像仓库的处理装置的结构图;

图5为本发明实施例五提供的一种容器镜像仓库的处理装置的结构图;

图6为本发明实施例六提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种容器镜像仓库的处理方法的流程图。本实施例适用于通过仓库入口接收客户端上传的镜像文件,确定使用某一存储桶接收并存储该镜像文件的场景。该方法可以由一种容器镜像仓库的处理装置来执行,该装置可以由软件和/或硬件的方式实现。

以Docker Registry为例,容器镜像仓库包括Registry组件和Index组件。Index组件主要负责集中管理用户账户,访问权限,镜像文件的校验以及区分公有和私有repos(也就是公共的命名空间)等,通常是以公开的全球广域网(World Wide Web,web)接口来实现。Registry组件主要负责镜像数据的存储,提供上传(Pull)和下载(Push)镜像文件的功能,以及委派授权部分给index实现。

当使用docker来push/pull镜像文件的时候,index确定用户账户是否有使用/修改镜像文件的权限,确认之后,registry负责把镜像存好或把镜像通过某种方式发送给用户。而且,index还能指出某个特定的镜像文件具体存放的registry地址并向它发出请求。除此之外,当只是在本地运行导入导出(docker images)这样的命令时,并不需要依赖和Index/registry进行交互。

Docker Hub是Docker公司提供的云平台服务,用来分发应用:包括镜像文件的分发,变更管理,用户/团队管理,自动化生命周期工作流。实际上,Docker Hub包括了Index模块功能上的实现。

在本实施例中,容器镜像仓库包括一个仓库入口与至少两个存储桶,所述存储桶部署在至少两个地区。

在某些技术中,在初始化容器镜像仓库时,会确定一个存储桶(bucket)的名字,将该名字赋值给初始化使用的函数,由此造成了一个仓库入口与一个存储桶关联。在本实施例中,确定存储桶的名字和所部署的地区,将部署的地区相同的存储桶保存在一个存储桶列表中,再将不同的地区保存在地区列表中,将这些列表赋值给初始化容器镜像仓库时使用的函数。以此实现容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。

地区是按照实际情况进行的划分,如按照国家、区域、省等进行的划分。已按照区域进行划分为例,可以分为华东区、华北区和华南区。当然,同一个地区,可以部署一个或多个存储桶。

参考图1,该方法具体包括:

S101、通过所述仓库入口接收客户端上传的镜像文件。

仓库入口是指一个域名,在本实施例中,镜像仓库的入口可以是“dockerhub.huya.com”这个域名,在公有云开源版的镜像仓库实现中,需要通过使用多个域名,来标记不同地域(华东,华北,华南)的镜像仓库地址,相应的授权密码也需要用户设置多个。例如:registry.cn-hangzhou.aliyuncs.com/registry.cn-beijing.aliyuncs.com/egistry.cn-shenzhen.aliyuncs.com。而本实施例中只有一个镜像仓库域名地址入口,dockerhub.huya.com,通过这一个地址,就可以上传下载镜像,存储到不同的后端存储桶。

镜像文件是需要被存储于某一存储桶的文件。它将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用。镜像文件包括:镜像的blob文件和manifest文件。镜像manifest文件是每个镜像的元数据描述文件;镜像blob文件是指镜像分层后,每一层的具体的数据,都会打包成的一个文件,格式可能是tar包或者tar+gzip格式的压缩包。

在一可行的实现方式中,用户登录客户端,并填写镜像仓库的入口的域名,以并通过该仓库入口上传镜像文件。

S102、确定与所述客户端属于同一地区的存储桶,作为候选存储桶。

当用户登录客户端时,可以通过客户端的硬件地址和互联网协议地址(InternetProtocol Address,IP地址)来确定用户所在的地区。在将存储桶与仓库入口进行关联时,已经通过列表的方式确定了存储桶所部署的区域。

在一可行的实现方式中,通过客户端的信息确定客户端所在的地区,通过查询存储桶所部署的区域,确定与客户端属于同一地区的存储桶作为候选存储桶。

S103、确定适于存储所述镜像文件的候选存储桶,作为目标存储桶。

候选存储桶中包括多个存储桶,按照一定的方式从候选存储桶中确定一个存储桶作为目标存储桶,用于存储该镜像文件。

可选的,可以通过对镜像manifest文件进行分析,确定镜像文件的文件名,通过文件名从候选存储桶确定目标存储桶。

在一可行的实现方式中,确定候选存储桶的数量,根据该数量对镜像文件的文件名进行哈希取余处理,以便于从候选存储桶中确定一个目标存储桶。

S104、将所述镜像文件存储至所述目标存储桶。

确定目标存储桶后,将该镜像文件存储于该目标存储桶中。

这样可以在一个区域部署多个存储桶,可以将同样数量的镜像文件分布的存储于不同存储桶,减少了单个存储桶的压力,提高了对镜像文件检索的速度。

本发明实施例通过为一个仓库入口配置多个存储桶,即实现一容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。通过仓库入口接收客户端上传的镜像文件,确定与客户端属于同一地区的存储桶,作为候选存储桶,确定适于存储所述镜像文件的候选存储桶,作为目标存储桶,最后将镜像文件存储至所述目标存储桶。这样使得镜像文件存储在不同的存储桶中,减少了单个存储桶存储镜像文件的存储压力。当单个存储桶中存储的镜像文件数量少时,针对用户检索的镜像文件的查找速度会加快。同时,由于仓库入口只有一个,用户在上传下载镜像时需要记忆的仓库入口的地址(域名)只有一个,用户需要记忆的授权密码也只有一个,这样极大的方便了用户的使用。

实施例二

图2A为本发明实施例二提供的一种容器镜像仓库的处理方法的流程图。本实施例是在实施例一的基础上进行了细化,详细描述了如何确定候选存储桶与目标存储桶的具体过程。参考图2A,包括:

S201、对客户端进行身份验证。

在一可行的实现方式中,对客户端进行身份验证过程其实包括四个阶段。寻找认证服务器、请求token、返回token、验证token。

寻找认证服务器包括:client端先向Registry发出请求。如果是未授权的请求,会返回401响应。而这个响应中包括三个信息,realm,scope,service具体代表用户可以使用scope和service的信息向realm发请求。

请求token包括:向认证服务器请求一个token来获取访问Repo资源的权限。需要客户端通过TLS或者某种方式授权,并且如果客户端证书中的key关联账号信息,这个token就要签署账号信息。如果证书关联了多个账号,客户端必须指定账号查询参数。返回的token是JSON web token格式,并且用认证服务器的私钥签名。可以理解为,首先,配置认证服务器允许未被验证的客户端进行握手。然后,客户端向认证服务器发送一个HTTP请求到如下的endpoint,该请求用客户端的TLS证书加密(这个证书可以是自签的)。接下来,服务器首先检查客户端证书,提取出子Key,并找到与之关联的用户。然后,服务器检查它的权限控制列表,验证用户是否具有registry.docker.com服务下的samlba/my-app repo的使用权限。

返回token包括:服务器会形成一个JSON Web Token来签名并返回。

验证token包括:token是用对称算法加密,之后在Registry端用相同的算法解密后,再来验证token的一些信息。在整个流程中,Registry都不需要再向认证服务器发出请求。如果有,也只是需要更新认证服务器上的受信任的公钥列表,用来验证token的签名或者使用其他的API来更新认证服务器上的Repo资源记录。在Registry端验证Token的步骤如下:

1、确认证书颁发者(issuer:iss claim)是受信任的。一般issuer是认证服务器的FQDN。iss:auth.docker.com。

2、确认Registry识别出token的接收方。aud:registry.docker.com。

3、检查当前时间在有效时间范围之内。

4、如果token只能使用一次,就要检查JWT的id值是否出现过,来避免token的重复申请。通常会在registry中保持jti记录,延续一个token的有效时间,来避免重复申请token。

5、检查repo的使用权限,access值就包含了repo名和能够对该repo执行的操作。(决定了token是否授予用户具有对该操作所需权限)。

6、验证token签名的有效性。

S202、判断身份验证是否成功。若成功,则执行步骤S204;若失败则执行步骤S203。

在一可行的实现方式中,客户端尝试向Registry发出请求操作,如果Registry需要权限认证,它会返回一个401的超文本传输协议(HTTP)响应,其中包括了如何获得授权的信息。客户端再向授权服务中心发出请求,请求一个已签名的JSON web token。授权服务中心返回该token。客户端向Registry端重试原来的请求,并在请求的头部嵌入token。Registry授权客户端并且开始Push/Pull的会话。

当身份验证成功,即Registry授权客户端并且开始Push/Pull的会话,则执行步骤S204。当身份验证失败,则执行步骤S203。

S203、禁止所述客户端上传下载镜像文件。

当身份验证失败时,说明用户没有权限进行传下载镜像文件的操作,此时禁止所述客户端上传下载镜像文件。

S204、通过所述仓库入口接收客户端上传的镜像文件。

当身份验证成功时,说明用户有权限进行传下载镜像文件的操作,此时通过所述仓库入口接收客户端上传的镜像文件。

S205、确定所述客户端的IP地址。

IP地址是指互联网协议地址,又译为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。

服务端获取客户端请求IP地址,常见的包括:请求头(如:x-forwarded-for、client-ip),以及服务端根据请求TCP包的ip指定的remote_addr参数。

remote_addr:指的是当前直接请求的客户端IP地址,它存在于TCP(TransmissionControl Protocol传输控制协议)请求体中,是http协议传输的时候自动添加,不受请求头header的控制。因此,当客户端与服务器之间不存在任何代理的时候,通过remote_addr获取客户端IP地址是最准确,也是最安全的。

x-forwarded-for,即XFF,是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。是很多代理服务器在请求转发时添加上去的。如果客户端和服务器之间存在代理服务器,那么通过remote_addr获取的IP就是代理服务器的地址,并不是客户端真实的IP地址。因此,需要代理服务器(通常是反向代理服务器)将真实客户端的IP地址转发给服务器,转发时客户端的真实IP地址通常就存在于XFF请求头中。

client-ip同XFF,也是代理服务器添加的用于转发客户端请求的真实IP地址,同样保存与请求头中。

S206、确定所述IP地址所属的区域。

通过IP地址获取对应的地区信息通常有两种方法:

1)通过自行编写程序,解析IP对应的地区信息,需要数据库。如:通过纯真IP数据库获取IP地址对应的地区信息。这种方法的维护代价较高,而且对服务器有一定的压力。

2)根据第三方提供的应用程序编程接口(API)查询获取地区信息。

在一可行的实现方式中,根据客户端的IP地址确定该客户端所属的区域。

S207、若部署所述存储桶的区域包括所述IP地址所属的区域,则确定所述存储桶为候选存储桶。

在将存储桶与仓库入口进行关联时,已经通过列表的方式确定了存储桶所部署的区域。

在一可行的实现方式中,若部署存储桶的区域包括客户端的IP地址所属的区域,则确定存储桶为候选存储桶。

S208、确定所述候选存储桶的桶编号。

当确定候选存储桶后,则确定每个候选存储桶的桶编号,桶编号可以是从000开始顺序编号。

S209、确定所述镜像文件的哈希值。

根据镜像文件的镜像manifest文件可以确定镜像文件的文件名,确定该文件名对应的哈希值。

哈希算法是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。哈希算法可以是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512。

S210、将所述哈希值与所述桶编号进行匹配。

确定每个候选存储桶的桶编号,对哈希值进行哈希取余的计算,余数设定为符合候选存储桶的个数。

如确定候选存储桶的个数为4个,则可以编号为000,001,002,003。对哈希值进行哈希取余的计算,若余数为2,则将该镜像文件存储到编号为002的候选存储桶中。

在一可行的实现方式中,S210可以包括如下步骤:

S2101、以所述候选存储桶的桶编号作为节点,建立哈希环。

对2的32次方取模,把这个由2的32次方个点组成的圆环称为哈希环。圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6…,直到2

将候选存储桶的桶编号对2

S2102、将所述哈希值映射到所述哈希环上。

确定镜像文件的哈希值,使用该哈希值对2

S2103、在所述哈希环上,确定与所述哈希值距离最近的桶编号,以作为目标桶编号。

确定该哈希值在哈希环上的位置后,按照顺时针或者逆时针方向在该哈希环上移动该镜像文件,将该镜像文件遇到的第一个候选存储桶的桶编号确定为目标桶编号。

S2104、将所述目标桶编号对应的候选存储桶作为存储所述镜像文件的目标存储桶。

确定该目标桶编号对应的候选存储桶,将该候选存储桶作为存储所述镜像文件的目标存储桶。

在上述实施例的基础上,可能会出现候选存储桶在哈希环上分布不均匀的问题。可以在哈希环中添加虚拟节点来解决这一问题,即通过将一真实的候选存储桶在哈希环中多次布局,来实现多个候选存储桶在哈希环上的均匀分布。

S211、若匹配成功,则确定所述桶编号对应的候选存储桶为适于存储所述镜像文件的目标存储桶。

S212、将所述镜像文件存储至所述地区之外的存储桶中。

由于会根据客户端的IP地址去从同一区域的存储桶中确定目标存储桶,那么有可能出现,用户在A地登录,上传了镜像文件,该镜像文件存储于部署在A地的某一存储桶中。当用户在B地登录,想要再下载该镜像文件时,会因为登录的区域为B地,而导致服务器从部署在B地的存储桶中去寻找该镜像文件。这样会出现镜像文件无法找到的问题。

因此需要,在其他地区的存储桶中同步该镜像文件。在本实施例中,底层分布式文件系统ceph支持,通过rgw multisite异地多活的bucket sync方案来实现,不同地域的存储桶实现存储内容的同步。

同步可以包括以下两种方式。

第一是,将镜像文件存储至部署所述地区之外的所有存储桶中。

第二是,从除地区之外每个地区中部署的存储桶,选择一个存储桶作为特征存储桶;将镜像文件存储至所述特征存储桶中。

图2B为本发明实施例二提供的一种用户上传/下载镜像文件的示意图。

镜像仓库包括“HUYA-DOCKERHUB”用户(User)通过唯一的仓库入口“dockerhub.huya.com”进行登入操作,用户登入后,通过负载均衡服务器(Nginx)进行HTTP和反向代理web。Registry组件主要负责镜像数据的存储,提供上传(Pull)和下载(Push)镜像文件的功能。

当用户是通过该入口上传镜像文件时,首先根据用户登录的客户端的IP地址确定该客户端的区域,如用户在广东地区,则从存储桶中确定部署在广东地区的存储桶,如图中有“Gz-pro-1”、“Gz-pro-2”和“Gz-pro-3”三个存储桶部署在广东地区。根据用户上传的镜像文件的文件名,从三个部署在广东地区的存储桶中确定一个用于存放该镜像文件。确定后将镜像文件存储于该存储桶中。

当用户是通过该入口下载镜像文件时,首先根据用户登录的客户端的IP地址确定该客户端的区域,如用户在广东地区,则从存储桶中确定部署在广东地区的存储桶,如图中有“Gz-pro-1”、“Gz-pro-2”和“Gz-pro-3”三个存储桶部署在广东地区。根据用户下载的镜像文件的文件名,从三个部署在广东地区的存储桶中确定存放该镜像文件的存储桶。确定后从该存储桶中下载该镜像文件。

本发明实施例通过为一个仓库入口配置多个存储桶,即实现一容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。通过仓库入口接收客户端上传的镜像文件,确定与客户端属于同一地区的存储桶,作为候选存储桶,确定适于存储所述镜像文件的候选存储桶,作为目标存储桶,最后将镜像文件存储至所述目标存储桶。这样使得镜像文件存储在不同的存储桶中,减少了单个存储桶存储镜像文件的存储压力。当单个存储桶中存储的镜像文件数量少时,针对用户检索的镜像文件的查找速度会加快。同时,由于仓库入口只有一个,用户在上传下载镜像时需要记忆的仓库入口的地址(域名)只有一个,用户需要记忆的授权密码也只有一个,这样极大的方便了用户的使用。在此基础上,使用一致性哈希算法(哈希环)使得存储镜像文件的存储桶的使用更为均匀。

实施例三

图3为本发明实施例三提供的一种容器镜像仓库的处理方法的流程图。本实施例适用于通过仓库入口接收客户端发送的下载指令,并最终确定由某一存储桶提供所述镜像文件的场景。该方法可以由一种容器镜像仓库的处理装置来执行,该装置可以由软件和/或硬件的方式实现。本实施例中存储桶可以通过实施例一、二的任一种方法存储。参考图3,该方法具体包括:

S301、通过所述仓库入口接收客户端发送的下载指令。

在以可行的实现方式中,用户登录客户端,并填写镜像仓库的入口的域名。通过仓库入口的验证后,接收客户端发送的下载指令。

S302、根据所述下载指令确定镜像文件。

下载指令中包括客户端需要下载的镜像文件的文件名。

S303、确定与所述客户端属于同一地区的候选存储桶。

在一可行的实现方式中,通过客户端的信息确定客户端所在的地区,通过查询存储桶所部署的区域,确定与客户端属于同一地区的存储桶作为候选存储桶。

S304、从所述候选存储桶中确定目标存储桶,所述目标存储桶用于向客户端提供所述镜像文件。

候选存储桶中包括多个存储桶,按照一定的方式从候选存储桶中确定一个存储桶作为目标存储桶,用于存储该镜像文件。

可选的,可以通过对镜像manifest文件进行分析,确定镜像文件的文件名,通过文件名从候选存储桶确定目标存储桶。

在一可行的实现方式中,确定候选存储桶的数量,根据该数量对镜像文件的文件名进行哈希取余处理,以便于从候选存储桶中确定一个目标存储桶,客户端连接该目标存储桶,以使目标存储桶向客户端提供镜像文件。

S305、将所述目标存储桶存储的所述镜像文件发送至所述客户端。

在所述目标存储桶中,查询该镜像文件,以将该镜像文件发送至该客户端。

本发明实施例通过为一个仓库入口配置多个存储桶,即实现一容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。通过仓库入口接收客户端上传的镜像文件,确定与客户端属于同一地区的存储桶,作为候选存储桶,确定适于存储所述镜像文件的候选存储桶,作为目标存储桶,最后将镜像文件存储至所述目标存储桶。这样使得镜像文件存储在不同的存储桶中,减少了单个存储桶存储镜像文件的存储压力。当单个存储桶中存储的镜像文件数量少时,针对用户检索的镜像文件的查找速度会加快。同时,由于仓库入口只有一个,用户在上传下载镜像时需要记忆的仓库入口的地址(域名)只有一个,用户需要记忆的授权密码也只有一个,这样极大的方便了用户的使用。

实施例四

图4为本发明实施例四提供的一种容器镜像仓库的处理装置的结构图。该装置包括:镜像文件接收模块41、候选存储桶第一确定模块42、目标存储桶第一确定模块43和镜像文件存储模块44。其中:

镜像文件接收模块41,用于通过所述仓库入口接收客户端上传的镜像文件;

候选存储桶第一确定模块42,用于确定与所述客户端属于同一地区的存储桶,作为候选存储桶;

目标存储桶第一确定模块43,用于确定适于存储所述镜像文件的候选存储桶,作为目标存储桶;

镜像文件存储模块44,用于将所述镜像文件存储至所述目标存储桶。

本发明实施例通过为一个仓库入口配置多个存储桶,即实现一容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。通过仓库入口接收客户端上传的镜像文件,确定与客户端属于同一地区的存储桶,作为候选存储桶,确定适于存储所述镜像文件的候选存储桶,作为目标存储桶,最后将镜像文件存储至所述目标存储桶。这样使得镜像文件存储在不同的存储桶中,减少了单个存储桶存储镜像文件的存储压力。当单个存储桶中存储的镜像文件数量少时,针对用户检索的镜像文件的查找速度会加快。同时,由于仓库入口只有一个,用户在上传下载镜像时需要记忆的仓库入口的地址(域名)只有一个,用户需要记忆的授权密码也只有一个,这样极大的方便了用户的使用。

在此基础上,候选存储桶第一确定模块42包括:

IP地址确定子模块,用于确定所述客户端的IP地址;

区域确定子模块,用于确定所述IP地址所属的区域;

候选存储桶确定子模块,用于若部署所述存储桶的区域包括所述IP地址所属的区域,则确定所述存储桶为候选存储桶。

在此基础上,目标存储桶第一确定模块43包括:

桶编号确定子模块,用于确定所述候选存储桶的桶编号;

哈希值确定子模块,用于确定所述镜像文件的哈希值;

编号匹配子模块,用于将所述哈希值与所述桶编号进行匹配;

第一执行子模块,用于若匹配成功,则确定所述桶编号对应的候选存储桶为适于存储所述镜像文件的目标存储桶。

在此基础上,编号匹配子模块包括:

哈希环构建单元,用于以所述候选存储桶的桶编号作为节点,建立哈希环;

哈希值映射单元,用于将所述哈希值映射到所述哈希环上;

目标桶编号确定单元,用于在所述哈希环上,确定与所述哈希值距离最近的桶编号,以作为目标桶编号;

目标存储桶确定单元,用于将所述目标桶编号对应的候选存储桶作为存储所述镜像文件的目标存储桶。

在此基础上,还包括:

同步模块,用于将所述镜像文件存储至所述地区之外的存储桶中。

在此基础上,同步模块包括:

第一同步单元,用于将所述镜像文件存储至部署所述地区之外的所有存储桶中;

或者,

特征存储桶确定单元,用于从除所述地区之外每个地区中部署的存储桶,选择一个存储桶作为特征存储桶;

特征存储桶使用单元,用于将所述镜像文件存储至所述特征存储桶中。

在此基础上,还包括:

身份验证模块,用于对客户端进行身份验证;

第二执行子模块,用于若验证失败,则禁止所述客户端上传下载镜像文件。

本实施例提供的一种容器镜像仓库的处理装置可用于执行实施例一、实施例二提供的一种容器镜像仓库的处理方法,具有相应的功能和有益效果。

实施例五

图5为本发明实施例五提供的一种容器镜像仓库的处理装置的结构图。该装置包括:下载指令接收模块51、镜像文件确定模块52、候选存储桶第二确定模块53、目标存储桶第二确定模块54和镜像文件发送模块55。其中:

下载指令接收模块51,用于通过所述仓库入口接收客户端发送的下载指令;

镜像文件确定模块52,用于根据所述下载指令确定镜像文件;

候选存储桶第二确定模块53,用于确定与所述客户端属于同一地区的候选存储桶;

目标存储桶第二确定模块54,用于从所述候选存储桶中确定目标存储桶,所述目标存储桶用于向客户端提供所述镜像文件;

镜像文件发送模块55,用于将所述目标存储桶存储的所述镜像文件发送至所述客户端。

本发明实施例通过为一个仓库入口配置多个存储桶,即实现一容器镜像仓库包括一个仓库入口与至少两个存储桶,存储桶部署在至少两个地区。通过仓库入口接收客户端上传的镜像文件,确定与客户端属于同一地区的存储桶,作为候选存储桶,确定适于存储所述镜像文件的候选存储桶,作为目标存储桶,最后将镜像文件存储至所述目标存储桶。这样使得镜像文件存储在不同的存储桶中,减少了单个存储桶存储镜像文件的存储压力。当单个存储桶中存储的镜像文件数量少时,针对用户检索的镜像文件的查找速度会加快。同时,由于仓库入口只有一个,用户在上传下载镜像时需要记忆的仓库入口的地址(域名)只有一个,用户需要记忆的授权密码也只有一个,这样极大的方便了用户的使用。在此基础上,使用一致性哈希算法(哈希环)使得存储镜像文件的存储桶的使用更为均匀。

实施例六

图6为本发明实施例六提供的一种电子设备的结构示意图。如图6所示,该电子设备包括处理器60、存储器61、通信模块62、输入装置63和输出装置64;电子设备中处理器60的数量可以是一个或多个,图6中以一个处理器60为例;电子设备中的处理器60、存储器61、通信模块62、输入装置63和输出装置64可以通过总线或其他方式连接,图6中以通过总线连接为例。

存储器61作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本实施例一、实施例二中的一种容器镜像仓库的处理方法对应的模块(例如,一种容器镜像仓库的处理装置中的镜像文件接收模块41、候选存储桶第一确定模块42、目标存储桶第一确定模块43和镜像文件存储模块44)。如本实施例三中的一种容器镜像仓库的处理方法对应的模块(例如,一种容器镜像仓库的处理装置中的下载指令接收模块51、镜像文件确定模块52、候选存储桶第二确定模块53、目标存储桶第二确定模块54和镜像文件发送模块55)。处理器60通过运行存储在存储器61中的软件程序、指令以及模块,从而执行电子设备的各种功能应用以及数据处理,即实现上述的一种容器镜像仓库的处理方法。

存储器61可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器61可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器61可进一步包括相对于处理器60远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

通信模块62,用于与显示屏建立连接,并实现与显示屏的数据交互。输入装置63可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。

本实施例提供的一种电子设备,可执行本发明任一实施例提供的一种容器镜像仓库的处理方法,具体相应的功能和有益效果。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种容器镜像仓库的处理方法,该方法包括:

通过所述仓库入口接收客户端上传的镜像文件;

确定与所述客户端属于同一地区的存储桶,作为候选存储桶;

确定适于存储所述镜像文件的候选存储桶,作为目标存储桶;

将所述镜像文件存储至所述目标存储桶。

或者,

通过所述仓库入口接收客户端发送的下载指令;

根据所述下载指令确定镜像文件;

确定与所述客户端属于同一地区的候选存储桶;

从所述候选存储桶中确定目标存储桶,所述目标存储桶用于向客户端提供所述镜像文件;

将所述目标存储桶存储的所述镜像文件发送至所述客户端。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任一实施例所提供的容器镜像仓库的处理方法中的相关操作。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机电子设备(可以是个人计算机,服务器,或者网络电子设备等)执行本发明各个实施例所述的方法。

值得注意的是,上述容器镜像仓库的处理置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种容器镜像仓库的处理方法、装置、设备和存储介质
  • 容器镜像处理方法、装置、计算机设备和存储介质
技术分类

06120112287504