CN113672349A - 一种镜像的更新方法、装置、设备及介质 - Google Patents

一种镜像的更新方法、装置、设备及介质 Download PDF

Info

Publication number
CN113672349A
CN113672349A CN202110958811.2A CN202110958811A CN113672349A CN 113672349 A CN113672349 A CN 113672349A CN 202110958811 A CN202110958811 A CN 202110958811A CN 113672349 A CN113672349 A CN 113672349A
Authority
CN
China
Prior art keywords
file
image
target
path
mirror image
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
CN202110958811.2A
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.)
Nsfocus Technologies Inc
Nsfocus Technologies Group Co Ltd
Original Assignee
Nsfocus Technologies Inc
Nsfocus Technologies Group 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 Nsfocus Technologies Inc, Nsfocus Technologies Group Co Ltd filed Critical Nsfocus Technologies Inc
Priority to CN202110958811.2A priority Critical patent/CN113672349A/zh
Publication of CN113672349A publication Critical patent/CN113672349A/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/45587Isolation or security of virtual machine instances
    • 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/45591Monitoring or debugging support

Landscapes

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

Abstract

本发明实施例提供了一种镜像的更新方法、装置、设备及介质,由于本发明实施例中,待更新的镜像共用一个基础系统镜像,并根据基础系统镜像以及修复后得到的目标基础系统镜像确定不一致的第一目标文件,获取待修复设备中待更新的镜像的基础系统镜像中记录的该第一目标文件对应的文件路径,基于该文件路径及该目标基础系统镜像中对该第一目标文件替换后的第二目标文件,即可完成对待修复设备中镜像的修复,该过程无需重启容器,仅对不一致的文件进行修复,减少了工作量。

Description

