镜像构建方法和装置、终端设备和计算机存储介质
文献发布时间:2023-06-19 12:19:35
技术领域
本申请属于计算机技术领域,尤其涉及一种镜像构建方法和装置、终端设备和计算机存储介质。
背景技术
容器是一种轻量级、可移植、自包含的软件打包技术,它使得应用程序可以在几乎任何地方以相同的方式运行。OCI(Open Container Initiative,开放容器倡议)标准制定了镜像及其运行时容器的规范,并允许用户通过修改配置文件(例如:config.json)申明应用程序容器运行时的状态以及所需要的资源(例如:cgroup、namespace等)。
安全技术TEE(Trusted Execution Environment,可信执行环境)是移动设备主处理器上的一个安全区域,其可以保证加载到该环境内部的代码和数据的安全性、机密性以及完整性。TEE主要关注数据如何在使用中保证安全,即给数据提供可信的执行环境。一种较先进的TEE技术SGX通过扩展CPU指令集,实现不同程序间的运行隔离,使得不同的程序都有自己私有的存储空间,从而保证用户关键代码和数据的机密性和完整性不受恶意软件的破坏。
然而,普通镜像无法提供可信的执行环境从而无法保证用户数据的机密性和完整性,而私有存储区域镜像的制作过程又较为复杂。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请目的在于提供一种镜像构建方法和装置、终端设备和计算机存储介质,可以实现简单快捷地构建私有存储区域镜像。
本申请提供一种镜像构建方法和装置、终端设备和计算机存储介质是这样实现的:
一种镜像构建方法,所述方法包括:
获取待转换的原镜像文件和私钥;
将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
一种镜像构建方法,包括:
显示构建输入界面;
接收用户在所述构建输入界面上传的待转换的原镜像文件和输入的私钥;
显示通过上述的镜像构建方法构建的私有存储区域镜像。
一种镜像构建装置,包括:
获取模块,用于获取待转换的原镜像文件和私钥;
转换模块,用于将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
一种终端设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现如下方法的步骤:
获取待转换的原镜像文件和私钥;
将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现如下方法的步骤:
获取待转换的原镜像文件和私钥;
将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
本申请提供的镜像构建方法和装置,用户在上传待转换的原镜像文件并输入私钥之后,可以将原镜像文件转换为私有存储区域镜像,并在转换的过程中通过私钥对私有存储区域镜像进行签名。通过这种方式可以将普通镜像直接转换为私有存储区域镜像,且在转换的过程中通过私钥进行签名,使得无法在转换后的私有存储区域中获取到私钥,保护了私钥的安全性。通过上述方案解决了现有的私有存储区域镜像构建过程过于复杂的技术问题,达到了简单高效构建私有存储区域镜像的技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的镜像构建系统的架构图;
图2是本申请提供的构建输入界面的界面示意图;
图3是本申请提供的enclave构建过程总流程图;
图4是本申请提供的enclave镜像的构建方法流程图;
图5是本申请提供的计算机终端架构示意图;
图6是本申请提供的enclave构建装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
针对现有的私有存储区域镜像(即,enclave镜像)构建过于复杂的问题,在本例中提供了一种镜像构建系统,如图1所示,可以包括:用户101、终端设备102。可以包括也可以不包括服务器103。
在实现的过程中,用户101可以通过终端设备102上传待转换镜像文件,且可以通过终端设备102输入用户的私有密钥,还可以通过终端102设备选定enclave运行环境(即,enclave runtime)。
在获取到待转换镜像文件、私钥、enclave runtime这些信息之后,如果终端设备102具备处理能力,那么可以直接通过终端设备102转换得到enclave镜像,那么这个时候终端设备102就同时具备显示、接收用户输入和镜像构建的功能;如果终端设备102不具备处理能力,那么可以将待转换镜像文件、私钥、enclave runtime这些信息发送至服务器103,通过服务器103进行转换,以得到enclave镜像。具体采用哪种方式可以根据实际的终端设备102处理能力和场景需求选择,本申请对此不作限定。
上述的待转换镜像文件可以是OCI镜像,其中,OCI是Linux基金会的一个项目,它旨在为操作系统虚拟化,更重要的是Linux容器设计开放标准。当前有两个规范正在开发和使用中:运行时规范(runtime-spec)和镜像规范(image-spec)。在实际实现的时候,上述待转换的镜像不仅可以是OCI镜像,还可以是其它的非私有存储区域类型的普通镜像,对此,可以根据实际的转换需求选择,本申请对此不做限定。
考虑到对用户私钥的保护,可以在镜像转换的过程中使用用户提供的私有密钥对enclave镜像进行签名,同时保证转换后的enclave镜像中不会泄露用户的私有密钥,这样通过转换后的enclave不会泄露用户的私钥。即,可以获取待转换的原镜像文件和私钥;将所述原镜像文件自动转换为enclave镜像,并在转换的过程中通过所述私钥对enclave镜像进行签名;返回所述enclave镜像。
在进行enclave镜像转换的过程中,因为系统镜像一般是通用的,无需进行转换,为了减少转换效率,避免造成无谓的转换需求。可以先确定是否是系统镜像,如果不是系统镜像就进行转换,如果是系统镜像,就无需进行转换。即,可以将原镜像文件自动转换为enclave镜像的时候,可以确定原镜像是否为系统镜像;如果不是系统镜像,则将所述原镜像文件转换为enclave镜像。
在进行镜像转换的过程中,还需要获取运行环境,具体的,可以获取enclaveruntime,enclave runtime在enclave运行时,表示enclave的运行环境。对于enclaveruntime而言,可以是用户选定的。即,可以为用户提供一个enclave runtime的列表,用户从中选择希望的enclave runtime,也可以是默认的最适合的enclave runtime。具体采用哪种方式确定enclave runtime可以根据实际需要选择,本申请对此不作限定。
将所述原镜像文件转换为enclave镜像,并在转换的过程中对enclave镜像进行签名可以包括:
S1:将所述原镜像文件转换为中间文件;
在实现的时候,可以先将原镜像文件导出成打包文件,然后,再将打包文件解压成中间文件。其中,上述打包文件可以是tar包,上述中间文件可以是bundle。
S2:将enclave运行环境的依赖拷贝至所述中间文件中;
在实现的时候,可以运行环境的依赖拷贝至所述中间文件中,可以包括:返回用enclave运行环境列表做成的enclave运行环境镜像;接收选定的enclave运行环境,将选定的enclave运行环境所对应的镜像中的软件开发工具包拷贝至所述中间文件中。
S3:通过所述私钥对所述中间文件进行签名;
具体的,为所述中间文件中的所有可执行文件,生成enclave配置文件;将所述私钥拷贝到临时目录下;利用所述私钥为所有可执行文件签名,上述可执行文件可以是ELF文件。
S4:生成enclave镜像的入口脚本;
具体的,可以获取所述原镜像文件的第一个可执行程序、入口指令和命令行指令;然后,在enclave入口脚本中加入为所述中间文件中的所有可执行的可执行文件生成令牌的逻辑;再根据所述原镜像文件的第一个可执行程序、入口指令和命令行指令生成所述enclave镜像的入口脚本,其中,入口指令为ENTRYPOINT指令,命令行指令为CMD指令。
S5:将签名后的中间文件转换为enclave镜像。
在转换的过程中,可以是获取原镜像的环境变量、端口号和工作目录(即,元数据信息),然后,将原镜像的环境变量、端口号和工作目录设置为enclave镜像的环境变量、端口号和工作目录;将enclave镜像的入口脚本设置为enclave镜像的入口指令,根据所述签名后的中间文件和enclave镜像的环境变量、端口号和工作目录,转换为所述enclave镜像,从而完成镜像的转换。
对于上述终端设备102,可以提供如图2所示的构建输入界面,然后用户在该构建输入界面中输入或者上传所需的信息,再触发进行构建,就可以自动构建enclave镜像。对于windows系统而言,触发进行构建可以通过点击按钮的方式,对于linux系统而言,可以是通过代码指令触发进行构建。即,对于上述终端设备而言,可以显示构建输入界面,接收用户在所述构建输入界面上传的待转换的原镜像文件和输入的私钥,然后显示通过上述的镜像构建方法构建的enclave镜像,这个构建过程可以在终端设备侧进行,也可以在服务器侧进行。
通过将普通镜像转换为enclave镜像,使得用户的应用可以运行在可信enclave执行环境中,保证了用户数据的机密性和完整性。且在转换的过程中不需要用户进行过多的修改,降低了用户的使用难度,转换后的镜像保留用户镜像的元数据信息,在转换过程中用用户的私有密钥进行签名,同时保证无法在转换后的镜像里获取用户的私有密钥。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
在本例中提供了一种通用、简单地构建enclave镜像的方法及工具,以便可以根据用户输入的普通镜像、签名密钥以及enclave runtime自动构建对应的enclave镜像。通过这种方式不仅可以使得用户镜像中的数据运行在轻量级、可移植、自包含的容器环境中,也可以保证用户数据的完整性与可靠性,同时可以简化用户操作,提升用户体验。
进一步的,转换后的OCI镜像中可以保留用户镜像的元数据信息,最后,在转换过程中可以利用用户的私有密钥进行签名,同时保证无法在转换后的镜像里获取用户的私有密钥。即,根据用户提供的元数据信息(普通镜像、签名、enclave runtime等相关元数据信息)自动地转换成对应的enclave镜像,不需要人工参与。
即,enclave镜像构建工具根据用户的输入,对用户提供的OCI镜像进行分类处理,并使用用户提供的私有密钥,在构建enclave镜像过程中完成签名,最后把签名后的enclave镜像交付给用户,具体的,以一具体实例进行说明,可以如图3所示,可以包括如下步骤:
S1:用户准备OCI镜像、私有密钥、enclave runtime配置等信息;
S2:用户调用enclave镜像构建工具构建enclave镜像,在调用镜像构建工具时,指定OCI镜像、私有密钥、enclave runtime等参数;
S3:拉取要转换的OCI镜像获取元数据信息、准备用户指定的enclave runtime、获取用户提供的私有密钥;
其中,元数据信息可以包括:运行时间、镜像的作用、镜像的存储位置(例如:存储在c盘还是d盘)等等。
S4:分类处理用户的OCI镜像:判断要转换的镜像是否为系统镜像(系统镜像指的是与操作系统相关的镜像,例如:Centos、Ubuntu、Debian等)如果是系统镜像,则确定该镜像与用户应用无关,无需进行转换,直接返回原镜像。如果不是系统镜像,则继续进入后续操作。
S5:构建签名后的enclave镜像:
在enclave镜像构建流程中,非系统镜像首先被转换成对应的bundle,再根据用户提供的enclave runtime信息将对应的依赖(SDK包等)拷贝到bundle中,并利用用户提供的私有密钥进行签名,再根据OCI image的基本信息生成enclave镜像的入口脚本,最后将bundle转换为enclave镜像,在自动构建enclave镜像的同时也保护了用户的私有密钥,即,无法在转换后的enclave镜像中获取用户的私有密钥。
具体的,enclave镜像构建可以如图4所示,包括如下步骤:
S5.1:创建临时工作目录;
S5.2:获取OCI镜像基本信息,可以包括:
S5.2.1:获取OCI镜像的ENV信息,其中,ENV为OCI镜像的环境变量,可以包括PATH等重要信息;
S5.2.2:获取OCI镜像的CMD和ENTRYPOINT信息,其中,CMD与ENTRYPOINT与OCI镜像的入口程序/脚本有关,转换后enclave镜像应该与OCI镜像在入口脚本等基本信息上保持一致;
其中,CMD指令允许用户指定容器的默认执行的命令,该命令会在容器启动且docker run没有指定其他命令时运行。ENTRYPOINT指令可以让容器以应用程序或者服务的形式运行,ENTRYPOINT看上去与CMD很像,它们都可以指定要执行的命令及其参数,不同的地方在于ENTRYPOINT不会被忽略,一定会被执行,即使运行docker run时指定了其他命令。
S5.2.3:获取OCI镜像的WORKDIR信息,其中,WORKDIR为OCI镜像的工作目录;
S5.2.4:获取OCI镜像绑定的端口号等其它重要信息。
S5.3:将OCI镜像转换成bundle,可以包括:
S5.3.1:将OCI镜像导出成tar包;
S5.3.2:将导出后的tar包解压成bundle,其中,tar包与bundle均位于临时工作目录下。
将OCI镜像转换成bundle,就是将OCI镜像转换为文件或者文件夹的形式,通过转换为文件或者文件夹的形式实现起来较为简单,且转换成本较低。
S5.4:将enclave runtime依赖拷贝到bundle中,可以包括:
S5.4.1:将常用的几种enclave runtime(例如:sgx相关的graphene、Occlum等LibOS)做成镜像,enclave runtime镜像随构建工具一起提供给用户;
S5.4.2:根据用户选择的enclave runtime,从对应的enclave runtime镜像中将enclave runtime相关的SDK拷贝到要转换的OCI镜像对应的bundle中。
S5.5:获取OCI镜像的第一个可执行程序,可以包括:
S5.5.1:读取OCI镜像的ENTRYPOINT,找到第一个可执行程序。如果ENTRYPOINT为空,则第一个可执行程序为从OCI镜像的CMD(命令提示符,是在操作系统中提示进行命令输入的一种工作提示符)中获取;
S5.5.2:根据ENTRYPOINT指令与CMD指令生成enclave镜像的ENTRYPOINT脚本。
S5.6:为bundle中所有可执行的ELF文件生成enclave配置文件,可以包括:
S5.6.1:遍历bundle中所有可执行的ELF文件(Executable Linkable Forma,是一种文件存储格式),ELF文件是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件。为每个可执行的ELF文件生成对应的enclave配置文件。enclave配置文件包含该ELF文件所需要的Enclave Runtime、Enclave size、依赖的动态库、网络、文件系统、堆、栈等资源;
S5.6.2:将所有可执行的ELF文件的位置保存在bundle的固定文件中。
S5.7:为bundle中所有可执行的ELF文件签名,可以包括:
S5.7.1:将用户的私有密钥拷贝到临时目录下(bundle目录之外);
S5.7.2:用私有密钥为所有可执行的ELF文件签名。
S5.8:生成enclave镜像入口脚本,可以包括:
S5.8.1:在enclave入口脚本中加入为所有可执行的ELF文件生成token(令牌)的逻辑;
S5.8.2:根据OCI镜像的第一个可执行程序、ENTRYPOINT、CMD生成enclave的入口脚本。
S5.9:在bundle中安装其它依赖,可以包括:
S5.9.1:检查指定enclave runtime对应的依赖是否都已经安装,如果已安装,则执行步骤S5.10,否则安装其它依赖;
S5.9.2:通过chroot、主机端拷贝等方式在bundle中安装其它依赖,包括:enclaveruntime依赖的动态库等。
S5.10:将bundle转换成enclave镜像,可以包括:
S5.10.1:设置enclave镜像的元数据信息(例如:ENV、WORKDIR、绑定的端口等);
S5.10.2:将enclave入口脚本设置为enclave镜像的ENTRYPOINT。
S5.10.3:根据bundle及其enclave镜像的元数据信息转换成对应的enclave镜像。
S5.11:删除临时工作目录。
S6:将签名后的镜像交付给用户。
在上例中,提供了一种通用的构建enclave镜像的方法及工具,允许用户提供构建enclave镜像的相关参数,对用户提供的普通镜像进行分类处理,自动地将用户的镜像转换成对应的enclave镜像,同时保留用户镜像的元数据信息,在镜像转换过程中使用用户提供的私有密钥对enclave镜像进行签名,同时保证转换后的enclave镜像中不会泄露用户的私有密钥。在构建的过程中,可以允许用户提供构建enclave镜像的相关参数,对用户提供的普通镜像进行分类处理,且可以自动地将用户的镜像转换成对应的enclave镜像,同时保留用户镜像的元数据信息,在镜像转换的过程中,可以使用用户提供的私有密钥对enclave镜像进行签名,同时保证了转换后的enclave镜像中不会泄露用户的私有密钥。
本申请上述实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图5是本发明实施例的一种镜像构建方法的计算机终端的硬件结构框图。如图5所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的镜像构建方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的镜像构建方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在软件层面,上述装置可以如图6所示,可以包括:
获取模块601,用于获取待转换的原镜像文件和私钥;
转换模块602,用于将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
在一个实施方式中,上述转换模块602可以包括:确定单元,用于确定所述原镜像是否为系统镜像;第一转换单元,如果不是系统镜像,则将所述原镜像文件转换为私有存储区域镜像。
在一个实施方式中,上述转换模块602可以包括:第二转换单元,用于将所述原镜像文件转换为中间文件;拷贝单元,用于将私有存储区域运行环境的依赖拷贝至所述中间文件中;签名单元,用于通过所述私钥对所述中间文件进行签名;生成单元,用于生成私有存储区域镜像的入口脚本;第三转换单元,用于将签名后的中间文件转换为私有存储区域镜像。
在一个实施方式中,上述第二转换单元具体可以用于将所述原镜像文件导出成打包文件;将所述打包文件解压成中间文件。
在一个实施方式中,上述拷贝单元具体可以用于返回用私有存储区域运行环境列表做成的enclave运行环境镜像;接收选定的私有存储区域运行环境,将选定的私有存储区域运行环境所对应的镜像中的软件开发工具包拷贝至所述中间文件中。
在一个实施方式中,上述签名单元具体可以用于为所述中间文件中的所有可执行文件,生成私有存储区域配置文件;将所述私钥拷贝到临时目录下;利用所述私钥为所有可执行文件签名。
在一个实施方式中,生成单元具体可以用于获取所述原镜像文件的第一个可执行程序、ENTRYPOINT指令和CMD指令;在私有存储区域入口脚本中加入为所述中间文件中的所有可执行文件生成令牌的逻辑;根据所述原镜像文件的第一个可执行程序、所述ENTRYPOINT指令和所述CMD指令生成所述私有存储区域镜像的入口脚本。
在一个实施方式中,上述第三转换单元具体可以用于获取原镜像的环境变量、端口号和工作目录;将所述原镜像的环境变量、端口号和工作目录设置为私有存储区域镜像的环境变量、端口号和工作目录;将私有存储区域镜像的入口脚本设置为私有存储区域镜像的ENTRYPOINT指令;根据所述签名后的中间文件和私有存储区域镜像的环境变量、端口号和工作目录,转换为所述私有存储区域镜像。
本申请的实施例还提供能够实现上述实施例中的镜像转换方法中全部步骤的一种电子设备的具体实施方式,所述电子设备具体包括如下内容:处理器(processor)、存储器(memory)、通信接口(Communications Interface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的计算机程序,所述处理器执行所述计算机程序时实现上述实施例中的镜像转换方法中的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤1:获取待转换的原镜像文件和私钥;
步骤2:将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
从上述描述可知,用户在上传待转换的原镜像文件并输入私钥之后,可以将原镜像文件转换为私有存储区域镜像,并在转换的过程中通过私钥对私有存储区域镜像进行签名。通过这种方式可以将普通镜像直接转换为私有存储区域镜像,且在转换的过程中通过私钥进行签名,使得无法在转换后的私有存储区域中获取到私钥,保护了私钥的安全性。通过上述方案解决了现有的私有存储区域镜像构建过程过于复杂的技术问题,达到了简单高效构建私有存储区域镜像的技术效果。
本申请的实施例还提供能够实现上述实施例中的镜像转换方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的镜像转换方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤1:获取待转换的原镜像文件和私钥;
步骤2:将所述原镜像文件转换为私有存储区域镜像,并在转换的过程中通过所述私钥对私有存储区域镜像进行签名。
从上述描述可知,用户在上传待转换的原镜像文件并输入私钥之后,可以将原镜像文件转换为私有存储区域镜像,并在转换的过程中通过私钥对私有存储区域镜像进行签名。通过这种方式可以将普通镜像直接转换为私有存储区域镜像,且在转换的过程中通过私钥进行签名,使得无法在转换后的私有存储区域中获取到私钥,保护了私钥的安全性。通过上述方案解决了现有的私有存储区域镜像构建过程过于复杂的技术问题,达到了简单高效构建私有存储区域镜像的技术效果。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书实施例的实施例而已,并不用于限制本说明书实施例。对于本领域技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的权利要求范围之内。
- 镜像构建方法和装置、终端设备和计算机存储介质
- 基于web端的Docker镜像构建方法、装置、存储设备及终端设备