当前位置: 首页 > 专利查询>暨南大学专利>正文

一种基于关联度的Docker容器注册表预取方法技术

技术编号:24330725 阅读:17 留言:0更新日期:2020-05-29 19:30
本发明专利技术公开了一种基于关联度的Docker容器注册表预取方法,该发明专利技术针对在容器技术的实践中,由于数据中心存储的镜像数量和用户请求速率呈爆炸式增长,导致用户从后端存储中拉取镜像的时间变长,削弱了部署镜像的灵活性,增大了容器的启动时间,提出了一种基于关联度的Docker容器注册表预取技术方案。该方法主要包含三个模块镜像结构提取器、拉取请求处理器和关联镜像层计算器,通过收集镜像层之间的组合关系、处理请求信息以判断是否触发预取操作以及合理利用镜像层的空间局部性得到关联镜像层的操作,将未来用户未来可能拉取的镜像层预取到注册表缓存中,提高了注册表整体的请求命中率。

A prefetch method of docker container registry based on association degree

【技术实现步骤摘要】
一种基于关联度的Docker容器注册表预取方法
本专利技术涉及云计算容器
,具体涉及一种基于关联度的Docker容器注册表预取方法。
技术介绍
容器技术是一种类似于沙盒机制的运行环境隔离技术,用户可以在容器中创建运行操作系统,实现操作系统级的虚拟化。同传统的虚拟机相比,容器技术通过共享内核资源的方式,实现轻量级的应用运行隔离。现如今,随着云计算和大数据规模的日益扩大,例如Google和IBM等公司在其云计算系统中使用容器来创建独立环境。Docker是Linux平台上一款轻量级容器管理引擎,相对虚拟机可以降低资源和时间的开销,在共享底层内核的基础上实现了轻量级的应用隔离环境,不仅具有良好的性能和安全优势,而且帮助用户提升CI/CD的效率,使得应用和服务的打包,发布和协调更为灵活和快速。Docker容器注册表是Docker生态系统中的核心组件——无状态的集中式服务,可以提供镜像的存储和转发。Docker容器注册表中每一个镜像存储库包含特定应用程序或系统镜像所有版本构成的镜像组,用户使用Docker引擎通过RESTful接口连接到注册表,在请求中包含用户名、存储库名和标记的组合来标志特定的镜像,对其镜像推送和拉取操作。同时注册表存储着每个镜像的元数据,用以检查镜像信息,保证其安全性和稳定性。在实际项目部署过程中,企业通常利用Docker容器注册表来解决容器镜像的存储问题。据统计,大型容器公共注册表Dockerhub至少存储数百TB数据,并按每天1500个公共存储库的速度增加,其他私人镜像存储库也不断更新。随着用户请求速率的提升,注册表的整体性能降低,后端存储有限的带宽不足以支撑短时间高并发的拉取请求,进而导致用户拉取镜像的延迟会变高,限制了容器部署的启动时间,与容器技术高效、敏捷的设计初衷相违背,甚至加大了系统部署的稳定性和安全性。因此,对于将部分镜像预取到注册表缓存的工作就显得尤为重要。
技术实现思路
本专利技术的主要目的是为了解决现有技术中的上述缺陷,提出了一种基于关联度的Docker容器注册表预取方法,在请求未命中时发出关联镜像层计算并实施预取,提高缓存命中率。本专利技术的目的可以通过采取如下技术方案达到:一种基于关联度的Docker容器注册表预取方法,Docker容器注册表所接受的请求会按照图1中的镜像结构提取器、拉取请求处理器和关联镜像层计算器进行处理,并预取回相关镜像层。所述的缓存预取方法,可适用于所有完全托管的Docker容器注册表,分别包括下列步骤:S1、在Docker引擎将镜像推送至Docker容器注册表中后,镜像结构提取器读取镜像元数据,将镜像层信息存入本地;S2、当Docker容器注册表接收到Docker引擎发送的镜像拉取请求时,拉取镜像处理器根据请求信息对本地镜像层缓存进行检索,以决定是否进行镜像层相关性计算操作;S3、当请求没有命中镜像层缓存时,关联镜像层计算器根据请求所属的预取窗口信息,从镜像结构数据库中计算相关镜像层,并查询本地镜像层缓存,向后端存储预取缓存中缺失的相关镜像层。进一步地,所述的步骤S1中,Docker容器注册表接收到镜像,镜像结构提取器收集信息的过程如下:S11、图2为镜像结构图,其中镜像的元数据文件包含例如父镜像ID、默认参数、创建日期,以及每个镜像层的digest等镜像基本信息,首先从镜像层字段中提取所有镜像层的SHA-256摘要值;S12、以镜像名为键,各镜像层SHA-256摘要值构成的集合为值的字典数据结构存入镜像结构数据库中。进一步地,所述的步骤S2中,当注册表接收到镜像拉取请求时,根据缓存内容判断是否执行相关镜像层计算,主要步骤如下:S21、对于每一个到达Docker容器注册表的请求,判断请求方法名是否为HTTP中的GET方法,并将包含GET方法的请求加入对应的预取窗口;其中,HTTP中的GET方法为现有技术中公知常用方法;S22、当镜像层缓存不为空时,检索请求所对应的镜像层是否存储于镜像层缓存中;S23、当请求命中镜像层缓存时,Docker容器注册表将该镜像层传回Docker引擎,并由LRU算法提高此镜像在缓存队列中的优先级,若请求没有命中缓存区时,将请求对应的镜像层信息发送至关联镜像层计算器,然后触发关联镜像层预取操作。进一步地,图3表示Docker镜像位于注册表后端的存储结构,每一个镜像存储库是由特定应用程序或系统镜像的所有版本构成,所述的相关镜像层计算器通过利用Docker镜像结构的空间局部特性,按照在镜像存储库中的存储位置对镜像层关联等级划分成三个等级,分别是无关联镜像层、弱关联镜像层和强关联镜像层,同时根据请求所属的预取窗口信息按优先级进行搜索,其中,搜索的优先级如下:无关联<弱关联<强关联。所述的步骤S3过程如下:S31、当请求没有命中镜像层缓存时,相关镜像层计算器收到拉取请求处理器发送的请求信息,查看请求所属的预取窗口;S32、根据预取窗口中包含的历史请求序列,按照预先设定的优先级,结合镜像结构数据库和关联度模型计算请求对应镜像层的关联距离,最终得出具有相关性的镜像层,如果搜索不到有关联的镜像层,则清空预取窗口的历史请求并保留最后一个拉取请求;S33、当搜索结束后,在镜像层缓存中对比搜索到的相关镜像层,向后端存储发出请求,将不存在于缓存的相关镜像层预取回本地,如果缓存饱和,则通过LRU算法对缓存进行替换。进一步地,所述的预取窗口是由于注册表中镜像仓库的独立性而为每一个镜像仓库设置一个预取窗口,用以保存针对此镜像仓库的未命中请求,以便关联镜像层计算器查询预期窗口中请求对应的镜像层是否产生关联。进一步地,所述的LRU算法是在注册表缓存中维护一个镜像层队列,当请求命中时,提高对应镜像层优先级;请求未命中触发预取时,注册表缓存的空余空间大小不足,LRU算法将不断从缓存中剔除最近最少使用的镜像层,直到将关联镜像层存储。进一步地,所述的渐进式计算是关联镜像层计算器在搜索相关镜像层的计算方法,当预取窗口中请求对应的若干镜像层是无关联时,则无关联镜像层;弱关联时则计算若干镜像层所属镜像的最大公共子集;强关联时则计算出若干镜像层所属镜像的其他镜像层。本专利技术相对于现有技术具有如下的优点及效果:(1)本专利技术尽可能准确的计算出镜像层之间的关联程度,采用渐进式预取的方法,避免了过度拉取导致的网络流量浪费和命中率损失。(2)本专利技术通过对Docker镜像和注册表的研究,提出了利用镜像层空间局部性的关联镜像层预取方法,降低了用户拉取请求的延迟,提高了注册表缓存的命中率,加快了容器的启动速度。(3)本专利技术对镜像的操作独立于原有代码,没有对原有代码进行修改,保证了原本注册表的稳定运行。附图说明图1是本专利技术公开的一种基于关联度的Docker容器注册表预取方法的系统架构图;图2是本专利技术公开的一种基于关联度的Docker容器注册表预取方法的镜像结构图;图本文档来自技高网
...