一种镜像的更新方法、装置、设备及介质
技术领域
本发明涉及容器与虚拟化技术领域,尤其涉及一种镜像的更新方法、装置、设备及介质。
背景技术
环境中很多镜像都是基于同一个基础系统镜像创建(build)而成的,而如果这个基础系统镜像出现漏洞,进行修复后,通常做法是:基于修复后的基础系统镜像重新build依赖该基础系统镜像的镜像,并基于重新build的全部镜像重新运行涉及到的容器。
此过程需要重新创建镜像,重启容器,需要付出很大的代价。而对基础系统镜像的漏洞的修复方案本身可能就是比较简单的需要替换基础系统镜像中的某一个文件,而如果这个环境是产品已经销售出去的各个设备,那么将涉及到将重新build的多个镜像分发到上百个设备,增加了每个设备的工作压力。
在对基础系统镜像进行漏洞修复时,也可以不用重新build镜像,而是对运行的容器进行文件替换,因为全部容器使用的镜像都是基于需要进行漏洞修复的基础系统镜像生成的,所以全部容器都需要进行文件替换。该修复过程的工作量也很大,而且容器做出修改后不持久化,即使成功的对容器进行了文件替换,某些情况下docker重启,例如宿主机断电、docker升级等,也会导致容器丢失相关更改,所以一旦发生这样的情况容器又会重新恢复到没有修复漏洞的状态。
发明内容
有鉴于此,本发明实施例提供了一种镜像的更新方法、装置、设备及介质,用以减小镜像修复的工作量,避免在外界环境的影响下丢失容器相关更改。
第一方面,本发明实施例提供了一种镜像的更新方法,所述方法包括:
对基础系统镜像进行漏洞修复,获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中各所述待更新的镜像共用一个基础系统镜像;
发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
进一步地,所述确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件包括:
获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;
比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
进一步地,所述获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径包括:
根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;
根据所述校验码标识信息,构建所述最底层的路径信息;
查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
进一步地,所述根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息包括:
获取所述待更新的镜像的存储路径中第一预设文件中记录的所述待更新的镜像的标识信息;
根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;
根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
第二方面,本发明实施例还提供了一种镜像更新装置,所述装置包括:
第一获取模块,用于获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
第二获取模块,用于获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中所述待更新的镜像共用一个基础系统镜像;
修复模块,用于发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
进一步地,所述第一获取模块,具体用于获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
进一步地,所述第二获取模块,具体用于根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;根据所述校验码标识信息,构建所述最底层的路径信息;查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
进一步地,所述第二获取模块具体用于根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
第三方面,本发明实施例还提供了一种电子设备,所述电子设备至少包括处理器和存储器,所述处理器用于执行存储器中存储的计算机程序时上述执行权利要求中任一所述镜像更新的步骤。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时执行上述权利要求中任一所述镜像更新的步骤。
由于本发明实施例中,待更新的镜像共用一个基础系统镜像,并根据基础系统镜像以及修复后得到的目标基础系统镜像确定不一致的第一目标文件,获取待修复设备中待更新的镜像的基础系统镜像中记录的该第一目标文件对应的文件路径,基于该文件路径及该目标基础系统镜像中对该第一目标文件替换后的第二目标文件,即可完成对待修复设备中镜像的修复,该过程无需重启容器,仅对不一致的文件进行修复,减少了工作量。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种镜像的更新过程示意图;
图2为本发明实施例提供的一种镜像压缩包中记录的内容示意图;
图3为本发明实施例提供的一种最底层的路径信息的内容示意图;
图4为本发明实施例提供的一种最底层的文件路径下的内容示意图;
图5为本发明实施例提供的一种镜像与镜像的标识信息的对应关系示意图;
图6为本发明实施例提供的一种元数据内容的示意图;
图7为本发明实施例提供的一种对基础系统镜像的文件进行替换的程序示意图;
图8为本发明实施例提供的一种docker镜像和容器层结构示意图;
图9为本发明实施例提供的一种镜像更新的整体流程图;
图10为本发明实施例提供的一种替换公共层文件的过程示意图;
图11为本发明实施例提供的一种镜像更新装置结构示意图;
图12为本发明实施例提供的一种电子设备结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了减少镜像修复工作量,避免因外界环境的影响丢失容器相关更改,本发明实施例提供了一种镜像的更新方法。
实施例1:
图1为本发明实施例提供的一种镜像的更新过程示意图,该过程包括如下步骤:
S101:对基础系统镜像进行漏洞修复得到目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件。
本发明实施例提供的镜像更新方法应用于电子设备,该电子设备可以是终端,服务器等设备。本发明实施例提供的镜像的更新方法是基于docker环境的。
当基础系统镜像出现漏洞后,为了保证镜像的正常运行,需要对基础系统镜像进行漏洞修复,具体的对基础系统镜像进行漏洞修复的过程属于现有技术,在本发明实施例中不再赘述。
对基础系统镜像进行修复后得到的修复后的基础系统镜像即为目标基础系统镜像。为了实现对镜像的修复,在本发明实施例中,得到目标基础系统镜像后,比较目标基础系统镜像与基础系统镜像中的底层文件,从而确定基础系统镜像与目标基础系统镜像中底层中不一致的文件,将该不一致的文件作为第一目标文件,该第一目标文件也就是需要替换的文件,将该目标基础镜像中对该第一目标文件替换后的文件作为第二目标文件,该第二目标文件也就是需要替换成的文件。比如,在对基础系统镜像进行漏洞修复时,将文件A替换成了文件B,则在获得目标基础系统镜像后,该基础系统镜像与该目标基础系统镜像中不一致的第一目标文件为文件A,该目标基础系统镜像中对该第一目标文件替换后的第二目标文件为文件B。
S102:获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中各所述待更新的镜像共用一个基础系统镜像。
由于镜像本身是分层存储的,如果多个镜像共用一个基础系统镜像,那么这个基础系统镜像的最底端的层应该是被多个镜像所复用的,最底端的层作为公共的层被多个镜像复用。因此在本发明实施例中,采用该多个镜像共用一个基础系统镜像的结构进行镜像修复。
在本发明实施例中由于多个镜像共用一个基础系统镜像,基础系统镜像作为最底层为多个镜像的公共层,因此当确定了第一目标文件后,可以基于镜像所使用的公共层的层路径,查找该第一目标文件对应的文件路径,从而在该文件路径下替换该第一目标文件。
S103:发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
为了使待修复设备能够进行镜像修复,当获取到第二目标文件及第一目标文件对应的文件路径后,将该文件路径及该第二目标文件发送给待修复设备,从而使待修复设备根据该文件路径及该第二目标文件对每个待更新的镜像进行修复。
将获取的第二目标文件发送到待修复设备,待修复设备根据该第二目标文件以及该文件路径,对第一目标文件的存储位置进行查找,从而将第一目标文件进行替换,将该第一目标文件替换为第二目标文件,完成对每个待更新的镜像的修复。
由于本发明实施例中,待更新的镜像共用一个基础系统镜像,并根据基础系统镜像以及修复后得到的目标基础系统镜像确定不一致的第一目标文件,获取待修复设备中待更新的镜像的基础系统镜像中记录的该第一目标文件对应的文件路径,基于该文件路径及该目标基础系统镜像中对该第一目标文件替换后的第二目标文件,即可完成对待修复设备中镜像的修复,该过程无需重启容器,仅对不一致的文件进行修复,减少了工作量。
实施例2:
为了准确的确定第一目标文件,在上述实施例的基础上,在本发明实施例中,所述确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件包括:
获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;
比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
具体的,对应漏洞修复后的目标基础系统镜像,一般会将该目标基础系统镜像保存为压缩包,例如可以使用docker save imagename-o image.tar指令,将目标基础系统镜像保存为tar包,相应的基础系统镜像也会保存为一个压缩包,为了区别基础系统镜像和目标基础系统镜像的压缩包,将基础系统镜像对应的压缩包称为第一压缩包,将目标基础系统镜像对应的压缩包称为第二压缩包。
压缩包中记录有镜像的层文件,该层文件中记录有对应层包含的每个文件。当获取到基础系统镜像和目标基础系统镜像的压缩包后,从每个压缩包中取到最底层对应的层文件,将两个压缩包最底层的层文件进行比对,从而获取到需要进行替换的第一目标文件。
图2为本发明实施例提供的一种镜像压缩包中记录的内容示意图,根据图2所示可知,layer.tar为目标基础系统镜像的压缩包中最底层的全部层文件。将第一压缩包与第二压缩包最底层的全部层文件进行比对,即可以得到需要进行替换的第一目标文件。
当确定了基础系统镜像与目标基础系统镜像中不一致的第一目标文件后,为了方便待修复设备进行镜像修复,在本发明实施例中可以将第一目标文件也打成压缩包,在发送时,可以将该压缩包上传到待修复设备进行下一步的替换动作。
实施例3:
为了获取准确的第一目标文件的文件路径,在上述各实施例的基础上,在本发明实施例中,所述获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径包括:
根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;
根据所述校验码标识信息,构建所述最底层的路径信息;
查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
由于Docker文件的存储路径固定,而在该存储路径下包含的每个文件也是固定的,并且每个文件中记录的内容也是固定的。因此,可以根据每个文件记录的信息,预先配置预设文件,根据预设文件中记录的信息,确定待更新的镜像的最底层的校验码标识信息(diff_id)。
由于该docker文件中层所在的路径格式是固定的,具体的,该层所在的路径格式为/var/lib/docker/image/aufs/layerdb/sha256/{chainid},其中,该chainid为待输入的各个层对应的校验码标识信息。因此,当获取到最底层的校验码标识信息后,可以基于该docker文件中层所在的路径格式以及该最底层的校验码标识信息,构建出最底层的路径信息。
若Docker中层所在的路径格式为/var/lib/docker/image/aufs/layerdb/sha256/{chainid},最底层的chainid等于diff_id,因此当获取到的最底层的diff_id为174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02时,基于上述方式,可以构建出最底层的路径信息为:/var/lib/docker/image/aufs/layerdb/sha256/174f5685490326fc0a1c0f5570b8663732189b327007e47ff13d2ca59673db02。
同样的,真实层的文件对应的文件路径对应的格式也是固定的,具体的,该真实层的文件对应的文件路径对应的格式为/var/lib/docker/aufs/diff/{cache-id},其中,该cache-id为待输入的各个层的索引标识信息。具体的,在确定最底层的路径信息后,该最底层的路径下包含各个名称的文件,确定该最底层路径下的cache-id文件的内容,将该cache-id文件的内容确定为最底层的索引标识信息。基于该最底层的索引标识信息以及该真实层的文件对应的文件路径对应的格式,构建最底层文件对应的文件路径,具体的,构建第一目标文件对应的文件路径。
图3为本发明实施例提供的一种最底层的路径信息的内容示意图,现针对图3进行说明。
在该路径信息下记录的文件有cache-id,diff以及size等信息。基于该cache-id文件包含的内容确定索引标识信息。
因为层文件的文件路径信息与cache-id存在固定关系,具体的层文件的文件路径信息的可以用以下方式表达:/var/lib/docker/aufs/diff/{cache-id},因此当获取到cache-id的值为:
1fedc742b7efd5fc14f87e5b56c1b0aed19fdde399e9d280b382d14333cf4208时,可以基于该cache-id构建最底层的文件对应的文件路径,具体的,该文件路径为:/var/lib/docker/aufs/diff/1fedc742b7efd5fc14f87e5b56c1b0aed19fdde399e9d280b382d14333cf4208。
图4为本发明实施例提供的一种最底层的文件路径下的内容示意图。
据图4所示,可以看到,这里面的目录结构已经是系统目录结构了。因此,可以基于获取到的第二目标文件的压缩包及该文件路径,进行文件替换。由于全部镜像和容器都使用到了这个基础系统镜像,因此替换动作会影响到全部使用该基础系统镜像的所有镜像及所有容器,从而实现了在无需build镜像,即可使用该基础系统镜像的所有镜像和所有容器的漏洞就行修复。
实施例4:
为了获取准确第一目标文件的文件路径,在上述各实施例的基础上,在本发明实施例中,所述根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息包括:
获取所述待更新的镜像的存储路径中第一预设文件中记录的所述待更新的镜像的标识信息;
根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;
根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
Docker文件的存储路径固定,文件默认存放在/var/lib/docker路径下,在该路径下存在的文件包括:repositories.json、imagedb以及layerdb,repositories.json中记录了每一个镜像与其对应的标识信息(sha256)的对应关系,因此可以将repositories.json确定为第一预设文件,基于该第一预设文件中记录的信息,确定待更新的镜像的标识信息。
具体的,Docker文件默认存放在/var/lib/docker路径下,而其第一预设文件的存储路径为/var/lib/docker/image/aufs/repositories.json,基于该存储路径查找第一预设文件,根据第一预设文件中记录的镜像与镜像的标识信息(sha256值)的对应关系,基于该镜像与镜像的标识信息的对象关系,可以针对每个待漏洞修复的镜像,查找该镜像的sha256值。
图5为本发明实施例提供的一种镜像与镜像的标识信息的对应关系示意图,根据该图可知,镜像10.67.2.143:8080/bsp/kafka对应的sha256为:db625ad3cad09b41b8f760d35028cf09bfeb90b112d3154798ce07caef41a145。
Docker文件的imagedb文件中记录有元数据配置文件的路径,因为镜像的元数据所对应的路径格式是固定的,因此当确定了镜像的元数据所对应的路径后,基于该镜像的元数据所对应的路径的根文件系统(rootfs)节点下的diff_ids中记录有镜像所用到的各个层的diff_id,从而可以基于该信息确定待更新的镜像的最底层的diff_id。具体的diff_ids是一个数组,该数组中的第一个元素为待更新的镜像的最底层的diff_id。在本发明实施例中,为了确定最底层的路径信息,基于该镜像的元数据所对应的元数据的格式以及该待更新的镜像的最底层的校验码标识信息(diff_id),确定该镜像的元数据所对应的元数据所在的路径。其中,该镜像的元数据所对应的元数据的格式为固定的,具体的,镜像的元数据所对应的元数据的格式为:/var/lib/docker/image/aufs/imagedb/content/sha256/{imageid},其中,该imageid为待输入的各个层的校验码标识信息,若该待更新的镜像的最底层的校验码标识信息为db625ad3cad09b41b8f760d35028cf09bfeb90b112d3154798ce07caef41a145,则该待更新的镜像的元数据所在的路径为/var/lib/docker/image/aufs/imagedb/content/sha256/db625ad3cad09b41b8f760d35028cf09bfeb90b112d3154798ce07caef41a145。
图6为本发明实施例提供的一种元数据内容的示意图,现针对图6进行说明:
镜像的元数据所对应的路径的根文件系统(rootfs)节点下的diff_ids中为一个数组,该数组中按照设定的顺序记录了镜像所用到个各个层的diff_id。其中,数组里的第一个元素为最底层的diff_id,而最后一个元素为最顶层的diff_id。
图7为本发明实施例提供的一种对基础系统镜像的文件进行替换的程序示意图,现针对图7进行说明。
若包含kafka镜像和zookeeper镜像,在对镜像更新之前,也就是说,在基于第一目标文件的路径以及第二目标文件对待更新的镜像更新之前,该系统内核的版本为Linuxrelease 7.9.2009,在基于第一目标文件的路径以及第二目标文件对待更新的镜像更新之后,具体的替换程序为:
pythonreplace_base_img.py10.67.2.143:8080/bsp/kafka/root/layer.tar,其中,该layer.tar为替换的文件,则该kafka镜像对应的容器的系统内核的版本为Linuxrelease 8.3.2011,该zookeeper镜像对应的容器的系统内核的版本也为Linux release8.3.2011,也就是说,用centos8.3镜像替换掉kafka镜像的最底层后,由于待更新的kafka镜像和zookeeper镜像都是用的centos7作为基础系统镜像,所以当kafka的最底层文件被替换后,可以查看zookeeper容器和kafka容器的基础系统镜像的版本全部变更为centos8,因此,由于全部镜像和容器都使用到了这个基础系统镜像,因此替换动作会影响到全部使用该基础系统镜像的镜像及容器,从而实现了在无需build镜像,即可对镜像和容器的公共层漏洞就行修复。
图8为本发明实施例提供的一种docker镜像和容器层结构示意图,现针对图8进行说明。
镜像(Image)就是一堆只读层(read layer)的统一视角,容器(container)也是一堆层的统一视角,该容器与镜像的区别在于容器的最上面那一层是可读可写的(read-write layer)。
图9为本发明实施例提供的一种镜像更新的整体流程图,现针对图9进行说明。
先基于docker中的repositories.json得到待更新镜像对应的sha256值,然后基于该sha256值确定镜像的元数据路径,进入该元数据路径,得到层信息数组,也就是diff_ids,根据该层信息数组,得到最底层的diff_id,其中,该最底层的diff_id为不该层信息数组中的第一个元素。基于该最底层的diff_id,确定最底层对应的路径,并得到最底层文件路径对应的cache_id,基于该cache_id,确定真实文件所在的路径,也就是第一目标文件对应的文件路径,基于该第一目标文件对应的文件路径,对相关文件进行替换,也就是说,基于该第一目标文件对应的文件路径以及第二目标文件,将该第一目标文件对应的文件路径对应的第一目标文件替换为第二目标文件,进而实现对于镜像的更新。
图10为本发明实施例提供的一种替换公共层文件的过程示意图,现针对图10进行说明。
先修复基础系统镜像的漏洞,获得目标基础系统镜像,得到该目标基础镜像中的底层的所有文件,并确定该基础系统镜像中的底层的所有文件,基于该目标镜像中底层的所有文件以及基础系统镜像中底层的所有文件,得到待替换的文件压缩包,也就是说,在确定基础系统镜像以及目标基础镜像中不一致的第一目标文件,将该第一目标文件压缩在一个压缩包中,然后上传待替换文件的压缩包,也就是说,上传该第一目标文件的压缩包。搜索并确认镜像底层公共路径,对该公共层进行文件替换,也就是说,确定该第一目标文件的文件路径,基于该文件路径以及目标基础系统镜像中间第一目标文件替换后的第二目标文件,将镜像中的第一目标文件替换为第二目标文件。
实施例5:
图11为本发明实施例提供的一种镜像更新装置结构示意图,该镜像更新装置包括:
第一获取模块1101,用于获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
第二获取模块1102,用于获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中所述待更新的镜像共用一个基础系统镜像;
修复模块1103,用于发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
在一种可能的实施方式中,所述第一获取模块1101,具体用于获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
在一种可能的实施方式中,所述第二获取模块1102,具体用于根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;根据所述校验码标识信息,构建所述最底层的路径信息;查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
在一种可能的实施方式中,所述第二获取模块1102,具体用于根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
实施例6:
图12为本发明提供的一种电子设备结构示意图,在上述各实施例的基础上,本发明实施例还提供了一种电子设备,如图12所示,包括:处理器1201、通信接口1202、存储器1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互间的通信。
所述存储器1203中存储有计算机程序,当所述程序被所述处理器1201执行时,使得所述处理器1201执行如下步骤:
对基础系统镜像进行漏洞修复,获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中所述待更新的镜像共用一个基础系统镜像;
发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
在一种可能的实施方式中,所述确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件包括:
获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;
比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
在一种可能的实施方式中,所述获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径包括:
根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;
根据所述校验码标识信息,构建所述最底层的路径信息;
查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
在一种可能的实施方式中,所述根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息包括:
获取所述待更新的镜像的存储路径中第一预设文件中记录的所述待更新的镜像的标识信息;
根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;
根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
上述服务器提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述处理器可以是通用处理器,包括中央处理器、网络处理器(NetworkProcessor,NP)等;还可以是数字指令处理器(Digital Signal Processing,DSP)、专用集成电路、现场可编程门陈列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
实施例7:
在上述各实施例的基础上,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有可由电子设备执行的计算机程序,当所述程序在所述电子设备上运行时,使得所述电子设备执行时实现如下步骤:
所述存储器中存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行如下步骤:
对基础系统镜像进行漏洞修复,获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中所述待更新的镜像共用一个基础系统镜像;
发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
在一种可能的实施方式中,所述确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件包括:
获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;
比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
在一种可能的实施方式中,所述获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径包括:
根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;
根据所述校验码标识信息,构建所述最底层的路径信息;
查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
在一种可能的实施方式中,所述根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息包括:
获取所述待更新的镜像的存储路径中第一预设文件中记录的所述待更新的镜像的标识信息;
根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;
根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种镜像更新方法,其特征在于,所述方法包括:
对基础系统镜像进行漏洞修复,获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜像中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中所述待更新的镜像共用一个基础系统镜像;
发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
2.根据权利要求1所述的方法,其特征在于,所述确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件包括:
获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;
比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
3.根据权利要求1所述的方法,其特征在于,所述获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径包括:
根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;
根据所述校验码标识信息,构建所述最底层的路径信息;
查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
4.根据权利要求3所述的方法,其特征在于,所述根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息包括:
获取所述待更新的镜像的存储路径中第一预设文件中记录的所述待更新的镜像的标识信息;
根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;
根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
5.一种镜像更新装置,其特征在于,所述装置包括:
第一获取模块,用于获取目标基础系统镜像,确定所述基础系统镜像与所述目标基础系统镜中不一致的第一目标文件,以及所述目标基础系统镜像中对所述第一目标文件替换后的第二目标文件;
第二获取模块,用于获取待修复设备中待更新的镜像的基础系统镜像中记录的所述第一目标文件对应的文件路径,其中所述待修复设备中所述待更新的镜像共用一个基础系统镜像;
修复模块,用于发送所述文件路径及所述第二目标文件,以使所述待修复设备根据所述文件路径及所述第二目标文件对每个待更新的镜像进行修复。
6.根据权利要求5所述的装置,其特征在于,所述第一获取模块,具体用于获取所述基础系统镜像对应的第一压缩包及所述目标基础系统镜对应的第二压缩包;比较所述第一压缩包与所述第二压缩包中最底层包含的文件,识别不一致的第一目标文件。
7.根据权利要求5所述的装置,其特征在于,所述第二获取模块,具体用于根据所述待更新的镜像的存储路径中预设文件记录的信息,确定所述待更新的镜像的最底层的校验码标识信息;根据所述校验码标识信息,构建所述最底层的路径信息;查找所述最底层的路径信息中包含的索引标识信息,根据所述索引标识信息构建所述第一目标文件对应的文件路径。
8.根据权利要求7所述的装置,其特征在于,所述第二获取模块,具体用于获取所述待更新的镜像的存储路径中第一预设文件中记录的所述待更新的镜像的标识信息;根据所述标识信息,获取所述待更新的镜像的存储路径中第二预设文件中记录的元数据配置文件的路径;根据所述元数据配置文件的路径,查找所述元数据配置文件中记录的最底层的校验码标识信息。
9.一种电子设备,所述电子设备至少包括处理器和存储器,其特征在于,所述处理器用于执行存储器中存储的计算机程序时执行上述权利要求1-4中任一所述镜像更新的步骤。
10.一种计算机可读存储介质,其存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行上述权利要求1-4中任一所述镜像更新的步骤。
CN202110958811.2A 2021-08-20 2021-08-20 一种镜像的更新方法、装置、设备及介质 Pending CN113672349A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110958811.2A CN113672349A (zh) 2021-08-20 2021-08-20 一种镜像的更新方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110958811.2A CN113672349A (zh) 2021-08-20 2021-08-20 一种镜像的更新方法、装置、设备及介质

