CN111857939A - 镜像删除和推送的方法、系统、电子设备及存储介质 - Google Patents

镜像删除和推送的方法、系统、电子设备及存储介质 Download PDF

Info

Publication number
CN111857939A
CN111857939A CN201910334787.8A CN201910334787A CN111857939A CN 111857939 A CN111857939 A CN 111857939A CN 201910334787 A CN201910334787 A CN 201910334787A CN 111857939 A CN111857939 A CN 111857939A
Authority
CN
China
Prior art keywords
mirror image
information
layer
push
push information
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.)
Pending
Application number
CN201910334787.8A
Other languages
English (en)
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.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology 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 Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201910334787.8A priority Critical patent/CN111857939A/zh
Publication of CN111857939A publication Critical patent/CN111857939A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种镜像删除和推送的方法、系统、电子设备及存储介质。其中,删除方法包括:获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息;获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息;删除所述层信息对应的镜像层的层文件。本发明一些实施例通过镜像的标记信息获取镜像的镜像层组成清单并删除镜像组成清单包括的镜像层的层文件,实现了对镜像的实时物理删除,相比于运行gc,节省了大量时间,且不会对镜像中心的服务造成影响。

Description

镜像删除和推送的方法、系统、电子设备及存储介质
技术领域
本发明属于虚拟化技术领域,尤其涉及一种镜像删除和推送的方法、系统、电子设备及存储介质。
背景技术
云计算时代,虚拟化技术是整个信息技术的基石。虚拟化技术既可以通过硬件模拟也可以通过操作系统来实现。Docker是基于Go语言实现的云开源项目,其目标是为了实现应用组件级别的“一次封装,到处运行”。即通过对应用组件的封装、分发、部署和运行等生命周期的管理,实现虚拟化应用。上述的应用组件既可以是一个Web(互联网总称)应用,也可以使一套数据库服务,甚至是一个操作系统或编译器。
现阶段,从镜像中心(registry,用于保存docker镜像,包括镜像层次结构和镜像源数据)中删除镜像的过程目前只通过镜像tag(版本信息)对应层的sha256(哈希值)来删除该镜像对应的tag,对删除镜像的元数据实际的层文件并不作处理,视为软删除。若要从镜像中心物理删除一个docker镜像,需要在软删除的基础上,在registry运行一段时间后,通过设置registry为只读模式,或者停止registry服务,然后运行gc(垃圾回收机制),由gc先扫描镜像中心中存储目录中所有的有记录的镜像的元数据层,然后再由此扫描存储目录中所有的镜像数据层,最后筛选出镜像中心中没有的镜像数据层并删除,从而实现镜像的物理删除,彻底释放存储空间。
现存镜像物理删除存在以下问题:
因为镜像的push(推送)、pull(拉取)存在并发性,如果在删除某层的过程中,有另外一个push的线程误认为此层已经存在而对本次的层文件不做上传操作,这样在删除第一个对应需要删除的镜像之后导致第二个线程push的镜像不能正常工作(因为缺失了层),这就要求在运行gc之前必须要停止registry服务或者将registry设置为只读模式,也就是禁止push流程(对存储的写操作)。另外,因为gc是要对镜像中心中的所有镜像进行扫描筛选,当镜像规模足够大的时候,gc将是一个漫长的过程,在这个过程中不能push,镜像中心几乎无法提供服务,严重影响业务。
发明内容
本发明实施例要解决的技术问题是为了克服现有技术中利用gc在镜像中心中物理删除镜像耗时长、影响镜像中心服务的缺陷,提供一种镜像删除和推送的方法、系统、电子设备及存储介质。
本发明实施例是通过以下技术方案解决上述技术问题的:
本发明实施例提供一种镜像实时物理删除方法,所述镜像实时物理删除方法包括:
获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息;
获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息;
删除所述层信息对应的镜像层的层文件。
较佳地,所述标记信息包括镜像版本信息。
较佳地,所述镜像实时物理删除方法还包括:
在删除所述层信息对应的镜像层的层文件之后,删除所述镜像层组成清单。
较佳地,删除所述层信息对应的镜像层的层文件的步骤具体包括:
获取所述层信息对应的镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
计算所述第一累计推送次数减N1,N1为所述层信息对应的镜像层的层数;
判断减后的所述第一累计推送次数是否等于累计初始值,若是,则:
删除所述第一推送信息;
删除所述层信息对应的镜像层的层文件;
和/或,删除所述镜像层组成清单的步骤具体包括:
获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括所述镜像层组成清单的第二累计推送次数;
计算所述第二累计推送次数减N2,N2为所述镜像层组成清单的个数;
判断减后的所述第二累计推送次数是否等于累计初始值,若是,则:
删除所述第二推送信息;
删除所述镜像层组成清单。
较佳地,所述镜像实时物理删除方法还包括:
在获取所述第一推送信息之后对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
在计算所述第一累计推送次数减N1之后对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像实时物理删除方法还包括:
在获取所述第二推送信息之后对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
在计算所述第二累计推送次数减N2之后对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
较佳地,所述镜像实时物理删除方法还包括:
在删除所述第一推送信息成功但删除所述层文件失败时,遍历所有镜像层的第一推送信息,删除缺少第一推送信息的镜像层对应的层文件;
和/或,所述镜像实时物理删除方法还包括:
在删除所述第二推送信息成功但删除所述镜像层组成清单失败时,遍历所有镜像层组成清单的第二推送信息,删除缺少第二推送信息的镜像层组成清单。
较佳地,组成所述镜像的镜像层包括:所述镜像的数据层和所述镜像的配置文件层,所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。
本发明实施例还提供一种镜像推送方法,包括:
推送组成镜像的镜像层的层文件;
获取所述镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
推送所述镜像的镜像层组成清单,所述镜像层组成清单包括所述镜像层的层信息;
获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括镜像层组成清单的第二累计推送次数;
计算新的第一累计推送次数,新的第一累计推送次数等于所述第一累计推送次数加N1,N1为推送的镜像层的层数;
计算新的第二累计推送次数,新的第二累计推送次数等于所述第二累计推送次数加N2,N2为所述镜像层组成清单的个数。
较佳地,获取所述镜像层的第一推送信息的步骤具体包括:
判断所述镜像层的第一推送信息是否存在;
若存在,则获取所述第一推送信息;
若不存在,则为所述镜像层新建所述第一推送信息,将所述第一推送信息中的所述第一累计推送次数设置为累计初始值;
和/或,获取所述镜像层组成清单的第二推送信息的步骤具体包括:
判断所述镜像层组成清单的第二推送信息是否存在;
若存在,则获取所述第二推送信息;
若不存在,则为所述镜像层组成清单新建所述第二推送信息,将所述第二推送信息中的所述第二累计推送次数设置为累计初始值。
较佳地,所述镜像推送方法还包括:
在获取所述第一推送信息之后,对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
在计算新的第一累计推送次数之后,对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像推送方法还包括:
在获取所述第二推送信息之后,对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
在计算新的第二累计推送次数之后,对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
本发明实施例还提供一种镜像实时物理删除系统,所述镜像实时物理删除系统包括:
指令获取模块,用于获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息;
清单获取模块,用于获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息;
镜像删除模块,用于删除所述层信息对应的镜像层的层文件。
较佳地,所述标记信息包括镜像版本信息。
较佳地,所述镜像实时物理删除系统还包括:
清单删除模块,用于在删除所述层信息对应的镜像层的层文件之后,删除所述镜像层组成清单。
较佳地,所述镜像删除模块具体包括:
第一获取单元,用于获取所述层信息对应的镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
第一计算单元,用于计算所述第一累计推送次数减N1,N1为所述层信息对应的镜像层的层数;
第一判断单元,用于判断减后的所述第一累计推送次数是否等于累计初始值,若是,则先删除所述第一推送信息再删除所述层信息对应的镜像层的层文件;
和/或,所述清单删除模块具体包括:
第二获取单元,用于获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括所述镜像层组成清单的第二累计推送次数;
第二计算单元,用于计算所述第二累计推送次数减N2,N2为所述镜像层组成清单的个数;
第二判断单元,用于判断减后的所述第二累计推送次数是否等于累计初始值,若是,则先删除所述第二推送信息再删除所述镜像层组成清单。
较佳地,所述镜像实时物理删除方系统还包括:
第一锁模块,用于在获取所述第一推送信息之后对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
所述第一锁模块还用于在计算所述第一累计推送次数减N1之后对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像实时物理删除系统还包括:
第二锁模块,用于在获取所述第二推送信息之后对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
所述第二锁模块还用于在计算所述第二累计推送次数减N2之后对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
较佳地,所述镜像实时物理删除系统还包括:
镜像优化删除模块,用于在删除所述第一推送信息成功但删除所述层文件失败时,遍历所有镜像层的第一推送信息,删除缺少第一推送信息的镜像层对应的层文件;
和/或,所述镜像实时物理删除系统还包括:
清单优化删除模块,用于在删除所述第二推送信息成功但删除所述镜像层组成清单失败时,遍历所有镜像层组成清单的第二推送信息,删除缺少第二推送信息的镜像层组成清单。
较佳地,组成所述镜像的镜像层包括:所述镜像的数据层和所述镜像的配置文件层,所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。
本发明实施例还提供一种镜像推送系统,包括:
第一推送模块,用于推送组成镜像的镜像层的层文件;
第一获取模块,用于获取所述镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数
第二推送模块,用于推送所述镜像的镜像层组成清单,所述镜像层组成清单包括所述镜像层的层信息;
第二获取模块,用于获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括镜像层组成清单的第二累计推送次数;
第一计算模块,用于计算新的第一累计推送次数,新的第一累计推送次数等于所述第一累计推送次数加N1,N1为推送的镜像层的层数;
第二计算模块,用于计算计算新的第二累计推送次数,新的第二累计推送次数等于所述第二累计推送次数加N2,N2为所述镜像层组成清单的个数。
较佳地,所述第一获取模块具体用于:
判断所述镜像层的第一推送信息是否存在;
若存在,则获取所述第一推送信息;
若不存在,则为所述镜像层新建所述第一推送信息,将所述第一推送信息中的所述第一累计推送次数设置为累计初始值;
和/或,所述第二获取模块具体用于:
判断所述镜像层组成清单的第二推送信息是否存在;
若存在,则获取所述第二推送信息;
若不存在,则为所述镜像层组成清单新建所述第二推送信息,将所述第二推送信息中的所述第二累计推送次数设置为累计初始值。
较佳地,所述镜像推送系统还包括:
第三锁模块,用于在获取所述第一推送信息之后,对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
所述第三锁模块还用于在计算新的第一累计推送次数之后,对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像推送系统还包括:
第四锁模块,用于在获取所述第二推送信息之后,对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
所述第四锁模块还用于在计算新的第二累计推送次数之后,对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如上所述的镜像实时物理删除方法或如上所述的镜像推送方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上所述的镜像实时物理删除方法或如上所述的镜像推送方法的步骤。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明实施例的积极进步效果在于:本发明一些实施例通过镜像的标记信息获取镜像的镜像层组成清单并删除镜像组成清单包括的镜像层的层文件,实现了对镜像的实时物理删除,相比于运行gc,节省了大量时间,且不会对镜像中心的服务造成影响;进一步地,还使用镜像的版本信息对镜像进行唯一确定地删除,避免出现误删除的巨大失误;进一步地,还对镜像层/镜像组成清单的推送信息进行管理,根据累计推送数判断是否删除镜像层的层文件/镜像组成清单,避免层文件/镜像组成清单被删除而造成非指定删除的其他镜像无法使用。
本发明一些实施例通过在镜像层/镜像组成清单推送后对镜像层/镜像层组成清单的推送信息进行统计管理,实现了对镜像的推送方法的优化,可以与镜像的实时物理删除相配合,为镜像删除提供依据。
附图说明
图1为本发明实施例1的一种镜像推送方法的流程图;
图2为本发明实施例2的一种镜像推送方法的流程图;
图3为本发明实施例3的一种镜像推送方法的流程图;
图4为本发明实施例4的一种镜像实时物理删除方法的流程图;
图5为本发明实施例5的一种镜像实时物理删除方法的流程图;
图6为本发明实施例6的一种镜像实时物理删除方法的流程图;
图7为本发明实施例7的一种镜像推送系统的示意框图;
图8为本发明实施例8的一种镜像实时物理删除系统的示意框图;
图9为本发明实施例9的一种电子设备的结构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
实施例1
本实施例提供了一种镜像推送方法。如图1所示,所述镜像推送方法包括:
步骤110:推送组成镜像的镜像层的层文件。
步骤120:获取所述镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数。
步骤130:推送所述镜像的镜像层组成清单,所述镜像层组成清单包括所述镜像层的层信息。
步骤140:获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括镜像层组成清单的第二累计推送次数。
步骤150:计算新的第一累计推送次数,新的第一累计推送次数等于所述第一累计推送次数加N1,N1为推送的镜像层的层数。
步骤160:计算新的第二累计推送次数,新的第二累计推送次数等于所述第二累计推送次数加N2,N2为所述镜像层组成清单的个数。
通常,一个完整的镜像包括若干镜像层和一个镜像层组成清单,其中的若干镜像层又包括若干数据层(如基于docker的镜像的blob层)和一个配置文件层(如基于docker的镜像的config层),所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。所述镜像层组成清单相当于镜像索引(如基于docker的镜像的manifest层)。在将镜像推送至镜像中心时,推送镜像层和镜像层组成清单的顺序通常如本实施例的流程所述,先推送镜像层,再推送镜像层组成清单,只有在镜像组成清单被成功推送后,才表示一个完整的镜像已经推送成功。基于对推送镜像顺序的思考,本实施例特意在镜像层和镜像层组成清单均被成功推送至镜像中心之后,才会计算新的第一累计推送次数和第二累计推送次数,这样,第一累计推送次数和第二累计推送次数的数值才能真实、准确地反映镜像中心中镜像层、镜像层组成清单的推送次数。当然如果在镜像推送过程中出错,则需要重新推送镜像。
所述第一推送信息和所述第二推送信息可以存储于插入至所述镜像中心的数据库中,通过数据库实现对推送信息的存储与管理、对推送次数的累加计算、方便信息查询,提高查询效率。
本实施例通过在镜像层的层文件和镜像组成清单推送后对镜像层的第一推送信息和镜像层组成清单的第二推送信息进行统计管理,尤其是对所述镜像层的第一累计推送次数和所述镜像层组成清单的第二累计推送次数进行更新计算,实现了对镜像的推送方法的优化。
实施例2
本实施例是对实施例1的镜像推送方法的进一步改进,对推送信息的获取进行了优化。如图2所示,本实施例的镜像推送方法与实施例1基本相同,不同之处在于:
本实施例的镜像推送方法中,步骤120具体包括:
步骤1201:判断所述镜像层的第一推送信息是否存在,若是,则执行步骤1202,若否,则执行步骤1203。
步骤1202:获取所述第一推送信息,然后执行步骤130。
步骤1203:为所述镜像层新建所述第一推送信息,将所述第一推送信息中的所述第一累计推送次数设置为累计初始值,然后执行步骤130。
本实施例中的步骤140具体包括:
步骤1401:判断所述镜像层组成清单的第二推送信息是否存在,若是,则执行步骤1402,若否,则执行步骤1403。
步骤1402:获取所述第二推送信息,然后执行步骤150。
步骤1403:为所述镜像层组成清单新建所述第二推送信息,将所述第二推送信息中的所述第二累计推送次数设置为累计初始值,然后执行步骤150。
本实施例中,所述第一累计推送次数和所述第二累计推送次数是在累计初始值上的累加,也就是说,当所述镜像层的层文件或所述镜像层组成清单第一次被推送时,所述镜像层的第一累计推送次数或所述镜像层组成清单的第二累计推送次数等于所述累计初始值,所述累计初始值可以根据需求设置为-1、0、1或者其它任意数值。在不同镜像的不断推送中,相同镜像层的所述第一累计推送次数和相同镜像组成清单的所述第二累计推送次数在不断增加。
当然在其他实施例中,出于简化流程或其他需求,所述镜像推送方法也可以只采用步骤1201-1203实现步骤120,或只采用步骤1401-1403实现步骤140,从而只对步骤120或步骤140中的一个进行优化。
实施例3
本实施例是对实施例1的镜像推送方法的进一步改进,对推送信息的修改进行了优化。如图3所示,本实施例的镜像推送方法与实施例1基本相同,不同之处在于,本实施例中的镜像推送方法还包括:
在步骤120之后插入步骤121:对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作。
在步骤150之后插入步骤151:对所述第一推送信息去锁,用以解除对所述读写操作的禁止。
本实施例中的镜像推送方法还包括:
在步骤140之后插入步骤141:对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作。
在步骤160之后插入步骤161:对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
本实施例对所述第一推送信息和所述第二推送信息加、去锁,可以避免在计算新的第一累计推送次数和新的第二累计推送次数时其它用户对所述第一推送信息和所述第二推送信息进行读写操作。针对数据库存储的第一推送信息和第二推送信息,可以给所述第一推送信息和所述第二推送信息加行级读写锁并进行加锁、去锁的操作。
当然在其他实施例中,出于简化流程或其他需求,所述镜像推送方法也可以选择性地只采用步骤121和步骤151对所述第一推送信息加、去锁,或只采用步骤141-161对所述第二推送信息加、去锁。另外,在本实施例或上述的其他实施例中,步骤120还可以进一步采用实施例2中的步骤1201-1203实现,步骤140还可以进一步采用实施例2中的步骤1401-1403实现,以达到更优的技术效果。
实施例4
图4示出了本实施例的一种镜像实时物理删除方法。所述镜像实时物理删除方法包括:
步骤210:获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息。
步骤220:获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息。
步骤230:删除所述层信息对应的镜像层的层文件。
通常,一个完整的镜像包括若干镜像层和一个镜像层组成清单,其中的若干镜像层又包括若干数据层(如基于docker的镜像的blob层)和一个配置文件层(如基于docker的镜像的config层),所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。所述镜像层组成清单相当于镜像索引(如基于docker的镜像的manifest层)。
本实施例通过上述的步骤实现了在不运行gc的前提下对镜像的物理删除,大大节省了删除时间,不会对镜像中心的服务造成影响,可以实现镜像的实时物理删除。
实施例5
本实施例是对实施例4的镜像实时物理删除方法的进一步改进。具体改进之处在于:所述标记信息包括镜像版本信息。相应地,如图5所示,本实施例的镜像实时物理删除方法与实施例4基本相同,不同之处在于:
步骤210具体包括步骤2101:获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的镜像版本信息,如基于docker的镜像层tag字段信息。
步骤220具体包括步骤2201:获取所述镜像版本信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息。
需要说明的是,通常在镜像中心中区分镜像层的是digest字段信息(即镜像的镜像层组成清单的sha256码(哈希值)),而同一镜像名、同一digest字段信息的镜像可能有不同的几个tag字段信息,这几个tag字段信息共享同一个digest字段信息,本领域技术人员在常规删除digest字段信息对应的镜像层组成清单时,会造成相同digest字段信息的所有tag字段信息对应的镜像层都被顺带删除,造成重大失误。针对此问题,本实施例在所述镜像删除指令中包括指定删除的镜像的tag字段信息,通过tag字段信息获取镜像层组成清单并读取。当然,所述镜像删除指令所包括的内容并不仅限于此,所述镜像删除指令还可以包括指定删除的镜像的镜像名。
实施例6
本实施例是在实施例4上的进一步改进。对镜像层的层文件的删除进行了优化。如图6所示,本实施例的镜像实时物理删除方法与实施例4基本相同,不同之处在于:
本实施例中的镜像实时物理删除方法中,步骤230具体包括:
步骤2301:获取所述层信息对应的镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数。
步骤2302:计算所述第一累计推送次数减N1,N1为所述层信息对应的镜像层的层数。
步骤2303:判断减后的所述第一累计推送次数是否等于累计初始值,若是,则执行步骤2304,否则只更新所述第一累计推送次数后不执行后续的删除操作。
步骤2304:删除所述第一推送信息。
步骤2305:删除所述层信息对应的镜像层的层文件。
另外,本实施例中,所述镜像实时物理删除方法还包括在步骤230之后删除所述镜像层组成清单。删除所述镜像层组成清单的步骤具体包括:
步骤2401:获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括所述镜像层组成清单的第二累计推送次数。
步骤2402:计算所述第二累计推送次数减N2,N2为所述镜像层组成清单的个数。
步骤2403:判断减后的所述第二累计推送次数是否等于累计初始值,若是,则执行步骤2404,否则只更新所述第一累计推送次数后不执行后续的删除操作。
步骤2404:删除所述第二推送信息。
步骤2405:删除所述镜像层组成清单。
其中,所述第一推送信息和所述第二推送信息可以在镜像层和镜像层组成清单被推送至镜像中心之后产生,关于所述第一推送信息和所述第二推送信息的说明可以参考实施例1-3,在此不再赘述。所述第一推送信息和所述第二推送信息可以存储于插入至所述镜像中心的数据库中,通过数据库实现对推送信息的存储与管理、对推送次数的累减计算、方便信息查询,提高查询效率。
本实施例中,第一累计推送次数/第二累计推送次数回退至累计初始值,说明相应的镜像层的层文件/镜像层组成清单已经不被任何镜像使用,在此情况下,可以放心地删除相应的推送信息和镜像层的层文件/镜像层组成清单,不会影响其它镜像。
另外,本实施例还特意在删除所述第一推送信息之后才删除所述层信息对应的镜像层的层文件,在删除所述第二推送信息之后才删除所述镜像组成清单,这样可以有利于在删除推送信息出错时的回退操作。
另外,本实施例中,所述镜像实时物理删除方法还包括:
在步骤2301之后对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作。
在步骤2302之后对所述第一推送信息去锁,用以解除对所述读写操作的禁止。
所述镜像实时物理删除方法还包括:
在步骤2401之后对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作。
在步骤2402之后对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
本实施例对所述第一推送信息和所述第二推送信息加、去锁,可以避免在计算新的第一累计推送次数和新的第二累计推送次数时其它用户对所述第一推送信息和所述第二推送信息进行读写操作。针对数据库存储的第一推送信息和第二推送信息,可以给所述第一推送信息和所述第二推送信息加行级读写锁并进行加锁、去锁的操作。
为了实现镜像层的真实删除,避免镜像层删除失败,所述镜像实时物理删除方法还包括:
在删除所述第一推送信息成功但删除所述层文件失败时,遍历所有镜像层的第一推送信息,删除缺少第一推送信息的镜像层对应的层文件。
同样地,为了镜像层组成清单的真实删除,避免镜像层组成清单删除失败,所述镜像实时物理删除方法还包括:
在删除所述第二推送信息成功但删除所述镜像层组成清单失败时,遍历所有镜像层组成清单的第二推送信息,删除缺少第二推送信息的镜像层组成清单。
具体可以通过gc遍历存储所述第一推送信息和所述第二推送信息的数据库,在所述镜像中心中删除所述数据库缺少第一推送信息的镜像层对应的层文件及缺少第二推送信息的镜像层组成清单。gc作为镜像物理删除的辅助手段,通过遍历所述数据库而不是遍历整个文件系统来删除出错的文件,不但可以保证镜像物理删除的准确性,还可以提高gc删除镜像文件的时效性。
当然在其他实施例中,出于简化流程或其他需求,所述镜像实时物理删除方法也可以选择性地只对所述第一推送信息加、去锁,或只对所述第二推送信息加、去锁。另外,在本实施例或上述的其他实施例中,步骤210还可以进一步采用实施例5中的步骤2101实现,步骤220还可以进一步采用实施例5中的步骤2201实现,以达到更优的技术效果。
实施例7
本实施例提供了一种镜像推送系统。如图7所示,所述镜像推送系统包括:第一推送模块310、第一获取模块320、第二推送模块330、第二获取模块340、第一计算模块350和第二计算模块360。
所述第一推送模块310用于推送组成镜像的镜像层的层文件。
所述第一获取模块320用于获取所述镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数。
所述第二推送模块330用于推送所述镜像的镜像层组成清单,所述镜像层组成清单包括所述镜像层的层信息。
所述第二获取模块340用于获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括镜像层组成清单的第二累计推送次数。
所述第一计算模块350用于计算新的第一累计推送次数,新的第一累计推送次数等于所述第一累计推送次数加N1,N1为推送的镜像层的层数。
所述第二计算模块360用于计算新的第二累计推送次数,新的第二累计推送次数等于所述第二累计推送次数加N2,N2为所述镜像层组成清单的个数。
通常,一个完整的镜像包括若干镜像层和一个镜像层组成清单,其中的若干镜像层又包括若干数据层(如基于docker的镜像的blob层)和一个配置文件层(如基于docker的镜像的config层),所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。所述镜像层组成清单相当于镜像索引(如基于docker的镜像的manifest层)。在将镜像推送至镜像中心时,推送镜像层和镜像层组成清单的顺序通常先由所述第一推送模块310推送镜像层,再由所述第二推送模块330推送镜像层组成清单,只有在镜像组成清单被成功推送后,才表示一个完整的镜像已经推送成功。基于对推送镜像顺序的思考,本实施例特意在镜像层和镜像层组成清单均被成功推送至镜像中心之后,才会计算新的第一累计推送次数和第二累计推送次数,这样,第一累计推送次数和第二累计推送次数的数值才能真实、准确地反映镜像中心中镜像层、镜像层组成清单的推送次数。当然如果在镜像推送过程中出错,则需要重新推送镜像。
所述第一推送信息和所述第二推送信息可以存储于插入至所述镜像中心的数据库中,通过数据库实现对推送信息的存储与管理、对推送次数的累加计算、方便信息查询,提高查询效率。
本实施例通过在镜像层的层文件和镜像组成清单推送后对镜像层的第一推送信息和镜像层组成清单的第二推送信息进行统计管理,尤其是对所述镜像层的第一累计推送次数和所述镜像层组成清单的第二累计推送次数进行更新计算,实现了对镜像的推送系统的优化。
为了对推送信息的获取进行优化,本实施例的所述第一获取模块320可以具体用于:
判断所述镜像层的第一推送信息是否存在;
若存在,则获取所述第一推送信息;
若不存在,则为所述镜像层新建所述第一推送信息,将所述第一推送信息中的所述第一累计推送次数设置为累计初始值。
所述第二获取模块340可以具体用于:
判断所述镜像层组成清单的第二推送信息是否存在;
若存在,则获取所述第二推送信息;
若不存在,则为所述镜像层组成清单新建所述第二推送信息,将所述第二推送信息中的所述第二累计推送次数设置为累计初始值。
本实施例中,所述第一累计推送次数和所述第二累计推送次数是在累计初始值上的累加,也就是说,当所述镜像层的层文件或所述镜像层组成清单第一次被推送时,所述镜像层的第一累计推送次数或所述镜像层组成清单的第二累计推送次数等于所述累计初始值,所述累计初始值可以根据需求设置为-1、0、1或者其它任意数值。在不同镜像的不断推送中,相同镜像层的所述第一累计推送次数和相同镜像组成清单的所述第二累计推送次数在不断增加。
当然在其他实施例中,出于简化系统或其他需求,所述镜像推送系统也可以只对所述第一获取模块320或所述第二获取模块340中的一个进行优化。
为了对推送信息的修改进行优化,所述镜像推送系统还可以进一步包括:第三锁模块370和第四锁模块380。
所述第三锁模块370用于在获取所述第一推送信息之后,对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作。所述第三锁模块还用于在计算新的第一累计推送次数之后,对所述第一推送信息去锁,用以解除对所述读写操作的禁止。
所述第四锁模块380用于在获取所述第二推送信息之后,对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作。所述第四锁模块还用于在计算新的第二累计推送次数之后,对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
本实施例对所述第一推送信息和所述第二推送信息加、去锁,可以避免在计算新的第一累计推送次数和新的第二累计推送次数时其它用户对所述第一推送信息和所述第二推送信息进行读写操作。针对数据库存储的第一推送信息和第二推送信息,可以给所述第一推送信息和所述第二推送信息加行级读写锁并进行加锁、去锁的操作。
当然在其他实施例中,出于简化系统或其他需求,所述镜像推送系统也可以选择性地只采用所述第三锁模块370对所述第一推送信息加、去锁,或只采用所述第四锁模块380对所述第二推送信息加、去锁。
实施例8
图8示出了本实施例的一种镜像实时物理删除系统。所述镜像实时物理删除系统包括:指令获取模块410、清单获取模块420和镜像删除模块430。
所述指令获取模块410用于获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息。
所述清单获取模块420用于获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息。
所述镜像删除模块430用于删除所述层信息对应的镜像层的层文件。
本实施例通过上述的模块实现了在不运行gc的前提下对镜像的物理删除,大大节省了删除时间,不会对镜像中心的服务造成影响,可以实现镜像的实时物理删除。
本实施例中,所述标记信息可以具体包括镜像版本信息。所述指令获取模块410获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的镜像版本信息,如基于docker的镜像层tag字段信息。所述清单获取模块420获取所述镜像版本信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息。
需要说明的是,通常在镜像中心中区分镜像层的是digest字段信息(即镜像的镜像层组成清单的sha256码(哈希值)),而同一镜像名、同一digest字段信息的镜像可能有不同的几个tag字段信息,这几个tag字段信息共享同一个digest字段信息,本领域技术人员在常规删除digest字段信息对应的镜像层组成清单时,会造成相同digest字段信息的所有tag字段信息对应的镜像层都被顺带删除,造成重大失误。针对此问题,本实施例在所述镜像删除指令中包括指定删除的镜像的tag字段信息,通过tag字段信息获取镜像层组成清单并读取。当然,所述镜像删除指令所包括的内容并不仅限于此,所述镜像删除指令还可以包括指定删除的镜像的镜像名。
为了镜像层的层文件的删除进行了优化,所述镜像删除模块430具体包括:第一获取单元4301、第一计算单元4302和第一判断单元4303。
所述第一获取单元4301用于获取所述层信息对应的镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
所述第一计算单元4302用于计算所述第一累计推送次数减N1,N1为所述层信息对应的镜像层的层数;
所述第一判断单元4303用于判断减后的所述第一累计推送次数是否等于累计初始值,若是,则先删除所述第一推送信息再删除所述层信息对应的镜像层的层文件。
另外,本实施例中,所述镜像实时物理删除系统还包括:清单删除模块440。
所述清单删除模块440用于在删除所述层信息对应的镜像层的层文件之后,删除所述镜像层组成清单。所述清单删除模块440可以具体包括:第二获取单元4401、第二计算单元4402和第二判断单元4403。
所述第二获取单元4401用于获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括所述镜像层组成清单的第二累计推送次数。
所述第二计算单元4402用于计算所述第二累计推送次数减N2,N2为所述镜像层组成清单的个数。
所述第二判断单元4403用于判断减后的所述第二累计推送次数是否等于累计初始值,若是,则先删除所述第二推送信息再删除所述镜像层组成清单。
其中,所述第一推送信息和所述第二推送信息可以在镜像层和镜像层组成清单被推送至镜像中心之后产生,关于所述第一推送信息和所述第二推送信息的说明可以参考实施例7,在此不再赘述。所述第一推送信息和所述第二推送信息可以存储于插入至所述镜像中心的数据库中,通过数据库实现对推送信息的存储与管理、对推送次数的累减计算、方便信息查询,提高查询效率。
本实施例中,第一累计推送次数/第二累计推送次数回退至累计初始值,说明相应的镜像层的层文件/镜像层组成清单已经不被任何镜像使用,在此情况下,可以放心地删除相应的推送信息和镜像层的层文件/镜像层组成清单,不会影响其它镜像。
另外,本实施例还特意在删除所述第一推送信息之后才删除所述层信息对应的镜像层的层文件,在删除所述第二推送信息之后才删除所述镜像组成清单,这样可以有利于在删除推送信息出错时的回退操作。
另外,本实施例中,所述镜像实时物理删除方系统还包括:第一锁模块450和第二锁模块460。
所述第一锁模块450用于在获取所述第一推送信息之后对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作。所述第一锁模块450还用于在计算所述第一累计推送次数减N1之后对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
所述第二锁模块460用于在获取所述第二推送信息之后对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作。所述第二锁模块460还用于在计算所述第二累计推送次数减N2之后对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
本实施例对所述第一推送信息和所述第二推送信息加、去锁,可以避免在计算新的第一累计推送次数和新的第二累计推送次数时其它用户对所述第一推送信息和所述第二推送信息进行读写操作。针对数据库存储的第一推送信息和第二推送信息,可以给所述第一推送信息和所述第二推送信息加行级读写锁并进行加锁、去锁的操作。
为了实现镜像层的真实删除,避免镜像层删除失败,所述镜像实时物理删除系统还包括:镜像优化删除模块470。
所述镜像优化删除模块470用于在删除所述第一推送信息成功但删除所述层文件失败时,遍历所有镜像层的第一推送信息,删除缺少第一推送信息的镜像层对应的层文件。
同样地,为了镜像层组成清单的真实删除,避免镜像层组成清单删除失败,所述镜像实时物理删除系统还包括:清单优化删除模块480。
所述清单优化删除模块480用于在删除所述第二推送信息成功但删除所述镜像层组成清单失败时,遍历所有镜像层组成清单的第二推送信息,删除缺少第二推送信息的镜像层组成清单。
具体可以通过gc遍历存储所述第一推送信息和所述第二推送信息的数据库,在所述镜像中心中删除所述数据库缺少第一推送信息的镜像层对应的层文件及缺少第二推送信息的镜像层组成清单。gc作为镜像物理删除的辅助手段,通过遍历所述数据库而不是遍历整个文件系统来删除出错的文件,不但可以保证镜像物理删除的准确性,还可以提高gc删除镜像文件的时效性。
当然在其他实施例中,出于简化系统或其他需求,所述镜像实时物理删除系统也可以选择性地只对所述第一推送信息加、去锁,或只对所述第二推送信息加、去锁。
实施例9
图9为本发明实施例9提供的一种电子设备的结构示意图。所述电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例1-3的镜像推送方法或实施例4-6的镜像实时物理删除方法。图9显示的电子设备50仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,电子设备50可以以通用计算设备的形式表现,例如其可以为服务器设备。电子设备50的组件可以包括但不限于:上述至少一个处理器51、上述至少一个存储器52、连接不同系统组件(包括存储器52和处理器41)的总线53。
总线53包括数据总线、地址总线和控制总线。
存储器52可以包括易失性存储器,例如随机存取存储器(RAM)521和/或高速缓存存储器522,还可以进一步包括只读存储器(ROM)523。
存储器52还可以包括具有一组(至少一个)程序模块524的程序/实用工具525,这样的程序模块524包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
处理器51通过运行存储在存储器52中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1-3的镜像推送方法或实施例4-6的镜像实时物理删除方法。
电子设备50也可以与一个或多个外部设备54(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口55进行。并且,模型生成的设备50还可以通过网络适配器56与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图9所示,网络适配器56通过总线53与模型生成的设备50的其它模块通信。应当明白,尽管图中未示出,可以结合模型生成的设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
实施例10
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1-3的镜像推送方法或实施例4-6的镜像实时物理删除方法的步骤。
其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。
在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1-3的镜像推送方法或实施例4-6的镜像实时物理删除方法中的步骤。
其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

Claims (22)

1.一种镜像实时物理删除方法,其特征在于,所述镜像实时物理删除方法包括:
获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息;
获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息;
删除所述层信息对应的镜像层的层文件。
2.如权利要求1所述的镜像实时物理删除方法,其特征在于,所述标记信息包括镜像版本信息。
3.如权利要求1所述的镜像实时物理删除方法,其特征在于,所述镜像实时物理删除方法还包括:
在删除所述层信息对应的镜像层的层文件之后,删除所述镜像层组成清单。
4.如权利要求1或3所述的镜像实时物理删除方法,其特征在于,删除所述层信息对应的镜像层的层文件的步骤具体包括:
获取所述层信息对应的镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
计算所述第一累计推送次数减N1,N1为所述层信息对应的镜像层的层数;
判断减后的所述第一累计推送次数是否等于累计初始值,若是,则:
删除所述第一推送信息;
删除所述层信息对应的镜像层的层文件;
和/或,删除所述镜像层组成清单的步骤具体包括:
获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括所述镜像层组成清单的第二累计推送次数;
计算所述第二累计推送次数减N2,N2为所述镜像层组成清单的个数;
判断减后的所述第二累计推送次数是否等于累计初始值,若是,则:
删除所述第二推送信息;
删除所述镜像层组成清单。
5.如权利要求4所述的镜像实时物理删除方法,其特征在于,所述镜像实时物理删除方法还包括:
在获取所述第一推送信息之后对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
在计算所述第一累计推送次数减N1之后对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像实时物理删除方法还包括:
在获取所述第二推送信息之后对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
在计算所述第二累计推送次数减N2之后对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
6.如权利要求4所述的镜像实时物理删除方法,其特征在于,所述镜像实时物理删除方法还包括:
在删除所述第一推送信息成功但删除所述层文件失败时,遍历所有镜像层的第一推送信息,删除缺少第一推送信息的镜像层对应的层文件;
和/或,所述镜像实时物理删除方法还包括:
在删除所述第二推送信息成功但删除所述镜像层组成清单失败时,遍历所有镜像层组成清单的第二推送信息,删除缺少第二推送信息的镜像层组成清单。
7.如权利要求1所述的镜像实时物理删除方法,其特征在于,组成所述镜像的镜像层包括:所述镜像的数据层和所述镜像的配置文件层,所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。
8.一种镜像推送方法,其特征在于,包括:
推送组成镜像的镜像层的层文件;
获取所述镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
推送所述镜像的镜像层组成清单,所述镜像层组成清单包括所述镜像层的层信息;
获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括镜像层组成清单的第二累计推送次数;
计算新的第一累计推送次数,新的第一累计推送次数等于所述第一累计推送次数加N1,N1为推送的镜像层的层数;
计算新的第二累计推送次数,新的第二累计推送次数等于所述第二累计推送次数加N2,N2为所述镜像层组成清单的个数。
9.如权利要求8所述的镜像推送方法,其特征在于,获取所述镜像层的第一推送信息的步骤具体包括:
判断所述镜像层的第一推送信息是否存在;
若存在,则获取所述第一推送信息;
若不存在,则为所述镜像层新建所述第一推送信息,将所述第一推送信息中的所述第一累计推送次数设置为累计初始值;
和/或,获取所述镜像层组成清单的第二推送信息的步骤具体包括:
判断所述镜像层组成清单的第二推送信息是否存在;
若存在,则获取所述第二推送信息;
若不存在,则为所述镜像层组成清单新建所述第二推送信息,将所述第二推送信息中的所述第二累计推送次数设置为累计初始值。
10.如权利要8所述的镜像推送方法,其特征在于,所述镜像推送方法还包括:
在获取所述第一推送信息之后,对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
在计算新的第一累计推送次数之后,对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像推送方法还包括:
在获取所述第二推送信息之后,对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
在计算新的第二累计推送次数之后,对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
11.一种镜像实时物理删除系统,其特征在于,所述镜像实时物理删除系统包括:
指令获取模块,用于获取镜像删除指令,所述镜像删除指令包括指定删除的镜像的标记信息;
清单获取模块,用于获取所述标记信息对应的镜像的镜像层组成清单,所述镜像层组成清单包括组成所述镜像的镜像层的层信息;
镜像删除模块,用于删除所述层信息对应的镜像层的层文件。
12.如权利要求11所述的镜像实时物理删除系统,其特征在于,所述标记信息包括镜像版本信息。
13.如权利要求11所述的镜像实时物理删除系统,其特征在于,所述镜像实时物理删除系统还包括:
清单删除模块,用于在删除所述层信息对应的镜像层的层文件之后,删除所述镜像层组成清单。
14.如权利要求11或13所述的镜像实时物理删除系统,其特征在于,所述镜像删除模块具体包括:
第一获取单元,用于获取所述层信息对应的镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数;
第一计算单元,用于计算所述第一累计推送次数减N1,N1为所述层信息对应的镜像层的层数;
第一判断单元,用于判断减后的所述第一累计推送次数是否等于累计初始值,若是,则先删除所述第一推送信息再删除所述层信息对应的镜像层的层文件;
和/或,所述清单删除模块具体包括:
第二获取单元,用于获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括所述镜像层组成清单的第二累计推送次数;
第二计算单元,用于计算所述第二累计推送次数减N2,N2为所述镜像层组成清单的个数;
第二判断单元,用于判断减后的所述第二累计推送次数是否等于累计初始值,若是,则先删除所述第二推送信息再删除所述镜像层组成清单。
15.如权利要求14所述的镜像实时物理删除系统,其特征在于,所述镜像实时物理删除方系统还包括:
第一锁模块,用于在获取所述第一推送信息之后对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
所述第一锁模块还用于在计算所述第一累计推送次数减N1之后对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像实时物理删除系统还包括:
第二锁模块,用于在获取所述第二推送信息之后对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
所述第二锁模块还用于在计算所述第二累计推送次数减N2之后对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
16.如权利要求14所述的镜像实时物理删除系统,其特征在于,所述镜像实时物理删除系统还包括:
镜像优化删除模块,用于在删除所述第一推送信息成功但删除所述层文件失败时,遍历所有镜像层的第一推送信息,删除缺少第一推送信息的镜像层对应的层文件;
和/或,所述镜像实时物理删除系统还包括:
清单优化删除模块,用于在删除所述第二推送信息成功但删除所述镜像层组成清单失败时,遍历所有镜像层组成清单的第二推送信息,删除缺少第二推送信息的镜像层组成清单。
17.如权利要求11所述的镜像实时物理删除系统,其特征在于,组成所述镜像的镜像层包括:所述镜像的数据层和所述镜像的配置文件层,所述数据层包括镜像数据,所述配置文件层包括镜像配置信息。
18.一种镜像推送系统,其特征在于,包括:
第一推送模块,用于推送组成镜像的镜像层的层文件;
第一获取模块,用于获取所述镜像层的第一推送信息,所述第一推送信息包括所述镜像层的第一累计推送次数
第二推送模块,用于推送所述镜像的镜像层组成清单,所述镜像层组成清单包括所述镜像层的层信息;
第二获取模块,用于获取所述镜像层组成清单的第二推送信息,所述第二推送信息包括镜像层组成清单的第二累计推送次数;
第一计算模块,用于计算新的第一累计推送次数,新的第一累计推送次数等于所述第一累计推送次数加N1,N1为推送的镜像层的层数;
第二计算模块,用于计算新的第二累计推送次数,新的第二累计推送次数等于所述第二累计推送次数加N2,N2为所述镜像层组成清单的个数。
19.如权利要求18所述的镜像推送系统,其特征在于,所述第一获取模块具体用于:
判断所述镜像层的第一推送信息是否存在;
若存在,则获取所述第一推送信息;
若不存在,则为所述镜像层新建所述第一推送信息,将所述第一推送信息中的所述第一累计推送次数设置为累计初始值;
和/或,所述第二获取模块具体用于:
判断所述镜像层组成清单的第二推送信息是否存在;
若存在,则获取所述第二推送信息;
若不存在,则为所述镜像层组成清单新建所述第二推送信息,将所述第二推送信息中的所述第二累计推送次数设置为累计初始值。
20.如权利要求18所述的镜像推送系统,其特征在于,所述镜像推送系统还包括:
第三锁模块,用于在获取所述第一推送信息之后,对所述第一推送信息加锁,用以禁止对所述第一推送信息的读写操作;
所述第三锁模块还用于在计算新的第一累计推送次数之后,对所述第一推送信息去锁,用以解除对所述读写操作的禁止;
和/或,所述镜像推送系统还包括:
第四锁模块,用于在获取所述第二推送信息之后,对所述第二推送信息加锁,用以禁止对所述第二推送信息的读写操作;
所述第四锁模块还用于在计算新的第二累计推送次数之后,对所述第二推送信息去锁,用以解除对所述读写操作的禁止。
21.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至7中任一项所述的镜像实时物理删除方法或权利要求8-10中任一项所述的镜像推送方法。
22.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至7中任一项所述的镜像实时物理删除方法或权利要求8-10中任一项所述的镜像推送方法的步骤。
CN201910334787.8A 2019-04-24 2019-04-24 镜像删除和推送的方法、系统、电子设备及存储介质 Pending CN111857939A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910334787.8A CN111857939A (zh) 2019-04-24 2019-04-24 镜像删除和推送的方法、系统、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910334787.8A CN111857939A (zh) 2019-04-24 2019-04-24 镜像删除和推送的方法、系统、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN111857939A true CN111857939A (zh) 2020-10-30

Family

ID=72952442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910334787.8A Pending CN111857939A (zh) 2019-04-24 2019-04-24 镜像删除和推送的方法、系统、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111857939A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112491548A (zh) * 2020-12-07 2021-03-12 苏州浪潮智能科技有限公司 一种云平台签名镜像上传删除方法及装置
CN113505180A (zh) * 2021-09-10 2021-10-15 苏州浪潮智能科技有限公司 一种多云平台中镜像的同步方法、装置、设备及可读介质
CN114844879A (zh) * 2022-03-25 2022-08-02 网宿科技股份有限公司 镜像管理方法、电子设备和存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245373A (zh) * 2015-10-12 2016-01-13 天津市普迅电力信息技术有限公司 一种容器云平台系统的搭建及运行方法
CN105511943A (zh) * 2015-12-03 2016-04-20 华为技术有限公司 一种Docker容器运行方法和装置
CN105740048A (zh) * 2016-01-26 2016-07-06 华为技术有限公司 一种镜像管理方法、装置及系统
CN107105054A (zh) * 2017-05-17 2017-08-29 郑州云海信息技术有限公司 一种面向docker镜像仓库的镜像垃圾清理系统及方法
CN107797806A (zh) * 2016-08-29 2018-03-13 北京雪球信息科技有限公司 一种程序的部署方法
CN108369622A (zh) * 2015-12-18 2018-08-03 亚马逊技术股份有限公司 软件容器注册表服务

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105245373A (zh) * 2015-10-12 2016-01-13 天津市普迅电力信息技术有限公司 一种容器云平台系统的搭建及运行方法
CN105511943A (zh) * 2015-12-03 2016-04-20 华为技术有限公司 一种Docker容器运行方法和装置
CN108369622A (zh) * 2015-12-18 2018-08-03 亚马逊技术股份有限公司 软件容器注册表服务
CN105740048A (zh) * 2016-01-26 2016-07-06 华为技术有限公司 一种镜像管理方法、装置及系统
CN107797806A (zh) * 2016-08-29 2018-03-13 北京雪球信息科技有限公司 一种程序的部署方法
CN107105054A (zh) * 2017-05-17 2017-08-29 郑州云海信息技术有限公司 一种面向docker镜像仓库的镜像垃圾清理系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
腾讯云博客: ""Docker学习笔记之从镜像仓库获得镜像"", Retrieved from the Internet <URL:https://cloud.tencent.com/developer/article/1397751> *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112491548A (zh) * 2020-12-07 2021-03-12 苏州浪潮智能科技有限公司 一种云平台签名镜像上传删除方法及装置
CN112491548B (zh) * 2020-12-07 2022-12-09 苏州浪潮智能科技有限公司 一种云平台签名镜像上传删除方法及装置
CN113505180A (zh) * 2021-09-10 2021-10-15 苏州浪潮智能科技有限公司 一种多云平台中镜像的同步方法、装置、设备及可读介质
CN114844879A (zh) * 2022-03-25 2022-08-02 网宿科技股份有限公司 镜像管理方法、电子设备和存储介质
CN114844879B (zh) * 2022-03-25 2024-04-12 网宿科技股份有限公司 镜像管理方法、电子设备和存储介质

Similar Documents

Publication Publication Date Title
US10552372B2 (en) Systems, methods, and computer-readable media for a fast snapshot of application data in storage
KR101805948B1 (ko) 파일 시스템에 대한 체크포인트
US8874515B2 (en) Low level object version tracking using non-volatile memory write generations
US9727273B1 (en) Scalable clusterwide de-duplication
US11132350B2 (en) Replicable differential store data structure
US9772911B2 (en) Pooling work across multiple transactions for reducing contention in operational analytics systems
US20170192863A1 (en) System and method of failover recovery
US10013312B2 (en) Method and system for a safe archiving of data
US20130024423A1 (en) Adaptive retention for backup data
CN108021338B (zh) 用于实现两层提交协议的系统和方法
CN111857939A (zh) 镜像删除和推送的方法、系统、电子设备及存储介质
US9519673B2 (en) Management of I/O and log size for columnar database
US20190340261A1 (en) Policy-based data deduplication
US11243882B2 (en) In-array linked list identifier pool scheme
CN112579307A (zh) 一种物理锁资源的分配检测方法、装置及电子设备
US20220067065A1 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US20160019121A1 (en) Data transfers between cluster instances with delayed log file flush
US9009731B2 (en) Conversion of lightweight object to a heavyweight object
WO2023111910A1 (en) Rolling back database transaction
US20160350351A1 (en) In-place updates with concurrent reads in a decomposed state
US11356325B1 (en) Accelerating transactions from a trusted source
US11645333B1 (en) Garbage collection integrated with physical file verification
CN112269677A (zh) 一种异构云平台下的回滚操作装置、方法、设备及介质
US11379147B2 (en) Method, device, and computer program product for managing storage system
US20230237016A1 (en) Extending filesystem domains with a domain membership condition

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