一种面向docker镜像仓库的镜像垃圾清理系统及方法技术方案

技术编号:16105864 阅读:144 留言:0更新日期:2017-08-30 00:14
本发明专利技术公开了一种面向docker镜像仓库的镜像垃圾清理系统及方法,首先配置逻辑上可互相替换的主镜像仓库、备用镜像仓库;缓存镜像上传请求和镜像删除请求及对应镜像文件,并在指定时间段内取镜像上传请求和镜像删除请求的差集;切换主备用镜像仓库,通过备用镜像仓库执行差集上传镜像请求,执行完毕后,停止主镜像仓库并清理该主镜像仓库;最后将备用镜像仓库作为主镜像仓库,原主镜像仓库作为备用镜像仓库,重复上述逻辑,进行下一轮的镜像垃圾清理工作。本发明专利技术的一种面向docker镜像仓库的镜像垃圾清理系统及方法与现有技术相比,填补了docker镜像仓库中清理镜像技术的空白,可以有效地减小docker镜像仓库的存储压力,实用性强。

【技术实现步骤摘要】
一种面向docker镜像仓库的镜像垃圾清理系统及方法
本专利技术涉及云计算
,具体地说是一种面向docker镜像仓库的镜像垃圾清理系统及方法。
技术介绍
在云计算容器
的docker镜像仓库中,由于镜像的存储是分层存储,每一个镜像层只会存储改动的镜像和存储依赖的父镜像存储层的元信息,在这种存储结构下,要执行删除镜像来清理镜像仓库的空间,会涉及到两种难题:一是删除依赖镜像层是要首先判断该依赖层没有被其它镜像层依赖,这需要遍历依赖层,这样才能更好的清理镜像和释放镜像仓库空间;二是删除时候,涉及分布式加锁,如果删除某个镜像层时,恰恰同时有依赖该镜像层的镜像在上传,则会出现上传的镜像后续不可用的问题。基于上述问题,本专利技术提出了一种面向docker镜像仓库的镜像垃圾清理系统及方法,有效解决上述问题。
技术实现思路
本专利技术的技术任务是针对以上不足之处,提供一种面向docker镜像仓库的镜像垃圾清理系统及方法。一种面向docker镜像仓库的镜像垃圾清理系统,包括两个镜像仓库及以下模块:请求代理模块、消息中心模块、清理模块、清理agent,其中,两个镜像仓库分别为主镜像仓库、备用镜像仓库,主镜像仓库负责镜像的上传和下载请求,备用镜像仓库负责存储清洗后的镜像;请求代理模块负责请求和镜像写入存储,并根据消息中心模块的标识信息,执行不同代理请求;消息中心模块为请求代理模块提供标识信息,该标识信息包括开始清理、清理结束、主镜像仓库地址、备用镜像仓库地址,并在清理结束时向镜像仓库上的清理agent推送执行清空镜像仓库的命令;清理模块,根据消息中心的标识执行定时任务,对存储的请求进行取上传和删除请求的差集,并把差集对应的上传请求再次重新发送到当前的备用镜像仓库,执行完成后向消息中心发送标识消息;清理agent,请求agent在接收到消息中心的推送后,执行本模块的清理工作,完成后,向消息中心发送清理完成消息。在请求代理模块将请求和镜像写入存储时,首先配置请求存储模块和镜像存储模块,来分别存储该请求和镜像,该请求包括上传镜像请求和删除镜像请求,请求代理模块把上传和删除镜像的请求记录到请求存储模块中,把镜像放到镜像存储模块中。所述请求代理模块的工作过程为:请求代理模块在消息中心中查看当前的系统所处的阶段:是镜像垃圾清理阶段还是非镜像垃圾清理阶段,并且获取当前的主镜像地址和备用镜像仓库的地址;如果是非镜像垃圾清理阶段,则向当前的主镜像仓库透传发送请求;如果是镜像垃圾清理阶段,则上传镜像请求向备用镜像仓库上传;下载镜像时,先通过备用镜像仓库下载,如果没有,则通过主镜像仓库下载。所述消息中心模块中,在缓存镜像上传、删除请求时,提供开始清理、清理结束的标识按照不同的逻辑执行代理请求,清理模块定时根据消息中心的标识执行清理任务,并向消息中心写入执行阶段的标识,消息中心根据收集到的标识,向清理agent发送清理命令,并根据获取到的消息标识所处阶段及时切换主备仓库的逻辑角色。所述消息中心模块中,接受清理模块和清理agent发送的消息,进行标识阶段和逻辑主备用镜像仓库及向清理agent推送命令,具体实现步骤为:步骤一:首先进行初始化,消息中心模块设置当前的阶段为非清理阶段,设置当前的逻辑主备用镜像仓库;步骤二:当接收到清理模块开始清理镜像消息请求时,设置当前阶段为镜像清理阶段;步骤三:当接收到清理模块发送的差集请求重发结束的消息时,则向清理agent发送清理本模块命令;步骤四:当接收到所有的清理agent的清理完成消息后,改变当前的阶段为非清理阶段,切换主备用镜像仓库的逻辑角色。所述清理模块定时根据消息中心模块的标识进行计算缓存请求的差集和向备用镜像仓库执行差集请求,其实现步骤为:清理模块定时启动,并向消息中心模块不断询问上阶段的清理流程是否结束;当询问到上阶段清理流程结束,则在消息中心模块中标识清理工作开始,并从消息中心模块中获取到主镜像仓库地址和备用镜像仓库地址;清理模块向请求存储模块取得存储的镜像上传请求和镜像删除请求,并计算出上传请求和删除请求的差集,并从镜像存储中获取到差集对应的上传镜像请求对应的镜像;向备用镜像仓库执行差集对应的上传镜像请求,全部执行完上传请求后,向消息中心发送消息,清理模块上传镜像差集请求结束。一种面向docker镜像仓库的镜像垃圾清理方法,基于上述系统,该系统中配置有逻辑上可互相替换的主镜像仓库、备用镜像仓库,该方法的实现步骤为:缓存镜像上传请求和镜像删除请求及对应镜像文件,并在指定时间段内取镜像上传请求和镜像删除请求的差集;切换主备用镜像仓库,通过备用镜像仓库执行差集上传镜像请求,执行完毕后,停止主镜像仓库并清理该主镜像仓库;最后将备用镜像仓库作为主镜像仓库,原主镜像仓库作为备用镜像仓库,重复上述逻辑,进行下一轮的镜像垃圾清理工作。所述主镜像仓库负责镜像的上传和下载请求,备用镜像仓库负责存储清洗后的镜像。在切换主备用镜像仓库的步骤中,主镜像仓库切换成只读模式,备用镜像仓库切换成可读写模式,然后根据缓存的上传镜像请求和删除镜像请求差集,向备用镜像仓库执行差集上传镜像请求。在取得上传请求和镜像删除请求的差集前,启动请求代理模块只向备用镜像仓库上传下载请求,下载请求失败的,重发请求到主镜像仓库;然后向备用镜像仓库执行差集请求,执行完成后,通过请求代理模块,使其只代理上传下载请求到备用镜像仓库。本专利技术的一种面向docker镜像仓库的镜像垃圾清理系统及方法和现有技术相比,具有以下有益效果:本专利技术的一种面向docker镜像仓库的镜像垃圾清理系统及方法,填补了docker镜像仓库中清理镜像技术的空白,可以有效地减小docker镜像仓库的存储压力,可以使得docker镜像仓库有效支持频繁的上传删除镜像的操作,从而快速的清理镜像和释放镜像空间,实用性强,适用范围广泛,具有很好的推广应用价值。附图说明附图1为本专利技术的实现示意图。具体实施方式下面结合附图及具体实施例对本专利技术作进一步说明。如附图1所示,一种面向docker镜像仓库的镜像垃圾清理系统,包括两个镜像仓库及以下模块:请求代理模块、消息中心模块、清理模块、清理agent,其中,两个镜像仓库分别为主镜像仓库、备用镜像仓库,主备用镜像仓库作为逻辑上互相倒换的仓库,主镜像仓库负责镜像的上传和下载请求,备用镜像仓库负责存储清洗后的镜像;请求代理模块负责请求和镜像写入存储,并根据消息中心模块的标识信息,执行不同代理请求;消息中心模块为请求代理模块提供标识信息,该标识信息包括开始清理、清理结束、主镜像仓库地址、备用镜像仓库地址,并在清理结束时向镜像仓库上的清理agent推送执行清空镜像仓库的命令;清理模块,根据消息中心的标识执行定时任务,对存储的请求进行取上传和删除请求的差集,并把差集对应的上传请求再次重新发送到当前的备用镜像仓库,执行完成后向消息中心发送标识消息;清理agent,请求agent在接收到消息中心的推送后,执行本模块的清理工作,完成后,向消息中心发送清理完成消息。在请求代理模块将请求和镜像写入存储时,首先配置请求存储模块和镜像存储模块,来分别存储该请求和镜像,该请求包括上传镜像请求和删除镜像请求,请求代理模块把上传和删除镜像的请求记录到请求存储模块中,把镜像放到本文档来自技高网...
一种面向docker镜像仓库的镜像垃圾清理系统及方法