【技术保护点】
1.一种基于关联度的Docker容器注册表预取方法,Docker容器注册表所接受的请求会按照预先设置的镜像结构提取器、拉取请求处理器和关联镜像层计算器进行处理,得到相关镜像层并预取回注册表缓存,其特征在于,所述的缓存预取方法包括以下步骤:/nS1、在Docker引擎将镜像推送至Docker容器注册表后,镜像结构提取器读取镜像元数据,将镜像层信息存入本地;/nS2、当Docker容器注册表接收到Docker引擎发送的镜像拉取请求时,拉取镜像处理器根据请求信息对本地镜像层缓存进行检索,以决定是否进行镜像层相关性计算操作;/nS3、当请求没有命中镜像层缓存时,关联镜像层计算器根据请求所属的预取窗口信息,从镜像结构数据库中计算相关镜像层,并查询本地镜像层缓存,向后端存储预取缓存中缺失的相关镜像层。/n

【技术特征摘要】
1.一种基于关联度的Docker容器注册表预取方法,Docker容器注册表所接受的请求会按照预先设置的镜像结构提取器、拉取请求处理器和关联镜像层计算器进行处理,得到相关镜像层并预取回注册表缓存,其特征在于,所述的缓存预取方法包括以下步骤:
S1、在Docker引擎将镜像推送至Docker容器注册表后,镜像结构提取器读取镜像元数据,将镜像层信息存入本地;
S2、当Docker容器注册表接收到Docker引擎发送的镜像拉取请求时,拉取镜像处理器根据请求信息对本地镜像层缓存进行检索,以决定是否进行镜像层相关性计算操作;
S3、当请求没有命中镜像层缓存时,关联镜像层计算器根据请求所属的预取窗口信息,从镜像结构数据库中计算相关镜像层,并查询本地镜像层缓存,向后端存储预取缓存中缺失的相关镜像层。


2.根据权利要求1所述的一种基于关联度的Docker容器注册表预取方法,其特征在于,所述的步骤S1中,Docker容器注册表接收到镜像,镜像结构提取器收集信息的过程如下:
S11、首先从镜像层字段中提取所有镜像层的SHA-256摘要值,其中镜像的元数据文件包含父镜像ID、默认参数、创建日期,以及每个镜像层的digest信息;
S12、以镜像名为键,各镜像层SHA-256摘要值构成的集合为值的字典数据结构存入镜像结构数据库中。


3.根据权利要求1所述的一种基于关联度的Docker容器注册表预取方法,其特征在于,所述的步骤S2过程如下:
S21、对于每一个到达Docker容器注册表的请求,判断请求方法名是否为HTTP中的GET方法,并将包含GET方法的请求加入对应的预取窗口;
S22、当镜像层缓存不为空时,检索请求所对应的镜像层是否存储于镜像层缓存中;
S23、当请求命中镜像层缓存时,Docker容器注册表将该镜像层传回Docker引擎,并由LRU算法提高此镜像在缓存队列中的优先级,若请求没有命中缓存区时,将请求对应的镜像层信息发送至关联镜像层计算器,然后触发关联镜像层预取操作。


4.根据权利要求1所述的一种基于关联度的Docker容器注册表预取方法...

【专利技术属性】
技术研发人员:邓玉辉张晨
申请(专利权)人:暨南大学
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1