Publications (1)

Publication Number Publication Date
CN113672349A true CN113672349A (zh) 2021-11-19

Family

ID=78544232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110958811.2A Pending CN113672349A (zh) 2021-08-20 2021-08-20 一种镜像的更新方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN113672349A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114756333A (zh) * 2022-05-23 2022-07-15 龙芯中科技术股份有限公司 镜像处理方法、装置、电子设备及可读介质

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136013A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 软件升级方法和系统
CN105373410A (zh) * 2015-12-22 2016-03-02 京信通信技术(广州)有限公司 基站软件差分升级方法及其装置
CN106648766A (zh) * 2016-12-07 2017-05-10 京信通信系统(中国)有限公司 基于文件夹的补丁升级包生成及差分升级方法和装置
US20170149886A1 (en) * 2015-11-24 2017-05-25 Netapp Inc. Directory level incremental replication
CN107783776A (zh) * 2016-08-26 2018-03-09 阿里巴巴集团控股有限公司 固件升级包的处理方法及装置、电子设备
CN107992320A (zh) * 2017-12-11 2018-05-04 北京奇虎科技有限公司 一种修补漏洞的方法及装置
CN108170460A (zh) * 2017-12-15 2018-06-15 杭州中天微系统有限公司 一种嵌入式系统增量升级的方法及装置
CN108628632A (zh) * 2018-03-20 2018-10-09 车音智能科技有限公司 一种打包方法及装置
CN110413379A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 信息处理方法及其装置、系统、电子设备和介质
CN110704156A (zh) * 2019-08-16 2020-01-17 北京奇艺世纪科技有限公司 一种Docker镜像构建方法及装置
CN111324360A (zh) * 2020-01-09 2020-06-23 华中科技大学 一种面向边缘计算的容器镜像构建方法
CN111966388A (zh) * 2020-07-10 2020-11-20 福建升腾资讯有限公司 节省空间的镜像版本更新管理方法、装置、设备和介质
CN112015459A (zh) * 2020-10-14 2020-12-01 湖南新云网科技有限公司 一种镜像文件的升级方法、装置、终端及可读存储介质
CN113209633A (zh) * 2021-06-09 2021-08-06 腾讯科技(深圳)有限公司 镜像的处理方法、装置、电子设备及可读存储介质

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136013A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 软件升级方法和系统
US20170149886A1 (en) * 2015-11-24 2017-05-25 Netapp Inc. Directory level incremental replication
CN105373410A (zh) * 2015-12-22 2016-03-02 京信通信技术(广州)有限公司 基站软件差分升级方法及其装置
CN107783776A (zh) * 2016-08-26 2018-03-09 阿里巴巴集团控股有限公司 固件升级包的处理方法及装置、电子设备
CN106648766A (zh) * 2016-12-07 2017-05-10 京信通信系统(中国)有限公司 基于文件夹的补丁升级包生成及差分升级方法和装置
CN107992320A (zh) * 2017-12-11 2018-05-04 北京奇虎科技有限公司 一种修补漏洞的方法及装置
CN108170460A (zh) * 2017-12-15 2018-06-15 杭州中天微系统有限公司 一种嵌入式系统增量升级的方法及装置
CN108628632A (zh) * 2018-03-20 2018-10-09 车音智能科技有限公司 一种打包方法及装置
CN110413379A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 信息处理方法及其装置、系统、电子设备和介质
CN110704156A (zh) * 2019-08-16 2020-01-17 北京奇艺世纪科技有限公司 一种Docker镜像构建方法及装置
CN111324360A (zh) * 2020-01-09 2020-06-23 华中科技大学 一种面向边缘计算的容器镜像构建方法
CN111966388A (zh) * 2020-07-10 2020-11-20 福建升腾资讯有限公司 节省空间的镜像版本更新管理方法、装置、设备和介质
CN112015459A (zh) * 2020-10-14 2020-12-01 湖南新云网科技有限公司 一种镜像文件的升级方法、装置、终端及可读存储介质
CN113209633A (zh) * 2021-06-09 2021-08-06 腾讯科技(深圳)有限公司 镜像的处理方法、装置、电子设备及可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
李毅伦;宋虹;王大成;王建新;: "基于应用程序分层技术的镜像管理机制研究", 计算机应用与软件, no. 02, pages 29 - 36 *
边俊峰: "基于Docker的资源调度及应用容器集群管理系统设计与实现", 《中国优秀硕士学位论文电子期刊》, pages 78 - 81 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114756333A (zh) * 2022-05-23 2022-07-15 龙芯中科技术股份有限公司 镜像处理方法、装置、电子设备及可读介质

Similar Documents

Publication Publication Date Title
US20110320794A1 (en) Flash System And Method For Updating The Flash System
CN110162429B (zh) 系统修复方法、服务器及存储介质
US10795688B2 (en) System and method for performing an image-based update
CN108874678B (zh) 一种智能程序的自动测试方法及装置
CN113238924B (zh) 分布式图数据库系统中的混沌工程实现方法和系统
CN111782339A (zh) 一种容器创建方法、装置、电子设备及存储介质
CN111651304B (zh) 基于双芯智能电表的软件恢复方法、装置和计算机设备
CN109582332B (zh) 互联网摄像机的系统升级方法及装置
CN114860745B (zh) 基于人工智能的数据库扩展方法及相关设备
CN114691409A (zh) 内存故障处理方法及装置
CN115357262A (zh) 一种驱动器固件批量升级的方法
CN113672349A (zh) 一种镜像的更新方法、装置、设备及介质
CN114237754A (zh) 一种数据加载方法、装置、电子设备以及存储介质
CN111142922A (zh) 应用程序更新方法、装置、终端及服务器
CN111124294B (zh) 一种扇区映射信息的管理方法及装置、存储介质和设备
CN116775061A (zh) 微服务应用的部署方法、装置、设备及存储介质
CN117131014A (zh) 数据库迁移方法、装置、设备及存储介质
CN113961199A (zh) 一种模型部署系统、方法、装置及存储介质
CN114391136A (zh) 增强的虚拟机镜像管理系统
US11461131B2 (en) Hosting virtual machines on a secondary storage system
CN115757172A (zh) 测试执行方法、装置、存储介质及计算机设备
CN115576766A (zh) 闪存管理算法调试方法、系统、设备和可读存储介质
CN117472291B (zh) 数据块的校验方法和装置、存储介质及电子设备
CN111427620A (zh) 嵌入式系统的启动方法及装置
CN113656208B (zh) 分布式存储系统数据处理方法、装置、设备及存储介质

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