【技术保护点】
一种面向docker镜像仓库的镜像垃圾清理系统,其特征在于,包括两个镜像仓库及以下模块:请求代理模块、消息中心模块、清理模块、清理agent,其中,两个镜像仓库分别为主镜像仓库、备用镜像仓库,主镜像仓库负责镜像的上传和下载请求,备用镜像仓库负责存储清洗后的镜像;请求代理模块负责请求和镜像写入存储,并根据消息中心模块的标识信息,执行不同代理请求;消息中心模块为请求代理模块提供标识信息,该标识信息包括开始清理、清理结束、主镜像仓库地址、备用镜像仓库地址,并在清理结束时向镜像仓库上的清理agent推送执行清空镜像仓库的命令;清理模块,根据消息中心的标识执行定时任务,对存储的请求进行取上传和删除请求的差集,并把差集对应的上传请求再次重新发送到当前的备用镜像仓库,执行完成后向消息中心发送标识消息;清理agent,请求agent在接收到消息中心的推送后,执行本模块的清理工作,完成后,向消息中心发送清理完成消息。

【技术特征摘要】
1.一种面向docker镜像仓库的镜像垃圾清理系统,其特征在于,包括两个镜像仓库及以下模块:请求代理模块、消息中心模块、清理模块、清理agent,其中,两个镜像仓库分别为主镜像仓库、备用镜像仓库,主镜像仓库负责镜像的上传和下载请求,备用镜像仓库负责存储清洗后的镜像;请求代理模块负责请求和镜像写入存储,并根据消息中心模块的标识信息,执行不同代理请求;消息中心模块为请求代理模块提供标识信息,该标识信息包括开始清理、清理结束、主镜像仓库地址、备用镜像仓库地址,并在清理结束时向镜像仓库上的清理agent推送执行清空镜像仓库的命令;清理模块,根据消息中心的标识执行定时任务,对存储的请求进行取上传和删除请求的差集,并把差集对应的上传请求再次重新发送到当前的备用镜像仓库,执行完成后向消息中心发送标识消息;清理agent,请求agent在接收到消息中心的推送后,执行本模块的清理工作,完成后,向消息中心发送清理完成消息。2.根据权利要求1所述的一种面向docker镜像仓库的镜像垃圾清理系统,其特征在于,在请求代理模块将请求和镜像写入存储时,首先配置请求存储模块和镜像存储模块,来分别存储该请求和镜像,该请求包括上传镜像请求和删除镜像请求,请求代理模块把上传和删除镜像的请求记录到请求存储模块中,把镜像放到镜像存储模块中。3.根据权利要求2所述的一种面向docker镜像仓库的镜像垃圾清理系统,其特征在于,所述请求代理模块的工作过程为:请求代理模块在消息中心中查看当前的系统所处的阶段:是镜像垃圾清理阶段还是非镜像垃圾清理阶段,并且获取当前的主镜像地址和备用镜像仓库的地址;如果是非镜像垃圾清理阶段,则向当前的主镜像仓库透传发送请求;如果是镜像垃圾清理阶段,则上传镜像请求向备用镜像仓库上传;下载镜像时,先通过备用镜像仓库下载,如果没有,则通过主镜像仓库下载。4.根据权利要求2所述的一种面向docker镜像仓库的镜像垃圾清理系统,其特征在于,所述消息中心模块中,在缓存镜像上传、删除请求时,提供开始清理、清理结束的标识按照不同的逻辑执行代理请求,清理模块定时根据消息中心的标识执行清理任务,并向消息中心写入执行阶段的标识,消息中心根据收集到的标识,向清理agent发送清理命令,并根据获取到的消息标识所处阶段及时切换主备仓库的逻辑角色。5.根据权利要求4所述的一种面向docker镜像仓库的镜像垃圾清理系统,其特征在于,所述消息中心模块中,接受清理模块和清理agent发送的消息,进行标识阶段和逻辑主备用镜像仓库及向清理agent推送命令,具体实现步骤为:步骤一:首先进行初始化,消...

【专利技术属性】
技术研发人员:于杰
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1