CN113209633B - 镜像的处理方法、装置、电子设备及可读存储介质 - Google Patents
镜像的处理方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN113209633B CN113209633B CN202110644168.6A CN202110644168A CN113209633B CN 113209633 B CN113209633 B CN 113209633B CN 202110644168 A CN202110644168 A CN 202110644168A CN 113209633 B CN113209633 B CN 113209633B
- Authority
- CN
- China
- Prior art keywords
- mirror image
- file
- layer
- mirror
- target
- 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.)
- Active
Links
Images
Classifications
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/70—Game security or game management aspects
- A63F13/77—Game security or game management aspects involving data related to game devices or game servers, e.g. configuration data, software version or amount of memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请实施例公开了一种镜像的处理方法、装置、电子设备及可读存储介质,涉及游戏、云技术以及区块链等领域。该方法包括:根据目标应用的应用标识,确定目标应用对应的初始镜像的基础镜像层的第一标识;基于应用标识和第一标识确定各待合并镜像层的存储路径,其中,各待合并镜像层是初始镜像中除基础镜像层之外的只读镜像层;基于各待合并镜像层的存储路径,获取各待合并镜像层的镜像数据;对各待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;根据基础镜像层的镜像数据和合并后的镜像数据,得到目标应用对应的目标镜像。采用本申请实施例提供的该方案,能够有效节省目标应用的镜像所占用的存储空间。
Description
技术领域
本申请涉及游戏、云技术以及区块链等领域,尤其涉及一种镜像的处理方法、装置、电子设备及可读存储介质。
背景技术
目前,随着互联网技术的发展以及应用需求的提升,网络资源及存储资源的利用率提升、以及资源管理等方面的要求也越来越高。在这种需求下,容器技术应运而生并得到了快速发展。
容器是操作系统虚拟化的一种类型,是基于镜像创建的,是镜像的实例化。目前,大部分应用的镜像都是基于基础镜像(base image)扩展而来的,比如,在云游戏场景下,基础镜像是指镜像中只包含基本的可运行操作系统的文件。例如,基础镜像对应的操作系统可以是安卓Android操作系统。但随着应用的不断更新,容器镜像所包含的镜像层的层数越来越多,使得容器镜像所占用的存储空间也越来越大,如何更好的实现镜像的压缩是本领域一直在研究的重要问题之一。
发明内容
本申请实施例提供了一种镜像的处理方法、装置、电子设备及可读存储介质,以减少镜像所占用的存储空间。
一方面,本申请实施例提供一种镜像的处理方法,该方法包括:
根据目标应用的应用标识,确定上述目标应用对应的初始镜像的基础镜像层的第一标识;
基于上述应用标识和上述第一标识确定各待合并镜像层的存储路径,其中,上述各待合并镜像层是上述初始镜像中除上述基础镜像层之外的只读镜像层;
基于各上述待合并镜像层的存储路径,获取各上述待合并镜像层的镜像数据;
对各上述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;
根据上述基础镜像层的镜像数据和上述合并后的镜像数据,得到上述目标应用对应的目标镜像。
一方面,本申请实施例提供了一种镜像的处理装置,该装置包括:
基础镜像层确定模块,用于根据目标应用的应用标识,确定上述目标应用对应的初始镜像的基础镜像层的第一标识;
存储路径确定模块,用于基于上述应用标识和上述第一标识确定各待合并镜像层的存储路径,其中,上述各待合并镜像层是上述初始镜像中除上述基础镜像层之外的只读镜像层;
镜像数据获取模块,用于基于各上述待合并镜像层的存储路径,获取各上述待合并镜像层的镜像数据;
镜像数据合并模块,用于对各上述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;
目标镜像确定模块,用于根据上述基础镜像层的镜像数据和上述合并后的镜像数据,得到上述目标应用对应的目标镜像。
在一种可选的实施例中,上述基础镜像层确定模块,具体用于:
根据上述目标应用的上述应用标识,获取上述初始镜像的各镜像层的镜像标识;
根据上述基础镜像层对应的关键字,从上述各镜像层的镜像标识中确定出上述基础镜像层的上述第一标识。
在一种可选的实施例中,上述存储路径确定模块,具体用于:
根据上述目标应用的应用标识,获取上述初始镜像的所有只读镜像层对应的第一存储路径;
根据上述第一标识,获取上述基础镜像层对应的第二存储路径;
将各上述第一存储路径中除上述第二存储路径之外的各存储路径,确定为各上述待合并镜像层的存储路径。
在一种可选的实施例中,上述镜像数据合并模块,具体用于:
创建目标目录;
按照指定方向,将各上述待合并镜像层的镜像数据逐层合并至上述目标目录,其中,上述指定方向是由基础镜像层指向待合并镜像层的方向。
在一种可选的实施例中,上述镜像数据合并模块,具体用于:
按照指定方向,从各上述待合并镜像层中的第一层镜像层开始,对各上述待合并镜像层的每一镜像层的镜像数据,依次执行以下操作:
确定当前镜像层的镜像数据中第一类型的各文件和第二类型的各文件,其中,上述第一类型的文件是上述当前镜像层相对于其父镜像层发生修改的文件或新增的文件,上述第二类型的文件是上述当前镜像层相对于其父镜像层被删除的文件;
对于每个第一文件,若上述目标目录中的各第二文件中不存在与该文件具有相同文件标识的文件,则将该文件存放至上述目标目录中,若上述目标目录的各第二文件中存在与该文件具有相同文件标识的目标文件,则基于该文件对上述目标文件进行更新;
其中,上述第一文件为第一类型的文件且上述第二文件为第二类型的文件,或者上述第一文件为第二类型的文件且上述第二文件为第一类型的文件。
在一种可选的实施例中,上述装置还包括处理模块,用于:
确定上述目标目录中包含的第二类型的各第三文件;
获取上述基础镜像层的存储路径,根据上述基础镜像层的存储路径获取上述基础镜像层的镜像数据;
对于每个所述第三文件,若所述基础镜像层的镜像数据中包含的各文件中不存在与该文件具有相同文件标识的文件,则将该文件从所述目标目录中删除。
在一种可选的实施例中,上述目标镜像确定模块,具体用于:
构建以上述基础镜像层的镜像数据为基础镜像层的容器;
将上述合并后的镜像数据拷贝至上述容器的读写层,得到上述目标应用对应的目标镜像。
在一种可选的实施例中,所述装置还包括镜像传输模块,该模块用于:
将所述目标镜像发送至所述目标应用对应的游戏运行服务器,以使所述游戏运行服务器基于所述目标镜像运行所述目标应用,其中,所述目标应用与所述游戏运行服务器中运行的其他云游戏应用共享所述基础镜像层。
一方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,该处理器和存储器相互连接;该存储器用于存储计算机程序;该处理器被配置用于在调用上述计算机程序时,执行上述镜像的处理方法的任一种可能的实现方式提供的方法。
一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上镜像的处理方法的任一种可能的实现方式提供的方法。
一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述镜像的处理方法的任一种可能的实现方式提供的方法。
本申请提供的技术方案带来的有益效果是:
本申请实施例所提供的镜像的处理方法、装置、电子设备及存储介质,基于本申请实施例所提供的方法能够实现对应用的镜像数据的压缩,减少镜像所占用的存储空间。具体的,该方法在进行镜像数据处理,会首先确定出目标应用对应的初始镜像中的基础镜像层的第一标识,并基于应用标识和第一标识确定出各待合并镜像层的存储路径,从而可以基于该各待合并镜像层的存储路径,获取到各待合并镜像层的镜像数据,实现对各待合并镜像层的镜像数据的合并,达到压缩镜像数据的目的。采用上述技术方案,由于在进行合并处理时,是对除基础镜像层之外的各只读镜像层的镜像数据进行的合并,在保留了基础镜像层的镜像数据的基础上,实现了镜像的压缩,从而在将对应的目标镜像部署到服务器时,该镜像能够与服务器上的其他应用的镜像共享相同的基础镜像。一方面,通过镜像数据的合并节省了容器镜像占用的存储空间,另一方面,在同一台服务器上该目标应用的目标镜像可以继续与其他应用的镜像共享相同的基础镜像,也不会增加额外的存储空间占用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种镜像的示意图;
图2是本申请实施例提供的一种镜像处理系统在一种应用场景下的结构示意图;
图3是本申请实施例提供的一种镜像的处理方法的流程示意图;
图4是本申请实施例提供的一种对镜像中的文件进行操作的原理示意图;
图5是本申请实施例提供的一种镜像数据的合并原理示意图;
图6是本申请实施例提供的一种更新游戏镜像的流程示意图;
图7是本发明实施例提供的一种游戏镜像的压缩方法的原理示意图;
图8是本发明实施例提供的一种多个游戏镜像共享相同的基础镜像的示意图;
图9是本申请实施例提供的一种镜像的处理装置的结构示意图;
图10是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中所涉及到的专业术语的解释如下:
1、容器镜像,容器镜像是指镜像中既包含了基本的可运行操作系统的文件,也包含了应用相关的数据,例如,以应用为游戏类应用为例,游戏类应用对应的容器镜像可以称为游戏镜像,游戏镜像中既包含了基本的可运行操作系统的文件,也包含了游戏相关的数据。
2、镜像是一种文件存储形式,将多个文件合并成一个镜像文件,便于分发和使用。镜像采用的是镜像分层的存储方式,一个镜像可由多个标记为只读的镜像层组成,当基于镜像创建容器时,需要在镜像的所有的只读层之上创建读写层对镜像文件的修改在读写层完成。本申请实施例中对于镜像所包含的只读层的数量不作限制,可以包含至少一层只读层。
为了便于理解,以下结合图1对镜像进行说明,容器的镜像在构建时是分层叠加的,每一层构建完成后就不再被修改,形成只读层(即只读的镜像层),对于镜像包含文件的修改只在最上层发生,形成读写层(也可以称为容器层)。如图1所示的镜像,其中包含了N+2个镜像层,分别为只读层0至只读层N和读写层N+1,读写层位于最上层,对于镜像的修改只发生在读写层N+1,其中,N为整数。镜像中的下层是上层的基础,上层和下层是一个相对概念,是基于创建镜像层的顺序而言的,如图1中所示的只读层0是只读层1的基础,只读层0和只读层1是只读层2的基础。
3、基础镜像,基础镜像是指镜像中只包含基本的可运行操作系统的文件。可理解,本申请实施例中对于基础镜像对应的操作系统具体是什么操作系统不作限定,可以为各种类型的操作系统,例如,基础镜像对应的操作系统可以是安卓Android操作系统。
4、主机,容器通常运行于通用操作系统(例如:Linux系统、Windows10系统或者MacOS系统等)之上,通用操作系统所在的机器称为主机,在通用操作系统之上的操作称为在主机上的操作。
5、容器管理工具,例如Linux操作系统中的docker命令,它参与管理容器各个生命周期,包括启动、销毁、保存、恢复、状态信息提供等各个方面。
6、父镜像层是一个相对概念,是指当前镜像层之前的任意一个镜像层,以图1中的镜像为例,假设当前镜像层为只读层N,只读层N的父镜像层是指只读层0-只读层N-1中的任意一个镜像层。
7、普通文件,即本申请实施例中的第一类型的文件,是指当前镜像层相对于其父镜像层发生修改的文件或新增的文件。
8、字符设备文件,即本申请实施例中的第二类型的文件,是指当前镜像层相对于其父镜像层被删除的文件。
本申请实施例提供的镜像的处理方法中所涉及的目标应用可以是云应用,包括但不限于云游戏。虚拟化技术是云应用的技术底座之一,云应用将原本在客户端的资源迁移到了云端,云端为了更灵活、更高效的管理应用的资源,需要在云应用运行环境实现从物理到虚拟的转变,而容器技术正是一种轻量级的虚拟化技术,适用于云应用中。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。本申请实施例所提供的镜像的处理方法可基于云技术中的云计算(cloud computing)实现。
云计算是指通过网络以按需、易扩展的方式获得所需资源,是网格计算(GridComputing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机和网络技术发展融合的产物。
云游戏(Cloud gaming)又可称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏场景下,游戏逻辑并不在玩家游戏终端,而是在云端服务器中运行,并由云端服务器将游戏场景渲染为视频音频流,通过网络传输给玩家游戏终端。玩家游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取玩家输入指令并发送给云端服务器的能力即可。
其中,如本申请所公开的镜像的处理方法或装置,其中涉及到的第一服务器、第二服务器、第三服务器、云端设备和用户终端可组成为一区块链,而第一服务器、第二服务器、第三服务器、云端设备和用户终端为区块链上的节点,本申请实施例中镜像的处理方法或装置中涉及到的数据,如目标镜像可保存于区块链上,例如,以云应用为云游戏为例,可以将该云游戏对应的游戏镜像等数据保存在区块链上。
本申请实施例对于本申请实施例中的镜像的处理方法的适用场景不作限定,可以适用于任何需要对应用的容器镜像进行压缩的场景中,比如,云游戏的更新场景。本申请实施例中对于该应用具体是什么应用不作限定,例如,该应用可以为云应用。其中,云应用可以为各种应用场景下的应用,包括但不限于云游戏、在线办公软件、云存储、电子邮件、地图导航、云音乐、云视频、减肥健身、理财软件、电子商务和搜索引擎等等,可以使用本申请实施例中的镜像的处理方法对云应用的容器镜像进行压缩。
为便于描述,在后文的一些实施例中将以对云游戏的游戏镜像进行压缩为例进行说明。为了更好的理解本申请实施例提供的镜像的处理方法,下面首先结合一个具体的应用场景对本申请的一种可选实施方案进行说明。
作为一个示例,图2中示出了本申请实施例所适用的一种云游戏应用的应用系统的结构示意图,可以理解的是,本申请实施例所提供的镜像的处理方法可以适用于但不限于应用于如图2所示的应用场景中。
如图2所示,该示例中的云游戏应用的应用系统可以包括但不限于第一服务器101、网络102、第二服务器103、第三服务器104和云端设备105至108。其中,第二服务器103中可以拉起至少一个云端设备(即云端实例),图2中示出了2个,即云端设备1(即图中标记为105的云端设备)和云端设备2(即图中标记为106的云端设备)。同理,第三服务器104可以拉起至少一个云端设备,图2中示出了2个,即云端设备3(即图中标记为107的云端设备)和云端设备4(即图中标记为108的云端设备)。
本申请实施例中,对第二服务器和第三服务器所能够拉起的云端设备的数量不作限定。其中,第一服务器101还可以称为镜像制作服务器,用于制作或压缩游戏镜像,还可以向第二服务器103和第三服务器104分发制作或压缩好的游戏镜像。第二服务器103和第三服务器104可以为云游戏服务器(可以简称为云服务器,或者云端服务器,或者边缘服务器),用于为用户提供云游戏服务。第一服务器101可以通过网络102与第二服务器103和第三服务器104通信。第二服务器103可以通过网络102和云端设备1、云端设备2通信。第三服务器104可以通过网络102和云端设备3、云端设备4通信。
以图2中所示的应用系统为例,可以通过执行本申请实施例所提供的方法对游戏镜像进行压缩,以减少游戏镜像所占用的存储空间,该应用场景下该方法可以由第一服务器101执行,该应用场景下的镜像的处理方法的具体交互过程可以包括步骤S1-S8:
步骤S1,在满足目标云游戏(即目标应用)对应的镜像压缩处理条件(比如需要进行云游戏更新,或者是接收到压缩处理指令,或者是预设周期进行镜像压缩处理)时,第一服务器101可以根据该云游戏的应用标识,确定该云游戏对应的初始镜像的基础镜像层的第一标识。
步骤S3,第一服务器101基于该云游戏的应用标识和基础镜像层的第一标识,确定各待合并镜像层的存储路径,其中,各待合并镜像层是初始镜像中除基础镜像层之外的只读镜像层。
步骤S4,第一服务器101基于各待合并镜像层的存储路径,获取各待合并镜像层的镜像数据。
步骤S5,第一服务器101对各待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;
步骤S6,第一服务器101根据基础镜像层的镜像数据和合并后的镜像数据,得到该云游戏对应的目标镜像(即该云游戏对应的更新后的游戏镜像)。
在一可选的示例中,上述云游戏应用的应用系统还可以包括第四服务器109,该第四服务器109可以通过网络102与第一服务器101通信,该第四服务器109还可以称为镜像存储服务器,用于存储第一服务器101制作或压缩游戏镜像。第四服务器109可以通过网络102与第二服务器103和第三服务器104通信,用于向第二服务器103和第三服务器104提供游戏镜像。
可选的,第一服务器101(即镜像制作服务器)可以将目标镜像存储至第四服务器109。
步骤S7,响应于游戏运行服务器的镜像获取指令,第一服务器101通过网络102将目标镜像发送至目标应用对应的游戏运行服务器,或者,第四服务器109通过网络102将目标镜像发送至目标应用对应的游戏运行服务器,以使游戏运行服务器基于目标镜像运行目标应用,其中,目标应用与游戏运行服务器中运行的其他云游戏应用共享基础镜像层。
其中,在实际应用中,第一服务器101在将该云游戏对应的目标镜像部署至其他服务器时,对于其他服务器的数量不作限定,示例性地,图2中示出了两个服务器,即第二服务器103和第三服务器104。第二服务器103和第三服务器104即为游戏运行服务器。
步骤S8,第二服务器103和/或第三服务器104根据用户需要拉起一个或多个云端设备运行该云游戏。
以第二服务器103为例,当有两个用户(记为用户1和用户2)通过用户终端(用户1对应于用户终端1,用户2对应于用户终端2)玩该云游戏时,可以在该第二服务器103上拉起两个云端设备(即创建两个云端实例/云端渲染设备),即云端设备1和云端设备2,将云游戏1对应的游戏镜像1拉取至该云端设备1,将云游戏2对应的游戏镜像2拉取至该云端设备2,通过这两个云端设备上创建的容器分别为这两个用户玩该云游戏提供游戏环境,即通过图1所示的云端设备1为用户1提供游戏服务,通过图1所示的云端设备2为用户2提供游戏服务。
可选的,以将云游戏1对应的游戏镜像1拉取至该云端设备1为例,在拉取云游戏1对应的游戏镜像1时,第二服务器103会根据该游戏镜像1的信息中得到该游戏镜像1各个镜像层的信息,如果发现部分镜像层已经存在于本机(即第二服务器103)中,则无需拉取已经存在于本机的镜像层,借用本机已有的镜像层,只拉取该游戏镜像1中不存在与本机的镜像层。
其中,云端设备是指在云服务器上,每款云游戏对应的云端设备。每一用户每一次使用都会对应一个云端实例。
在一可选的示例中,图2中所示的第二服务器103上的两个云端设备可以分别对应于两个不同的云游戏,这两个云游戏对应的游戏镜像中的基础镜像是相同的,例如,假设图2所示的云端设备1对应的云游戏为云游戏1,云端设备2对应的云游戏为云游戏2,云游戏1和云游戏2分别对应的游戏镜像共享同一个基础镜像。同样的,图2中所示的第三服务器104上的两个云端设备可以分别对应于两个不同的云游戏,这两个云游戏对应的游戏镜像中的基础镜像是相同的。例如,假设图2所示的云端设备3对应的云游戏为云游戏3,云端设备4对应的云游戏为云游戏4,其中,云游戏3和云游戏4分别对应的游戏镜像共享同一个基础镜像。
可理解,上述仅为一种示例,本申请实施例在此不作任何限定。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器或服务器集群。上述网络可以包括但不限于:有线网络,无线网络,其中,该有线网络包括:局域网、城域网和广域网,该无线网络包括:蓝牙、Wi-Fi及其他实现无线通信的网络。用户终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、笔记本电脑、数字广播接收器、MID(Mobile InternetDevices,移动互联网设备)、PDA(个人数字助理)、台式计算机、车载终端(例如车载导航终端)、智能音箱、智能手表等,用户终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,但并不局限于此。具体也可基于实际应用场景需求确定,在此不作限定。
参见图3,图3是本申请实施例提供的一种镜像的处理方法的流程示意图,该方法可以由服务器交互完成,如图3所示,本申请实施例提供的镜像的处理方法包括如下步骤:
步骤S301,根据目标应用的应用标识,确定上述目标应用对应的初始镜像的基础镜像层的第一标识。
可选的,本申请实施例对于目标应用具体是什么应用本申请实施例不作限定,可以为各种类型的应用,例如,该应用可以为云应用。可选的,以该目标应用为云游戏为例,该云游戏可以为角色扮演游戏(Role-playing Game,简称RPG)、动作游戏(Action Game,简称ACT)、第一人称射击游戏(First-person shooting game,简称FPS)、第三人称射击游戏(Third-Personal Shooting,简称TPS)、大型多人在线角色扮演(Massively MultiplayerOnline Role-Playing,MMORPG)、动作角色扮演类游戏(Action Role-playing Game,简称ARPG)、动漫游戏(Animation Cartoon Games,简称ACG)、多人在线战术竞技游戏(Multiplayer online battle arena,简称MOBO),等等,本申请实施例在此不作任何限定。
目标应用的应用标识是指能够用于唯一标识该应用的信息,可以包括但不限于该目标应用的应用名称,也可以是该目标应用对应的容器镜像的名称,通过该名称可以唯一的确定该目标应用的容器镜像。
假设目标应用的容器镜像(即初始镜像)是图1所示的镜像,该容器镜像在构建时是通过容器配置文件(如Dockerfile文件)来进行配置其中,Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。将构建容器镜像所需要的内容通过命令的方式填写在配置文件中,当利用容器管理工具(例如:Linux操作系统中的docker命令)来构建容器镜像时,容器管理工具会逐行读取命令,并针对每行带有特征字符(例如:RUN)的命令创建单独一层镜像层,所有命令执行完毕,容器镜像也就随之生成。
当需要修改容器镜像下层包含的文件或新增文件时,会直接在读写层生成同名普通文件(即具有相同文件标识的文件),如图4中所示的文件40。当需要删除容器镜像下层包含的文件时,是在读写层生成一个同名的字符设备文件,如图4中带“×”标记的文件41和42,字符设备文件代表下层文件中该文件的同名文件已经被删除。其中,此处的下层是指容器镜像的读写层之前的任意镜像层(即在读写层之前创建的各镜像层),以图1中的读写层N+1为例,下层可以是只读层0-只读层N中的任意一层。
当需要对目标应用的容器镜像进行压缩处理时,为了避免压缩后的容器镜像无法和其他应用的容器镜像共享同一个基础镜像,需要分析目标应用的初始镜像中包含的信息,找出基础镜像(即基础镜像层)的信息。本申请实施例中,可以通过该目标应用的应用标识,确定出该目标应用对应的初始镜像(可以称为初始容器镜像,即此次压缩处理前的容器镜像)的基础镜像层的第一标识。作为一种可选的示例,可以利用容器管理工具(例如,Linux操作系统中的docker命令),依据该应用标识确定该目标应用的全部的只读镜像层的镜像标识(如镜像名称),然后从全部的镜像标识中确定出属于基础镜像层的第一标识。其中,应用标识表征了该目标应用,可以为该目标应用的应用名称,如果该目标应用是游戏类应用,那么该应用标识即为该游戏类应用的游戏名称。基础镜像层对应的第一标识可以为能够表征基础镜像层的信息,实际应用中对于该第一标识的形式具体是什么不作限定,例如,该基础镜像层的第一标识可以由基础镜像对应的操作系统的类型标识和该基础镜像的编号组成。
步骤S302,基于上述应用标识和上述第一标识确定各待合并镜像层的存储路径,其中,上述各待合并镜像层是上述初始镜像中除上述基础镜像层之外的只读镜像层。
步骤S303,基于各上述待合并镜像层的存储路径,获取各上述待合并镜像层的镜像数据。
步骤S304,对各上述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据。
步骤S305,根据上述基础镜像层的镜像数据和上述合并后的镜像数据,得到上述目标应用对应的目标镜像。
在确定出基础镜像层的第一标识之后,为了实现对待合并镜像层的镜像数据的压缩,需要获取到各待合并镜像层的镜像数据。具体的,可以基于目标应用的初始镜像的应用标识和基础镜像层的第一标识,确定出各待合并镜像层的存储路径。
本申请实施例对于确定各待合并镜像层的存储路径的实现方式不作限定,以下是本申请实施例提供的几种可能的实现方式:
实现方式1,可以根据初始镜像的应用标识和基础镜像层的第一标识,确定出除了第一标识之外的各待合并镜像层的第二标识,然后根据第二标识查找出各待合并镜像层的存储路径。
实现方式2,上述基于上述应用标识和上述第一标识确定各待合并镜像层的存储路径,包括:
根据上述目标应用的应用标识,获取上述初始镜像的所有只读镜像层对应的第一存储路径;
根据上述第一标识,获取上述基础镜像层对应的第二存储路径;
将各上述第一存储路径中除上述第二存储路径之外的各存储路径,确定为各上述待合并镜像层的存储路径。
在一可选的示例中,可以利用容器管理工具(例如:Linux操作系统中的docker命令),依据该初始镜像的应用标识获取该初始镜像的全部的只读镜像层对应的第一存储路径,在一示例中,当通过判断得到特征字符串,例如“LowerDir”(只读镜像层)开头的字符串时,该字符串之后的路径信息即代表初始镜像各镜像层在主机上的第一存储路径(还可以称为第一存放路径)。
采用同样的方式,依据基础镜像层的第一标识,获取基础镜像层的第二存储路径。将第一存储路径和第二存储路径进行对比,找出两者之间的差异,将第一存储路径中除第二存储路径之外的各存储路径,确定为各待合并镜像层的存储路径。
例如,假设特征字符串“LowerDir”之后的第一存储路径为:存储路径1、存储路径2、存储路径3、存储路径4、存储路径5。假设第一标识之后的第二存储路径为:存储路径4、存储路径5。那么,第一存储路径和第二存储路径之间的差异即为存储路径1、存储路径2和存储路径3,此时,可以将存储路径1、存储路径2和存储路径3确定为待合并镜像层的存储路径。
在按照上述方式得到各待合并镜像层的存储路径之后,可以根据各待合并镜像层的存储路径,获取各待合并镜像层的镜像数据。例如,可以依据各待合并镜像层的存储路径,从主机上获取该各待合并镜像层的镜像数据。
然后,将各待合并镜像层的镜像数据进行合并,得到该各待合并镜像层的对应的合并后的镜像数据。依据基础镜像层的镜像数据和该各待合并镜像层的对应的合并后的镜像数据,得到目标应用对应的压缩后的目标镜像。
通过本申请实施例,能够实现对应用的镜像数据的压缩,减少镜像所占用的存储空间。具体的,在进行镜像数据处理,会首先确定出目标应用对应的初始镜像中的基础镜像层的第一标识,并基于应用标识和第一标识确定出各待合并镜像层的存储路径,从而可以基于该各待合并镜像层的存储路径,获取到各待合并镜像层的镜像数据,实现对各待合并镜像层的镜像数据的合并,达到压缩镜像数据的目的。采用上述技术方案,由于在进行合并处理时,是对除基础镜像层之外的各只读镜像层的镜像数据进行的合并,在保留了基础镜像层的镜像数据的基础上,实现了镜像的压缩,从而在将对应的目标镜像部署到服务器时,该镜像能够与服务器上的其他应用的镜像共享相同的基础镜像。一方面,通过镜像数据的合并节省了容器镜像占用的存储空间,另一方面,在同一台服务器上该目标应用的目标镜像可以继续与其他应用的镜像共享相同的基础镜像,也不会增加额外的存储空间占用。
在一种可选的实施例中,上述根据目标应用的应用标识,确定上述目标应用对应的初始镜像的基础镜像层的第一标识,包括:
根据上述目标应用的上述应用标识,获取上述初始镜像的各镜像层的镜像标识;
根据上述基础镜像层对应的关键字,从上述各镜像层的镜像标识中确定出上述基础镜像层的上述第一标识。
可选的,可以通过分析目标应用的初始镜像包含的信息,得到基础镜像层的第一标识。例如,可以利用容器管理工具(例如:Linux操作系统中的docker命令),依据目标应用的应用标识,获取目标应用的容器镜像的全部的只读镜像层对应的镜像标识(如镜像名称)。然后,依据基础镜像层对应的关键字,按照预定方向通过逐层遍历的方式,从获取到的全部的只读镜像层的镜像标识中,将第一次查找到的与该关键字相匹配的镜像标识确定为基础镜像层的第一标识。
其中,假设初始镜像的各只读镜像层是如图1所示的只读镜像层0至只读镜像层N,那么预定方向可以是由只读层N指向只读层0的方向。基础镜像层对应的关键字可以是该基础镜像层对应的操作系统的名称,例如,假设该基础镜像对应的操作系统为安卓Android系统,那么该关键字可以为android。在一示例中,以关键字为android进行查找,查找到的与该关键字相匹配的基础镜像层的第一标识可以为第一标识可以为android:20210119,其中,android表示Android系统,20210119表示该基础镜像的编号。
通过本申请实施例,可以依据目标应用的应用标识和基础镜像层对应的关键字,确定出基础镜像层对应的第一标识,方式简单灵活,提高了确定基础镜像层的第一标识的效率。
在一种可选的实施例中,上述对各上述待合并镜像层的镜像数据进行合并,包括:
创建目标目录;
按照指定方向,将各上述待合并镜像层的镜像数据逐层合并至上述目标目录,其中,上述指定方向是由基础镜像层指向待合并镜像层的方向。
可选的,为了合并各待合并镜像层的镜像数据,可以新建一个目标目录,用于存放合并后的各待合并镜像层对应的合并后的镜像数据。
按照指定方向,通过遍历的方式将该目标应用的初始镜像的各镜像层在主机上的数据目录对应的镜像数据,依次合并到目标目录中。其中,指定方向由基础镜像层指向待合并镜像层的方向。例如,假设初始镜像的各只读镜像层是如图1所示的只读镜像层0-只读镜像层N,那么该指定方向可以是由只读层0指向只读层N的方向。
其中,在初始镜像各镜像层的数据目录下,有两种类型的文件需要处理:普通文件(即第一类型的文件)和字符设备文件(即第二类型的文件),普通文件代表当前容器镜像所在层基于其父镜像层修改或新增的文件,字符设备文件代表当前容器镜像所在层基于其父镜像层被删除的文件。每层数据合并完成,目标目录下的文件内容代表当前状态下与基础镜像之间的差异数据;所有镜像层数据合并完成,目标目录下的文件内容代表游戏镜像与基础镜像之间的差异数据。每层数据合并完成,目标目录下包含两种类型的文件:普通文件和字符设备文件,普通文件代表当前状态下在基础镜像之上修改或新增的文件,字符设备文件代表当前状态下在基础镜像之上被删除的文件。
其中,父镜像层是一个相对概念,容器镜像在分层时是一层一层往上叠加的,父镜像层可以理解为当前镜像层之前的任意一个镜像层,假设初始镜像的各只读镜像层是如图1所示的只读镜像层0-只读镜像层N,以只读镜像层N为例,只读镜像层N的父镜像层即为只读镜像层0-只读镜像层N-1所在的任意一个镜像层。
以下详述如何将待合并镜像层的镜像数据逐层合并至上述目标目录。
在一种可选的实施例中,上述按照指定方向,将各上述待合并镜像层的镜像数据逐层合并至上述目标目录,包括:
按照指定方向,从各所述待合并镜像层中的第一层镜像层开始,对各上述待合并镜像层的每一镜像层的镜像数据,依次执行以下操作:
确定当前镜像层的镜像数据中第一类型的各文件和第二类型的各文件,其中,所述第一类型的文件是所述当前镜像层相对于其父镜像层发生修改的文件或新增的文件,所述第二类型的文件是所述当前镜像层相对于其父镜像层被删除的文件;
对于每个第一文件,若所述目标目录中的各第二文件中不存在与该文件具有相同文件标识的文件,则将该文件存放至所述目标目录中,若所述目标目录的各第二文件中存在与该文件具有相同文件标识的目标文件,则基于该文件对所述目标文件进行更新;
其中,所述第一文件为第一类型的文件且所述第二文件为第二类型的文件,或者所述第一文件为第二类型的文件且所述第二文件为第一类型的文件。
可选的,确定当前镜像层的镜像数据中的第一类型的各文件和第二类型的各文件,其中,第一类型的文件是当前镜像层相对于其父镜像层中发生修改的文件或新增的文件,第二类型的文件是当前镜像层相对于其父镜像层被删除的文件;
对于每个第一类型的文件,若目标目录中不存在与该文件具有相同文件标识的第二类型的文件,则将该文件存放至目标目录;若目标目录中存在与该文件的具有相同文件标识的第二类型的第一文件,则基于该文件对第一文件进行更新;
对于每个第二类型的文件,若目标目录中不存在与该文件具有相同文件标识的第一类型的文件,则将该文件存放至目标目录;若目标目录中存在与该文件具有相同文件标识的第一类型的第二文件,则基于该文件对第二文件进行更新。
可选的,以目标应用为云游戏为例,如图5所示,该云游戏的初始游戏镜像所包含的各镜像层为层0至层N+M+1所在的镜像层,其中,图5所示的示例中的N为大于或等于0的整数,M为大于或等于0的整数。在实际应用中,对于游戏镜像所包含的镜像层的数量不作限制,游戏镜像可以包含至少一层镜像层。如图5所示,该云游戏的基础镜像的基础镜像层为图中所示的层0至层N所在的镜像层,该云游戏的游戏数据所在的各镜像层为层N+1至层N+M+1所在的镜像层。对于每一层游戏数据所在的镜像层,该镜像层包含普通文件和字符设备文件。为便于描述,云游戏的初始游戏镜像所包含的各镜像层的镜像数据在主机上的目录记为数据目录,以下详述将游戏数据所在的各镜像层(即层N+1-层N+M+1所在的镜像层)的镜像数据依次合并至目标目录的过程:
先将数据目录中的层N+1的镜像数据拷贝至目标目录。由于某些操作系统上的拷贝命令(例如:Linux操作系统中的cp命令)对于字符设备文件的操作有特殊限制,不能直接进行拷贝操作,对于游戏镜像各层对应的数据目录中的不同类型的文件需要做不同处理:
对于该层N+1的镜像数据中的各文件,需要依次将各文件存放至目标目录,对于每个文件,先判断该文件是普通文件(即第一类型的文件)还是字符设备文件(即第二类型的文件)。对于该层N+1的镜像数据中的普通文件,可以直接将该层N+1的普通文件拷贝至目标目录。对于该层N+1的镜像数据中的字符设备文件,如果操作系统上的拷贝命令对字符设备文件没有限制,可以直接将该该层N+1中的字符设备文件存放至目标目录。如果操作系统上的拷贝命令对字符设备文件有限制,可以在目标目录中创建与该层N+1的字符设备文件同名的字符设备文件。
然后,将数据目录中层N+2的镜像数据拷贝至目标目录。
对于该数据目录中层N+2的镜像数据中的各文件,需要依次将各文件存放至目标目录,对于每个文件,先判断该文件是普通文件(即第一类型的文件)还是字符设备文件(即第二类型的文件)。
对于该数据目录的层N+2的镜像数据中的普通文件,需要先确定目标目录中是否存与该层N+2中的普通文件具有相同文件标识(即相同文件名称)的字符设备文件,如果不存在,可以直接将该该层N+2中的普通文件存放至目标目录。
如果存在与该层N+2中的普通文件具有相同文件标识的字符设备文件(记为第一文件),需要依据该层N+2中的普通文件对该第一文件进行更新。以下是本申请实施例提供的几种可能的更新方式:
方式1:可以将目标目录中的该第一文件进行删除,并将层N+2中的普通文件拷贝至目标目录。
方式2:可以将层N+2中的普通文件替换掉目标目录中的第一文件。
方式3:可以将层N+2中的普通文件覆盖掉目标目录中的第一文件。
可理解,以上仅为几种示例性的方式,本实施对于具体的更新方式不作限定。
对于该数据目录的层N+2的镜像数据中的字符设备文件,需要先确定目标目录中是否存与该数据目录的层N+2中的字符设备文件具有相同文件标识(即相同文件名称)的普通文件,如果不存在,并且操作系统上的拷贝命令对字符设备文件没有限制,可以直接将该该层N+2中的字符设备文件存放至目标目录。如果不存在,并且操作系统上的拷贝命令对字符设备文件有限制,可以在目标目录中创建与该层N+2的字符设备文件同名的字符设备文件。
如果存在与该层N+2中的字符设备文件具有相同文件标识的普通文件(记为第二文件),需要依据该层N+2中的字符设备文件对该第二文件进行更新。以下是本申请实施例提供的几种可能的更新方式:
对于操作系统上的拷贝命令对字符设备文件没有限制的操作系统,可以按照以下方式更新目标目录:
方式1:可以将目标目录中的该第二文件进行删除,并将该层N+2的字符设备文件拷贝至目标目录。
方式2:可以将层N+2中的字符设备文件替换掉目标目录中的第二文件。
方式3:可以将层N+2中的字符设备文件覆盖掉目标目录中的第二文件。
对于操作系统上的拷贝命令对字符设备文件没有限制的操作系统,可以按照以下方式更新目标目录:
可以将目标目录中的该第二文件进行删除,并在目标目录中创建与该层N+2的字符设备文件同名的字符设备文件。
可理解,以上仅为几种示例性的方式,本实施对于具体的更新方式不作限定。
同理,按照上述对N+2层的镜像数据的处理方式,依次将各待合并镜像层的镜像数据从数据目录合并至目标目录,直至将待合并镜像层的最后一层镜像层(即图5所示的层N+M+1)的镜像数据合并至目标目录,如图5所示,示出了按照上述方式将数据目录中的层N+M+1的镜像数据合并至目标目录的过程。
通过本申请实施例,可以按照依次遍历的方式,将各待合并镜像层的镜像数据依次合并至目标目录,在合并过程中,由于更新了与第二类型的文件具有相同文件标识的第一类型的文件,达到了释放各镜像层中已经被标记为删除的文件所占据的存储空间,从而达到了减小游戏镜像整体大小的目的,节省了存储空间的占用。
在一种可选的实施例中,在上述将各上述待合并镜像层的镜像数据逐层合并至上述目标目录之后,上述方法还包括:
确定上述目标目录中包含的第二类型的各第三文件;
获取上述基础镜像层的存储路径,根据上述基础镜像层的存储路径获取上述基础镜像层的镜像数据;
对于每个上述第三文件,若上述基础镜像层的镜像数据中包含的各文件中不存在与该文件具有相同文件标识的文件,则将该文件从上述目标目录中删除。
可选的,当按照上述方式将各待合并镜像层所有的镜像层遍历完毕,也是就所有的拷贝操作执行完毕,目标目录下的文件内容代表目标应用的容器镜像与基础镜像之间的差异数据,若该目标应用为云游戏,目标目录下的文件内容代表游戏镜像与基础镜像之间的差异数据。
对于目标目录下的文件,还有一种情况需要特殊处理:字符设备文件,该字符设备文件代表该字符设备文件所在的镜像层与其父镜像层相比,该字符设备文件所标记的文件(记为标记文件)已经被删除,但是在基础镜像中,该标记文件也许并不存在,该标记文件只是存在于基础镜像所在层之上的某一层中,因此需要查询该标记文件在基础镜像中的状态。其中,当该标记文件存在于基础镜像所在层之上的某一层中时,该标记文件的所在层是指除了基础镜像层之外的、字符设备文件所在层的父镜像层。
可以确定出目标目录中包含的第二类型的各第三文件(即确定目标目录中的各字符设备文件),然后,对于每个第三文件,若基础镜像层的镜像数据中包含的各文件中不存在与该第三文件具有相同文件标识的文件,则将该第三文件从上述目标目录中删除。
在一示例中,可以利用容器管理工具(例如:Linux操作系统中的docker命令),获取目标目录中与各字符设备文件同名的文件在基础镜像中的状态。对于目标目录中的每一个字符设备文件(即第三文件),可以利用基础镜像的名称,以及待查询文件的名称(即待查询的字符设备文件)进行查询,依据返回值的数值确定基础镜像中是否有与字符设备文件同名的文件。例如,若返回值为1代表基础镜像中存在与该字符设备文件同名的文件,需要在目标目录中保留该字符设备文件。若返回值为0代表基础镜像中不存在与该字符设备文件同名的文件,需要将对应的同名的字符设备文件从目标目录中删除。可理解,上述仅为一种示例,本申请实施例在此不作限定。
通过本申请实施例,对于目标目录中的字符设备文件,如果基础镜像中不存在与该字符设备文件具有相同文件标识的普通文件,可以将该字符设备文件从目标目录中删除,进一步减少目标应用的容器镜像的大小,减少了容器镜像对存储空间的占用。
以目标应用为云游戏为例,按照上述方式,确定出了游戏镜像与基础镜像之间的差异数据(即合并后的镜像数据),下一步可以基于该差异数据与基础镜像对应的镜像数据生成新的游戏镜像。
在一种可选的实施例中,上述根据上述基础镜像层的镜像数据和上述合并后的镜像数据,得到上述目标应用对应的目标镜像,包括:
构建以上述基础镜像层的镜像数据为基础镜像层的容器;
将上述合并后的镜像数据拷贝至上述容器的读写层,得到上述目标应用对应的目标镜像。
可选的,构建一个以基础镜像层为基础的容器,然后将合并后的镜像数据拷贝至该容器的读写层,得到目标应用对应的目标镜像。
在一示例中,可以构建一个以基础镜像层为基础的容器,利用容器管理工具(例如:Linux操作系统中的docker命令)获取该容器读写层在主机上对应的目录。例如,可以依据该目标应用对应的应用标识(即游戏镜像的名称)和构建生成的容器的标签(可以称为容器标识)进行查询,获取该容器读写层在主机上对应的目录。举例说明,当判断得到特征字符串,例如“UpperDir”(读写层)开头的字符串,字符串之后的路径信息代表当前构建的生成容器的读写层在主机上的存放路径。
然后,将合并生成的数据(即合并后的镜像数据)拷贝至构建生成的容器的读写层所在的主机目录下。此时,可以将构建生成的容器的读写层作为一个新的数据目录、将构建生成的容器的读写层当作一个新的目标目录进行拷贝操作,该过程中对普通文件和字符设备文件的处理,与前文中将数据目录中的普通文件和字符设备文件拷贝至上述目标目录的处理过程的原理是一致的,在此不再详述。
在按照上述过程将合并生成的数据(即合并后的镜像数据)拷贝至构建生成容器的读写层所在的主机目录下之后,可以利用容器管理工具(例如:Linux操作系统中的docker命令)、并依据目标应用对应的应用标识(即游戏镜像的名称)和构建生成的容器的标签(即容器标识)生成新的游戏镜像(即目标镜像)。
可选的,还可以利用容器管理工具(例如:Linux操作系统中的docker命令)查看新的游戏镜像,可以看到该游戏镜像上一层就是基础镜像,此时,对目标应用的初始镜像的压缩操作完成。
现有技术中,为了减少游戏镜像所占用的存储空间,现有的游戏镜像更新模式下,每次游戏更新都会在原游戏镜像的基础上构建新的读写层,在该读写层中写入新的游戏数据并最终生成新的游戏镜像。随着更新次数的增多,游戏镜像所包含的层数也越来越多,游戏镜像占用的存储空间也越来越大,通过网络传输并部署到其他服务器上所花费的时间也会越来越长。对于云游戏场景来说,随着游戏数量的增多,占用的空间和花费的时间呈倍数增加。
为了解决上述问题,以下结合一具体实施例对本申请实施例中的镜像的处理方法进行详细说明。以下示例中,以目标应用为云游戏为例进行说明,具体过程如下:
步骤S61,构建云游戏的原始的游戏镜像,并根据实际需要更新游戏镜像。具体实现过程如图6所示:
步骤S611,生成基础镜像:根据镜像配置文件(例如:Dockerfile文件)生成基础镜像,该基础镜像包含适用于云游戏场景的操作系统(例如Android、例如Linux)文件。
步骤S612,安装游戏:加载基础镜像构建容器,在容器中安装游戏并生成游戏镜像,将生成的该云游戏的原始的游戏镜像部署至多个服务器以供用户后续使用。
步骤S613,更新游戏:加载游戏镜像构建容器,更新游戏数据并生成新的游戏镜像,该新的游戏镜像会被部署到多个机房中的多台服务器供后续使用。
可选的,还可以根据实际需要继续更新游戏,生成新的游戏镜像。
其中,构建生成的该云游戏的原始的游戏镜像如图1所示。
其中,在构建该云游戏的原始的游戏镜像时,可选的,可以采用事前压缩的方式对该云游戏的原始的游戏镜像进行压缩。例如,可以采取减少镜像层数的方式进行镜像压缩,容器管理工具(例如:Linux操作系统中的docker命令)会逐行读取命令,并针对每行带有特征字符(例如:RUN)的命令创建单独一层,可以通过减少配置文件(例如:Dockerfile文件)相应的命令,合并多行命令为一行命令的方式,达到压缩镜像层数的目的。可选的,还可以通过使用更小的基础镜像甚至空镜像等减少基础镜像占用的存储空间。
步骤S62,在对云游戏的游戏镜像进行更新时,若云游戏的游戏镜像占用的存储空间过大,可以对云游戏的游戏镜像进行压缩。可以通过分析云游戏的初始游戏镜像(即初始镜像,可以称为更新前的游戏镜像,可以理解为对该云游戏的游戏镜像进行更新前的镜像)包含的信息,得到基础镜像层的第一标识。
可以利用容器管理工具(例如:Linux操作系统中的docker命令),依据云游戏的游戏标识(即游戏名称),获取云游戏的初始游戏镜像的全部的只读镜像层对应的镜像标识(如镜像名称)。然后,依据基础镜像层对应的关键字,按照预定方向通过逐层遍历的方式,从获取到的全部的只读镜像层的镜像标识中,将第一次查找到的与该关键字相匹配的镜像标识确定为基础镜像层的第一标识。
其中,假设初始游戏镜像的各只读镜像层是如图5所示的层0至层N+M+1,那么预定方向可以是由层N+M+1指向层0的方向。基础镜像层对应的关键字可以是该基础镜像层对应的操作系统的名称,例如,假设该基础镜像对应的操作系统为安卓Android系统,那么该关键字可以为android。在一示例中,以关键字为android进行查找,查找到的与该关键字相匹配的基础镜像层的第一标识可以为第一标识可以为android:20210119,其中,android表示Android系统,20210119表示该基础镜像的编号。
步骤S63,从该云游戏的初始游戏镜像的基础镜像之上的第一层(即层N+1)开始,逐层遍历,合并各待合并镜像层(即图5所示的层N+1至层N+M+1)的镜像数据,包括修改、新增和被删除的数据。
可选的,可以创建目标目录,并按照指定方向,将各待合并镜像层的镜像数据逐层合并至该目标目录,其中,该指定方向是由基础镜像层指向待合并镜像层的方向(即如图5所示的由层0指向层N+M+1的方向)。
可以基于云游戏的游戏标识和基础镜像层的第一标识确定各待合并镜像层的存储路径,然后基于各待合并镜像层的存储路径,获取各待合并镜像层的镜像数据,然后对各待合并镜像层的镜像数据进行合并,得到合并后的镜像数据。详细过程可参考前文描述,在此不再赘述。
步骤64,根据云游戏的基础镜像层的镜像数据和合并后的镜像数据,得到云游戏对应的目标镜像(即最新的游戏镜像)。
其中,对于步骤64的详细实现过程,可参考前文描述,在此不再赘述。
按照步骤61至步骤64的过程,可以得到如图7所示的云游戏的最新的游戏镜像。可以看出,图7所示该云游戏的最新的游戏镜像保留了基础镜像层(即图7中所示的层0至层N),合并后的待合并镜像层(即图7中所示的层N+1)在基础镜像层之上。
在一示例中,假设云游戏的初始游戏镜像的游戏名称为“prod_com.tencent.tmgp.sgamece:1617271607”,该初始游戏镜像在未压缩前所占用的存储空间为34091285894字节,通过压缩游戏镜像,生成新的游戏镜像,新的游戏镜像的游戏名称为“prod_com.tencent.tmgp.sgamece:1617272044”,该新的游戏镜像所占用空间压缩到16676526446字节。可以看出,16676526446字节远小于34091285894字节,即按照本申请实施例的镜像的处理方法,极大的减少了新的游戏镜像所占用的存储空间。
可选的,在云游戏场景中,可以按照上述方式对多个不同的游戏镜像进行压缩,其中,多个游戏镜像是构建于同一个基础镜像上的,当部署多个游戏镜像到同一台服务器上时,由于这多个游戏镜像共享了基础镜像,各个游戏镜像不需要每个都占用一份基础镜像所对应的存储空间,只需要共享占用一份基础镜像对应的存储空间即可。如图8所示,假设按照本申请实施例的镜像的处理方法对游戏1、游戏2和游戏3分别对应的初始镜像进行了压缩,得到了如图8所示游戏镜像1、游戏镜像2和游戏镜像3,可以看出,所得到的游戏镜像1、游戏镜像2和游戏镜像3是共享同一个基础镜像的,极大地节省了存储空间的占用。
通过本申请实施例,通过解析游戏镜像的各个只读镜像层,找到游戏镜像包含的基础镜像,合并基础镜像之上的各个镜像层(即待合并镜像层)中的镜像数据,达到压缩游戏镜像的目的。进行镜像压缩之后,由于保留了基础镜像所在的镜像层,当部署新的游戏镜像到多个服务器时,能够继续与服务器上的其他游戏镜像共享相同基础镜像所占用的存储空间。通过压缩游戏镜像,一方面节省了占用的存储空间,降低了云游戏成本,另一方面,同一台服务器上继续共享相同的基础镜像,并不会增加额外的存储空间占用,同时由于镜像体积的减少,降低了游戏镜像部署到各个服务器的时间,间接改善了用户体验。
基于与本申请实施例所提供的方法相同的原理,本申请实施例还提供了一种镜像的处理装置,参见图9,该镜像的处理装置1包括:
基础镜像层确定模块11,用于根据目标应用的应用标识,确定上述目标应用对应的初始镜像的基础镜像层的第一标识;
存储路径确定模块12,用于基于上述应用标识和上述第一标识确定各待合并镜像层的存储路径,其中,上述各待合并镜像层是上述初始镜像中除上述基础镜像层之外的只读镜像层;
镜像数据获取模块13,用于基于各上述待合并镜像层的存储路径,获取各上述待合并镜像层的镜像数据;
镜像数据合并模块14,用于对各上述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;
目标镜像确定模块15,用于根据上述基础镜像层的镜像数据和上述合并后的镜像数据,得到上述目标应用对应的目标镜像。
在一种可选的实施例中,上述基础镜像层确定模块,具体用于:
根据上述目标应用的上述应用标识,获取上述初始镜像的各镜像层的镜像标识;
根据上述基础镜像层对应的关键字,从上述各镜像层的镜像标识中确定出上述基础镜像层的上述第一标识。
在一种可选的实施例中,上述存储路径确定模块,具体用于:
根据上述目标应用的应用标识,获取上述初始镜像的所有只读镜像层对应的第一存储路径;
根据上述第一标识,获取上述基础镜像层对应的第二存储路径;
将各上述第一存储路径中除上述第二存储路径之外的各存储路径,确定为各上述待合并镜像层的存储路径。
在一种可选的实施例中,上述镜像数据合并模块,具体用于:
创建目标目录;
按照指定方向,将各上述待合并镜像层的镜像数据逐层合并至上述目标目录,其中,上述指定方向是由基础镜像层指向待合并镜像层的方向。
在一种可选的实施例中,上述镜像数据合并模块,具体用于:
按照指定方向,从各上述待合并镜像层中的第一层镜像层开始,对各上述待合并镜像层的每一镜像层的镜像数据,依次执行以下操作:
确定当前镜像层的镜像数据中第一类型的各文件和第二类型的各文件,其中,上述第一类型的文件是上述当前镜像层相对于其父镜像层发生修改的文件或新增的文件,上述第二类型的文件是上述当前镜像层相对于其父镜像层被删除的文件;
对于每个第一文件,若上述目标目录中的各第二文件中不存在与该文件具有相同文件标识的文件,则将该文件存放至上述目标目录中,若上述目标目录的各第二文件中存在与该文件具有相同文件标识的目标文件,则基于该文件对上述目标文件进行更新;
其中,上述第一文件为第一类型的文件且上述第二文件为第二类型的文件,或者上述第一文件为第二类型的文件且上述第二文件为第一类型的文件。
在一种可选的实施例中,上述装置还包括处理模块,用于:
确定上述目标目录中包含的第二类型的各第三文件;
获取上述基础镜像层的存储路径,根据上述基础镜像层的存储路径获取上述基础镜像层的镜像数据;
确定上述基础镜像层的镜像数据中包含的第一类型的各第四文件;
对于每个所述第三文件,若基础镜像层的镜像数据中包含的各文件中不存在与该文件具有相同文件标识的文件,则将该文件从所述目标目录中删除。
在一种可选的实施例中,上述目标镜像确定模块,具体用于:
构建以上述基础镜像层的镜像数据为基础镜像层的容器;
将上述合并后的镜像数据拷贝至上述容器的读写层,得到上述目标应用对应的目标镜像。
通过本申请实施例,能够实现对应用的镜像数据的压缩,减少镜像所占用的存储空间。具体的,在进行镜像数据处理,会首先确定出目标应用对应的初始镜像中的基础镜像层的第一标识,并基于应用标识和第一标识确定出各待合并镜像层的存储路径,从而可以基于该各待合并镜像层的存储路径,获取到各待合并镜像层的镜像数据,实现对各待合并镜像层的镜像数据的合并,达到压缩镜像数据的目的。采用上述技术方案,由于在进行合并处理时,是对除基础镜像层之外的各只读镜像层的镜像数据进行的合并,在保留了基础镜像层的镜像数据的基础上,实现了镜像的压缩,从而在将对应的目标镜像部署到服务器时,该镜像能够与服务器上的其他应用的镜像共享相同的基础镜像。一方面,通过镜像数据的合并节省了容器镜像占用的存储空间,另一方面,在同一台服务器上该目标应用的目标镜像可以继续与其他应用的镜像共享相同的基础镜像,也不会增加额外的存储空间占用。
具体实现中,上述镜像的处理装置1可通过其内置的各个功能模块执行如上述图3中各个步骤所提供的实现方式,体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上文主要介绍说明了执行主体为硬件,来实施本申请中的镜像的处理方法,但是本申请的镜像的处理方法的执行主体并不仅限于硬件,本申请中的镜像的处理方法的执行主体还可以为软件,上述镜像的处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如,该镜像的处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。
在一些实施例中,本申请实施例提供的镜像的处理装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的镜像的处理装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的镜像的处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application SpecificIntegrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在另一些实施例中,本申请实施例提供的镜像的处理装置可以采用软件方式实现,图9示出的镜像的处理装置1,其可以是程序和插件等形式的软件,并包括一系列的模块,包括基础镜像层确定模块11、存储路径确定模块12、镜像数据获取模块13、镜像数据合并模块14和目标镜像确定模块15,用于实现本申请实施例提供的镜像的处理方法。
参见图10,图10是本申请实施例提供的一种电子设备的结构示意图。如图10所示,本实施例中的电子设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述电子设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选的,用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的电子设备1000中,网络接口1004可提供网络通讯功能;用户接口1003主要用于为用户提供输入的接口;处理器1001可以用于调用存储器1005中存储的计算机程序。
应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述电子设备1000可通过其内置的各个功能模块执行如上述图3中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图3中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的任务处理装置的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(randomaccess memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述图3中任一种可能的实施方式所提供的方法。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (9)
1.一种镜像的处理方法,其特征在于,包括:
根据目标应用的应用标识,确定所述目标应用对应的初始镜像的基础镜像层的第一标识;所述基础镜像层为所述目标应用的容器镜像中与其他应用的容器镜像待共享的镜像;
基于所述应用标识和所述第一标识确定各待合并镜像层的存储路径,其中,所述各待合并镜像层是所述初始镜像中除所述基础镜像层之外的只读镜像层;
基于各所述待合并镜像层的存储路径,获取各所述待合并镜像层的镜像数据;
对各所述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;
根据所述基础镜像层的镜像数据和所述合并后的镜像数据,得到所述目标应用对应的目标镜像;
其中,对各所述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据,包括:
创建目标目录;
按照指定方向,所述指定方向是由基础镜像层指向待合并镜像层的方向,从各所述待合并镜像层中的第一层镜像层开始,对各所述待合并镜像层的每一镜像层的镜像数据,依次执行以下操作:
确定当前镜像层的镜像数据中第一类型的各文件和第二类型的各文件,其中,所述第一类型的文件是所述当前镜像层相对于其父镜像层发生修改的文件或新增的文件,所述第二类型的文件是所述当前镜像层相对于其父镜像层被删除的文件;
对于每个第一文件,若所述目标目录中的各第二文件中不存在与该文件具有相同文件标识的文件,则将该文件存放至所述目标目录中,若所述目标目录的各第二文件中存在与该文件具有相同文件标识的目标文件,则基于该文件对所述目标文件进行更新;
所述第一文件为第一类型的文件且所述第二文件为第二类型的文件,或者所述第一文件为第二类型的文件且所述第二文件为第一类型的文件。
2.根据权利要求1所述的方法,其特征在于,所述根据目标应用的应用标识,确定所述目标应用对应的初始镜像的基础镜像层的第一标识,包括:
根据所述目标应用的应用标识,获取所述初始镜像的各镜像层的镜像标识;
根据所述基础镜像层对应的关键字,从所述各镜像层的镜像标识中确定出所述基础镜像层的所述第一标识。
3.根据权利要求1所述的方法,其特征在于,所述基于所述应用标识和所述第一标识确定各待合并镜像层的存储路径,包括:
根据所述目标应用的应用标识,获取所述初始镜像的所有只读镜像层对应的第一存储路径;
根据所述第一标识,获取所述基础镜像层对应的第二存储路径;
将各所述第一存储路径中除所述第二存储路径之外的各存储路径,确定为各所述待合并镜像层的存储路径。
4.根据权利要求1所述的方法,其特征在于,在将各所述待合并镜像层的镜像数据逐层合并至所述目标目录之后,所述方法还包括:
确定所述目标目录中包含的第二类型的各第三文件;
获取所述基础镜像层的存储路径,根据所述基础镜像层的存储路径获取所述基础镜像层的镜像数据;
对于每个所述第三文件,若所述基础镜像层的镜像数据中包含的各文件中不存在与该文件具有相同文件标识的文件,则将该文件从所述目标目录中删除。
5.根据权利要求1至4任一项中所述的方法,其特征在于,所述根据所述基础镜像层的镜像数据和所述合并后的镜像数据,得到所述目标应用对应的目标镜像,包括:
构建以所述基础镜像层的镜像数据为基础镜像层的容器;
将所述合并后的镜像数据拷贝至所述容器的读写层,得到所述目标应用对应的目标镜像。
6.根据权利要求5所述的方法,其特征在于,所述目标应用为云游戏应用,所述方法还包括:
将所述目标镜像发送至所述目标应用对应的游戏运行服务器,以使所述游戏运行服务器基于所述目标镜像运行所述目标应用,其中,所述目标应用与所述游戏运行服务器中运行的其他云游戏应用共享所述基础镜像层。
7.一种镜像的处理装置,其特征在于,包括:
基础镜像层确定模块,用于根据目标应用的应用标识,确定所述目标应用对应的初始镜像的基础镜像层的第一标识;所述基础镜像层为所述目标应用的容器镜像中与其他应用的容器镜像待共享的镜像;
存储路径确定模块,用于基于所述应用标识和所述第一标识确定各待合并镜像层的存储路径,其中,所述各待合并镜像层是所述初始镜像中除所述基础镜像层之外的只读镜像层;
镜像数据获取模块,用于基于各所述待合并镜像层的存储路径,获取各所述待合并镜像层的镜像数据;
镜像数据合并模块,用于对各所述待合并镜像层的镜像数据进行合并,得到合并后的镜像数据;
目标镜像确定模块,用于根据所述基础镜像层的镜像数据和所述合并后的镜像数据,得到所述目标应用对应的目标镜像;
其中,所述镜像数据合并模块具体用于:
创建目标目录;
按照指定方向,所述指定方向是由基础镜像层指向待合并镜像层的方向,从各所述待合并镜像层中的第一层镜像层开始,对各所述待合并镜像层的每一镜像层的镜像数据,依次执行以下操作:
确定当前镜像层的镜像数据中第一类型的各文件和第二类型的各文件,其中,所述第一类型的文件是所述当前镜像层相对于其父镜像层发生修改的文件或新增的文件,所述第二类型的文件是所述当前镜像层相对于其父镜像层被删除的文件;
对于每个第一文件,若所述目标目录中的各第二文件中不存在与该文件具有相同文件标识的文件,则将该文件存放至所述目标目录中,若所述目标目录的各第二文件中存在与该文件具有相同文件标识的目标文件,则基于该文件对所述目标文件进行更新;
所述第一文件为第一类型的文件且所述第二文件为第二类型的文件,或者所述第一文件为第二类型的文件且所述第二文件为第一类型的文件。
8.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序;
所述处理器被配置用于在调用所述计算机程序时,执行如权利要求1至6任一项中所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至6任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644168.6A CN113209633B (zh) | 2021-06-09 | 2021-06-09 | 镜像的处理方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110644168.6A CN113209633B (zh) | 2021-06-09 | 2021-06-09 | 镜像的处理方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113209633A CN113209633A (zh) | 2021-08-06 |
CN113209633B true CN113209633B (zh) | 2023-07-07 |
Family
ID=77083472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110644168.6A Active CN113209633B (zh) | 2021-06-09 | 2021-06-09 | 镜像的处理方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113209633B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672349A (zh) * | 2021-08-20 | 2021-11-19 | 绿盟科技集团股份有限公司 | 一种镜像的更新方法、装置、设备及介质 |
CN113885948B (zh) * | 2021-09-29 | 2023-05-30 | 武汉噢易云计算股份有限公司 | windows镜像分层的管理方法及装置 |
CN114048170B (zh) * | 2021-10-20 | 2024-04-02 | 北京字节跳动网络技术有限公司 | 跨容器搜索文件的方法、装置、设备和介质 |
CN113703926B (zh) * | 2021-10-29 | 2022-03-08 | 北京海誉动想科技股份有限公司 | Android容器创建方法与装置 |
CN114448998B (zh) * | 2021-12-17 | 2024-03-01 | 广州极飞科技股份有限公司 | 网络请求处理方法、装置、设备及存储介质 |
CN114936066A (zh) * | 2022-04-15 | 2022-08-23 | 支付宝(杭州)信息技术有限公司 | 镜像堆叠方法、装置、设备、介质及程序产品 |
CN116467015B (zh) * | 2023-06-20 | 2023-10-20 | 荣耀终端有限公司 | 镜像生成方法、系统启动校验方法及相关设备 |
CN116909752B (zh) * | 2023-09-11 | 2024-02-02 | 京东科技信息技术有限公司 | 一种页面的镜像存储方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106487850B (zh) * | 2015-08-29 | 2019-10-25 | 华为技术有限公司 | 一种云环境下获取镜像的方法、装置和系统 |
CN106227579B (zh) * | 2016-07-12 | 2020-01-31 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN108415795B (zh) * | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN112597115A (zh) * | 2020-12-18 | 2021-04-02 | 国网浙江省电力有限公司电力科学研究院 | 容器镜像的压缩方法、装置、终端设备及介质 |
-
2021
- 2021-06-09 CN CN202110644168.6A patent/CN113209633B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113209633A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113209633B (zh) | 镜像的处理方法、装置、电子设备及可读存储介质 | |
US6166732A (en) | Distributed object oriented multi-user domain with multimedia presentations | |
US10300382B1 (en) | Three dimensional terrain modeling | |
CN112988400B (zh) | 显存优化方法、装置、电子设备以及可读存储介质 | |
US10678482B2 (en) | Multi-tier data synchronizer based on concurrent linked list | |
CN112114849B (zh) | 一种资源更新方法和装置 | |
CN115955590A (zh) | 视频处理方法、装置、计算机设备、介质 | |
CN109985386B (zh) | 一种生成地图的方法和装置 | |
CN109302449B (zh) | 数据写入方法、数据读取方法、装置和服务器 | |
CN116974465A (zh) | 数据加载方法、装置、设备及计算机存储介质 | |
CN113082705B (zh) | 游戏场景切换方法、装置、计算机设备及存储介质 | |
CN114286195B (zh) | 直播礼物资源更新方法及其装置、设备、介质、产品 | |
CN113419806B (zh) | 图像处理方法、装置、计算机设备和存储介质 | |
CN112755534B (zh) | 一种数据处理方法、装置和存储介质 | |
US20140292781A1 (en) | System and method for propagating scene information to renderers in a multi-user, multi-scene environment | |
CN111737166B (zh) | 数据对象的处理方法、装置及设备 | |
CN113051336B (zh) | 可视化的数据操作方法、系统、设备和介质 | |
CN114047918A (zh) | 任务处理方法、装置、设备、存储介质及产品 | |
JP2022090853A (ja) | ビデオゲーム処理プログラム、及びビデオゲーム処理システム | |
CN114225385B (zh) | 云游戏数据处理方法、装置、设备及存储介质 | |
CN112148287A (zh) | 一种表格动态显示方法、装置以及电子设备 | |
CN117076143B (zh) | 装备资源的处理方法、装置、设备及介质 | |
CN116932014B (zh) | 一种应用更新方法、装置、设备及计算机可读存储介质 | |
US20230161699A1 (en) | Nft systems, methods, and structures | |
CN113996066A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40052189 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |