一种检测并解决Docker本地镜像与远程仓库镜像冲突的方法与流程

文档序号:13736182阅读:2123来源:国知局
一种检测并解决Docker本地镜像与远程仓库镜像冲突的方法与流程

本发明涉及docker容器技术领域,具体为一种检测并解决docker本地镜像与远程仓库镜像冲突的方法。



背景技术:

docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。使用docker最简单的方式莫过于从现有的容器镜像开始,docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。docker仓库是用来包含镜像的位置,docker提供一个注册服务器(register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。

docker镜像往远端仓库推送时,由于没有和远端的仓库镜像进行冲突检查,会导致镜像相互覆盖而产生镜像的提交丢失的问题。

术语解释:

分层存储:镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。

dockerrepository:集中存放镜像的地方。

dockerregistry:注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。



技术实现要素:

针对上述问题,本发明的目的在于提供一种能够避免docker本地镜像提交时覆盖docker远程镜像问题,同时避免docker远程镜像更新覆盖docker本地镜像问题,提高同步docker镜像的协作效率的检测并解决docker本地镜像与远程仓库镜像冲突的方法。技术方案如下:

一种检测并解决docker本地镜像与远程仓库镜像冲突的方法,包括以下步骤:

步骤1:提交docker镜像到远程仓库;

步骤2:获取远程仓库镜像的分层存储信息,包括分层存储唯一识别码;

步骤3:对比本地镜像分层存储信息和远程仓库镜像分层存储信息,根据分层存储的唯一识别码判断镜像的分层存储是否存在冲突;

步骤4:若存在冲突,则提示用户是否需要系统自动合并;若用户选择自动合并方案,则系统执行自动合并操作,并返回步骤1的流程;否则放弃此次提交。

进一步的,所述步骤2的具体的过程为:使用dockerpull命令将远程仓库镜像更新到本地,并且把打上tagfetch;通过dockerinspect命令获取到远程仓库镜像的分层存储唯一识别码。

本发明的有益效果是:本发明通过docker镜像分层存储检查冲突检查,docker镜像分层存储冲突合并,避免docker本地镜像提交时覆盖docker远程镜像问题,同时避免docker远程镜像更新覆盖docker本地镜像问题,提高同步docker镜像的协作效率。

附图说明

图1为本发明检测并解决docker本地镜像与远程仓库镜像冲突的方法的流程图。

图2为实施例中本地镜像的分层存储信息和远程仓库镜像的分层存储信息比较图。

图3为实施例中将冲突合并后的最终效果。

具体实施方式

下面结合附图和具体实施例对本发明做进一步详细说明。本发明根据docker镜像分层存储的原理,通过对比本地镜像的分层和远程仓库镜像的分层的唯一识别码,确定镜像之间是否存在冲突,当出现冲突时,通过存储分层之间的合并解决冲突。具体步骤流程如图1所示:

步骤1:提交docker镜像到远程仓库。

步骤2:获取远程仓库镜像的分层存储信息,包括分层存储唯一识别码。

具体为:使用dockerpull命令将远程仓库镜像更新到本地,并且把打上tagfetch;通过dockerinspect命令获取到远程仓库镜像的分层存储唯一识别码。

步骤3:对比本地镜像分层存储信息和远程仓库镜像分层存储信息,根据分层存储的唯一识别码判断镜像的分层存储是否存在冲突。

获取本地镜像的分层存储信息和远程仓库镜像的分层存储信息,如图2所示,至下而上依次对比分层存储的唯一识别码,当发现识别码不一样时提示用户存在冲突,上图中本地镜像第6层分层存储affd5bff138b和远程仓库镜像第6层分层存储00c51113833f不一致,存在冲突。

步骤4:若存在冲突,则提示用户是否需要系统自动合并;若用户选择自动合并方案,则系统执行自动合并操作,并返回步骤1的流程;否则放弃此次提交。

图2中本地镜像第6层镜像的分层存储affd5bff138b和远程仓库镜像第6层分层存储00c51113833f存在冲突,此时可将远程镜像的分层存储00c51113833f更新到本地镜像的第5层分层存储4b1dd88a0315上,更新完成后再将本地镜像第6层分层存储affd5bff138b更新到分层存储00c51113833f上,从而将冲突合并,最终效果如图3所示。



技术特征:

技术总结
本发明公开一种检测并解决Docker本地镜像与远程仓库镜像冲突的方法,提交docker镜像到远程仓库;获取远程仓库镜像的分层存储信息,包括分层存储唯一识别码;对比本地镜像分层存储信息和远程仓库镜像分层存储信息,根据分层存储的唯一识别码判断镜像的分层存储是否存在冲突;若存在冲突,则提示用户是否需要系统自动合并;若用户选择自动合并方案,则系统执行自动合并操作,并返回步骤1的流程;否则放弃此次提交。本发明通过Docker镜像分层存储检查冲突检查,Docker镜像分层存储冲突合并,避免docker本地镜像提交时覆盖docker远程镜像问题,同时避免 docker远程镜像更新覆盖docker本地镜像问题,提高同步docker镜像的协作效率。

技术研发人员:陈超
受保护的技术使用者:成都知道创宇信息技术有限公司
技术研发日:2017.10.12
技术公布日:2018.02.16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1