CN107491329A - Docker镜像构建方法、设备、存储介质以及电子装置 - Google Patents
Docker镜像构建方法、设备、存储介质以及电子装置 Download PDFInfo
- Publication number
- CN107491329A CN107491329A CN201710660710.0A CN201710660710A CN107491329A CN 107491329 A CN107491329 A CN 107491329A CN 201710660710 A CN201710660710 A CN 201710660710A CN 107491329 A CN107491329 A CN 107491329A
- Authority
- CN
- China
- Prior art keywords
- mirror image
- mirror
- image
- docker
- 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.)
- Granted
Links
Classifications
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Abstract
本发明提供一种Docker镜像构建方法、设备、存储介质以及电子装置,包括步骤:S101、根据多个镜像的参数创建镜像构建模型,多个镜像包括基础镜像以及子镜像,子镜像是依赖于基础镜像更新或提取构建获得,镜像构建模型包含多个镜像的镜像名称,镜像的Docker file信息以及多个镜像之间的依赖关系信息,依赖关系信息包括子镜像所依赖的基础镜像信息;S102、执行镜像构建模型,通过镜像构建模型调用镜像对应的Docker file,根据镜像构建模型中的依赖关系信息依次构建多个镜像。由于采用通过镜像构建模型,本发明在构建多个镜像时,无需人工一一读取Docker file,而通过镜像构建模型自动调用Docker file完成镜像构建过程。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及Docker镜像构建方法与设备。
背景技术
Docker是一个开源的虚拟化技术,旨在提供一种应用的自动化部署解决方案,能够让开发者打包他们的应用及依赖包到一个可移植的容器中,容器可以视为一种轻量级虚拟机,由Docker镜像(image)进行实例化而得到。镜像就是一个只读的模板,一个镜像可以包含一个完整的操作系统环境,里面仅安装了用户需要的应用程序,镜像可以用来创建Docker容器。
在当前的Docker系统中,每个主机均与远端的仓库服务器(Dockerregistry)相连,各个主机在进行Docker实例化操作时,需要从仓库服务器中下载(pull)所需的镜像,并保存在本地仓库内。当新的镜像构建完成时,新的镜像上传(push)并存储在仓库服务器。
当前镜像的构建方法通常通过一个Docker file(镜像定义文件)构建单一的镜像。因此,当需要构建多个镜像的时候,需要根据每一个镜像定义文件逐一构建镜像。然而,多个镜像之间通常具有依赖关系,通过当前的镜像构建方法构建镜像时,需要人工根据一定顺序构建镜像,因此难以准确地获取镜像间的关系,容易导致构建镜像出错。
发明内容
针对以上问题,本发明的目的在于提供一种能够自动按照正确的顺序依次构建镜像的镜像构建方法。
根据本发明的第一个方面,提供一种Docker镜像构建方法,包括步骤:S101、根据多个镜像的参数创建镜像构建模型,多个镜像包括基础镜像以及子镜像,子镜像是依赖于基础镜像更新或提取构建获得,镜像构建模型包含多个镜像的镜像名称,镜像的Dockerfile信息以及多个镜像之间的依赖关系信息,依赖关系信息包括子镜像所依赖的基础镜像信息;S102、执行镜像构建模型,通过镜像构建模型调用镜像对应的Docker file,根据镜像构建模型中的依赖关系信息依次构建多个镜像。
优选地,步骤S102中包括步骤:S1025、通过镜像构建模型构建至少一个基础镜像;S1026、通过镜像构建模型中的依赖关系信息,构建依赖于该基础镜像的至少一个子镜像。
优选地,步骤S1025之后还包括以下步骤:S1027、通过镜像构建模型中的依赖关系信息,构建依赖于子镜像的至少一个子子镜像。
优选地,步骤S102包括根据镜像构建模型中的依赖关系信息将多个镜像排列为树状结构,从树状结构的根节点的镜像开始依次构建多个镜像。
优选地,镜像构建模型还包含仓库服务器信息,Docker镜像构建方法还包括步骤:S103、根据仓库服务器信息将构建的镜像上传至仓库服务器。
优选地,镜像构建模型还包含提取信息,步骤S102包括,S1021、执行镜像构建模型;S1022、通过镜像构建模型调用基础镜像对应的Dockerfile构建包含编译环境信息的基础镜像;S1023、根据提取信息从基础镜像中提取构建产物;S1024、基于构建产物并通过镜像构建模型调用依赖基础镜像的子镜像的Docker file构建子镜像,子镜像不包含编译环境信息。
优选地,镜像构建模型还包含触发信息,当触发信息被触发时,启动构建带有触发信息的镜像。
优选地,触发信息包括代码提交或者标签签入。
优选地,还包括步骤:S104、生成Docker镜像的任务结果信息,任务结果信息包括步骤S102至步骤S103中每一个步骤或是子步骤的执行日志数据。
优选地,镜像构建模型还包含动态重写信息,当基础镜像发送变化时,根据动态重写信息更改子镜像的依赖关系至更改后的基础镜像。
根据本发明的第二个方面,提供一种Docker镜像构建设备,包括:模型创建模块,用于根据多个镜像的参数创建镜像构建模型,多个镜像包括基础镜像以及子镜像,子镜像是依赖于基础镜像更新或提取构建获得,镜像构建模型包含多个镜像的镜像名称,镜像的Docker file信息以及多个镜像之间的依赖关系信息,依赖关系信息包括镜像所依赖的基础镜像信息;镜像构建模块,用于读取镜像构建模型,通过镜像构建模型调用镜像对应的Docker file,根据镜像构建模型中的依赖关系信息依次构建多个镜像。
根据本发明的第三个方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面的Docker镜像构建方法的步骤。
根据本发明的第四个方面,提供一种电子装置,包括:处理单元;以及存储单元,用于存储处理器的可执行指令;其中,处理单元配置为经由执行可执行指令来执行上述第一个方面的Docker镜像构建方法的步骤。
本发明通过创建镜像构建模型,并读取镜像构建模型构建多个镜像。由于镜像构建模型包含镜像所依赖的基础镜像信息,从而能够容易地获得镜像间的依赖关系,进而在构建多个镜像时,无需人工分辨镜像构建顺序,有效地避免了镜像构建错误。同时,由于采用通过镜像构建模型,本发明在构建多个镜像时,无需人工一一读取Docker file,而通过镜像构建模型自动调用Docker file完成镜像构建过程。
附图说明
以下结合附图和具体实施例对本发明的技术方案进行详细的说明,以使本发明的特性和优点更为明显。
图1为本发明实施例一的Docker镜像构建方法的流程示意图;
图2为图1中步骤S102的详细流程示意图;
图3为本发明实施例一的Docker镜像构建方法的数据流向示意图;
图4为本发明实施例二的步骤S102的详细流程示意图;
图5为本发明实施例的Docker镜像构建设备的模块示意图;
图6为本发明的电子装置的结构示意图;
图7为本发明的计算机可读存储介质的结构示意图。
具体实施方式
以下将对本发明的实施例给出详细的说明。尽管本发明将结合一些具体实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,对本发明进行的修改或者等同替换,均应涵盖在本发明的权利要求范围当中。
一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1为本发明实施例一的Docker镜像构建方法的流程示意图,如图1所示,本发明的Docker镜像构建方法包括步骤:
S101:创建镜像构建模型。
S102:执行镜像构建模型,通过镜像构建模型调用镜像对应的Docker file,依次构建多个镜像。
S103:镜像上传至仓库服务器。
图3为本发明实施例一的Docker镜像构建方法的数据流向示意图,下面结合图1与图3,具体介绍本发明实施例的Docker镜像构建方法。
首先如步骤S101,根据多个镜像的参数创建镜像构建模型。镜像构建模型用于定义多个镜像33,34的构建流程。多个镜像33,34包括基础镜像33以及子镜像34,子镜像34是依赖于基础镜像33更新或提取构建获得。镜像的参数包括镜像的Docker file信息,镜像之间的依赖关系信息等。
镜像构建模型包含多个镜像33,34的镜像名称,镜像33,34的Docker file信息以及多个镜像之间的依赖关系信息。在本发明中依赖关系信息包括子镜像34所依赖的基础镜像信息。
镜像名称用于在镜像构建模型中标识镜像33,34,表明在镜像名称后的镜像参数设置适用于该镜像33,34。镜像33,34的Docker file信息包括Docker file的名称和/或其相对路径。子镜像34所依赖的基础镜像信息用于反映多个镜像33,34之间的依赖关系,在读取镜像构建模型时,根据子镜像34所依赖的基础镜像信息,将多个镜像33,34按正确的顺序逐一构建。
镜像构建模型还包括构建镜像的上下文(context)的相对路径。构建镜像的上下文的相对路径通常指构建镜像以及容器的应用环境的全局信息的相对路径,即源码库31的地址信息。通常在源码库根目录中存储镜像构建模型。
镜像构建模型可以采用yaml、xml或json等格式的文件。
优选地,镜像构建模型还包含仓库服务器信息,仓库服务器信息用于标识镜像33,34所上传的仓库服务器35,以及在该仓库服务器35中存储时镜像33,34的镜像存储名。
优选地,镜像构建模型还包含提取信息,提取信息用于从包含编译环境信息的基础镜像33中提取构建产物,并根据构建产物构建新的不包含编译环境信息的子镜像34。
优选地,镜像构建模型还包含触发信息,触发信息用于标识镜像构建的触发条件,当触发信息被触发时,启动构建带有触发信息的镜像33,34。触发信息包括代码提交或者标签签入,即当发生预设代码提交或是预设标签签入时,构建对应的镜像33,34。
下面示例性地使用一个yaml文件,说明镜像构建模型的内容。假设需要构建2个镜像33,34,其中子镜像34需要依赖于基础镜像33构建。
yaml文件源代码如下:
yaml文件的源代码对应的内容如下:
建立:
镜像33:
context的相对路径
Docker file信息
提取信息
子镜像34:
context的相对路径
Docker file信息
上传:
触发信息=仓库服务器/镜像存储名:标签
依赖的基础镜像信息:
镜像33
继续参考图1,如步骤S102,执行镜像构建模型,依次构建多个镜像33,34。
本实施中,子镜像34通过基础镜像33提取构建获得。图2为图1中步骤S102的详细流程示意图。下面参考图2,图3并结合上述举例的yaml文件,说明多个镜像33,34构建过程。
首先,如步骤S1021,持续集成(CI,continuous integration)工具32从源码库31读取镜像构建模型。如步骤S1022,持续集成工具32根据镜像构建模型中的基础镜像33的内容,构建基础镜像33。具体而言,根据镜像构建模型中镜像名称为镜像33下的Docker file信息,找到镜像33对应的Docker file,并自动调取镜像33对应的Docker file,从而构建基础镜像33。本实施例中,基础镜像33中包含编译环境信息。
本实施例中,镜像名称为镜像33下包含提取信息,如步骤S1023,根据提取信息从基础镜像33中提取构建产物。如步骤S1024,根据子镜像34所依赖的基础镜像为基础镜像33,持续集成工具32根据基础镜像33中提取的构建产物,以及通过镜像构建模型自动调取的子镜像34对应的Docker file,构建子镜像34。由于基于构建产物构建子镜像,因此子镜像34中不包含编译环境信息,因此子镜像34相较于基础镜像33更为简洁,体量更小。
优选地,在本实施例中镜像构建模型中镜像名称为镜像34下包括触发信息,因此当触发信息被触发时,启动对子镜像34的构建。触发信息包括代码提交或者标签签入。即当发生特定代码提交或是特定标签签入时才构建该子镜像34。通过触发信息设置,便于进行镜像构建的控制与管理。在其他实施例中,可以不具有触发信息,而当镜像构建模型被执行时直接构建镜像。
在其他实施例中,子镜像依赖基础镜像更新获得,此时镜像构建模型中的基础镜像下不包括提取信息,子镜像直接依赖基础镜像进行构建。
如步骤S103,将镜像33,34上传至仓库服务器35。仍然以上述的yaml文件为例,触发信息后的“仓库服务器/镜像存储名:标签”为仓库服务器信息,包括子镜像34上传的仓库服务器35,以及在该仓库服务器35中子镜像34的镜像存储名。优选地,镜像存储名可以通过镜像构建模型自由地编写模板,从而提高镜像命名效率以及便捷性。例如在本实施例中,镜像存储名后带有标签,用于标识基于相同源代码的不同版本的镜像。镜像存储名还可以包含当前日期,代码分支(branch)名,代码提交ID(commit ID)等。
在其他实施例,可以不具有步骤S103,而将生成的多个镜像33,34存储在计算机本地。
如步骤S104,生成Docker镜像的任务结果信息。任务结果信息可以包括步骤S102至步骤S103中每一个步骤或是子步骤的执行日志数据,执行日志数据包括执行结果,例如执行成功或是执行失败,进一步可以包括执行失败原因,执行失败原因可以采用故障代码的方式来表达。任务结果信息也可以仅包括镜像的最终生成结果。
在步骤S102至步骤S103中每一子步骤中任何一个步骤执行失败后,直接跳转至执行步骤S104。失败原因和每一步骤的执行结果,能够帮助用户快速定位问题出处,便于更高效地解决问题,进一步保证Docker镜像生成效率。
在其他实施例中,镜像构建模型还包含动态重写信息。当基础镜像发生变化时,根据子镜像中的动态重写信息可以更改镜像的依赖关系,将子镜像的依赖关系更改至变化后的基础镜像。
实施例二
实施例二中示例性地展示了三个镜像的构建过程,包括基础镜像,子镜像以及子子镜像。
实施例二与实施例一的步骤大致相同,区别在于步骤S102多个镜像的构建过程。本实施例中子镜像是基础镜像的更新镜像,子子镜像是子镜像的更新镜像。
具体而言,如实施例一中的步骤,首先执行步骤S101,根据多个镜像的参数创建镜像构建模型。镜像构建模型中包括基础镜像,子镜像以及子子镜像的镜像名称,各个镜像对应的Docker file信息以及上下文的相对路径,镜像之间的依赖关系。
接着如步骤S102执行镜像构建模型,依次构建多个镜。图4为本发明实施例二的步骤S102的详细流程示意图。如图4所示,首先执行步骤S1025,持续集成工具执行镜像构建模型,根据镜像构建模型调用基础镜像对应的Docker file从而构建基础镜像。如步骤1026,通过镜像构建模型中的依赖关系信息,构建依赖于该基础镜像的子镜像。具体包括根据镜像构建模型中的子镜像部分定义的依赖关系信息,查找到基础镜像以及基础镜像文件的相对路径。镜像构建模型调用子镜像对应的Dockerfile,引用子镜像与基础镜像相同的镜像文件的相对路径,从而在基础镜像的基础上创建子镜像。
在其他实施例中,子镜像也可以通过拷贝基础镜像文件,并在此基础上进行修改,从而在基础镜像的基础上创建子镜像。
如步骤S1027,通过所述镜像构建模型中的依赖关系信息,构建依赖于所述子镜像的至少一个子子镜像。子子镜像的构建方式类似于上述构建子镜像的方式,即根据镜像构建模型调用子子镜像对应的Dockerfile,引用子子镜像与子镜像相同的镜像文件的相对路径,从而在子镜像的基础上创建子子镜像。
优选地,将多个镜像按次序进行排列,例如排列为树状结构,从而按正确的顺序,例如从树的根节点逐一构多个建镜像。具体而言,根据镜像构建模型中的依赖关系信息将多个镜像排列为树状结构,从树状结构的根节点的镜像开始依次构建多个镜像。在本实施例中,将基础镜像,子镜像与子子镜像排列为树状,其中基础镜像为树状结构的根节点,子镜像为依赖于根节点的一级叶子节点,子子镜像为依赖于一级叶子节点的二级叶子节点,在构建时从根节点的镜像开始依次构建,直至完成二级叶子节点的镜像构建。
本实施例的其他步骤与实施例一相同,可以参照实施例的Docker镜像构建方法,此处不再赘述。
本发明通过创建镜像构建模型可以完整的定义出镜像的构建过程,只需一个命令即可完成一连串的镜像构建任务,而无需人工根据每一个镜像定义文件逐一构建镜像。
本发明通过镜像构建模型自动解决镜像依赖关系,提高多个镜像构建过程的可靠性。
在对多个镜像进行管理时,也可以通过管理一个镜像构建模型来实现,从而可以方便的和各类持续集成工具配合。只需由代码维护者统一在源代码根目录下维护一个镜像构建模型,可以极大的减轻编写其持续集成脚本的工作。
在本发明公开的示例性实施例中,还提供了一种Docker镜像构建设备。图5为本发明实施例的Docker镜像构建设备的模块示意图。如图5所示,Docker镜像构建设备10包括模型创建模块11,镜像构建模块12、镜像上传单元13以及任务结果信息单元14。模型创建模块11用于根据多个镜像的参数创建镜像构建模型,镜像构建模型包含多个镜像的镜像名称,构建镜像的上下文的相对路径,镜像的Docker file信息以及镜像所依赖的基础镜像信息。镜像构建模块12用于执行镜像构建模型,通过镜像构建模型调用镜像对应的Docker file,根据镜像构建模型中的依赖关系信息依次构建多个镜像。镜像上传单元13用于根据仓库服务器信息将构建的镜像上传至仓库服务器。任务结果信息单元14用于生成Docker镜像的任务结果信息。本发明的Docker镜像构建设备10实施上述介绍的Docker镜像构建方法,具体方法请见上文中对Docker镜像构建方法的描述,此处不再赘述。
本发明实施例还提供一种电子装置,包括处理器,存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的Docker镜像构建方法的步骤。
如上,该实施例通过创建镜像构建模型,并读取镜像构建模型构建多个镜像,从而无需人工一一读取Docker file,而通过镜像构建模型自动调用Docker file完成镜像构建过程。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
图6是本发明的电子装置的结构示意图。下面参照图6来描述根据本发明的这种实施方式的电子装置600。图6显示的电子装置600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,电子装置600以通用计算设备的形式表现。电子装置600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图1中所示的步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子装置600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子装置600交互的设备通信,和/或与使得该电子装置600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子装置600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子装置600的其它模块通信。应当明白,尽管图中未示出,可以结合电子装置600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现Docker镜像构建方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
如上所示,该实施例的计算机可读存储介质的程序在执行时,通过多个不同客服模型和背景模型的预设,当用户在进行相关业务沟通的时候,能够直观地看到与该业务相关联的客服模型和背景模型,直观地了解,当前对话的业务主题,得到更多样化的互动体验,也大大提高了人性化体验。
图7是本发明的计算机可读存储介质的结构示意图。参考图7所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述Docker镜像构建方法。
以上仅是本发明的具体应用范例,对本发明的保护范围不构成任何限制。除上述实施例外,本发明还可以有其它实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明所要求保护的范围之内。
Claims (13)
1.一种Docker镜像构建方法,其特征在于包括步骤:
S101、根据多个镜像的参数创建镜像构建模型,多个所述镜像包括基础镜像以及子镜像,所述子镜像是依赖于所述基础镜像更新或提取构建获得,所述镜像构建模型包含多个所述镜像的镜像名称,所述镜像的Dockerfile信息以及多个所述镜像之间的依赖关系信息,所述依赖关系信息包括子镜像所依赖的基础镜像信息;
S102、执行所述镜像构建模型,通过所述镜像构建模型调用所述镜像对应的Dockerfile,根据所述镜像构建模型中的依赖关系信息依次构建多个所述镜像。
2.如权利要求1所述的Docker镜像构建方法,其特征在于,所述步骤S102中包括步骤:
S1025、通过所述镜像构建模型构建至少一个所述基础镜像;
S1026、通过所述镜像构建模型中的依赖关系信息,构建依赖于该基础镜像的至少一个子镜像。
3.如权利要求2所述的Docker镜像构建方法,其特征在于,所述步骤S1025之后还包括以下步骤:
S1027、通过所述镜像构建模型中的依赖关系信息,构建依赖于所述子镜像的至少一个子子镜像。
4.如权利要求1所述的Docker镜像构建方法,其特征在于,
所述步骤S102包括根据所述镜像构建模型中的依赖关系信息将多个所述镜像排列为树状结构,从所述树状结构的根节点的镜像开始依次构建多个所述镜像。
5.如权利要求1所述的Docker镜像构建方法,其特征在于,
所述镜像构建模型还包含仓库服务器信息,所述Docker镜像构建方法还包括步骤:S103、根据所述仓库服务器信息将构建的所述镜像上传至所述仓库服务器。
6.如权利要求1所述的Docker镜像构建方法,其特征在于,
所述镜像构建模型还包含提取信息,所述步骤S102包括,S1021、执行所述镜像构建模型;S1022、通过所述镜像构建模型调用所述基础镜像对应的Docker file构建包含编译环境信息的所述基础镜像;S1023、根据所述提取信息从所述基础镜像中提取构建产物;S1024、基于所述构建产物并通过所述镜像构建模型调用依赖所述基础镜像的子镜像的Docker file构建所述子镜像,所述子镜像不包含编译环境信息。
7.如权利要求1所述的Docker镜像构建方法,其特征在于,
所述镜像构建模型还包含触发信息,当所述触发信息被触发时,启动构建带有所述触发信息的镜像。
8.如权利要求7所述的Docker镜像构建方法,其特征在于,
所述触发信息包括代码提交或者标签签入。
9.如权利要求1所述的Docker镜像构建方法,其特征在于,还包括步骤:S104、生成Docker镜像的任务结果信息,所述任务结果信息包括所述步骤S102至所述步骤S103中每一个步骤或是子步骤的执行日志数据。
10.如权利要求1所述的Docker镜像构建方法,其特征在于,
所述镜像构建模型还包含动态重写信息,当基础镜像发送变化时,根据动态重写信息更改子镜像的依赖关系至更改后的基础镜像。
11.一种Docker镜像构建设备,其特征在于包括:
模型创建模块,用于根据多个镜像的参数创建镜像构建模型,多个所述镜像包括基础镜像以及子镜像,所述子镜像是依赖于所述基础镜像更新或提取构建获得,所述镜像构建模型包含多个所述镜像的镜像名称,所述镜像的Docker file信息以及多个所述镜像之间的依赖关系信息,所述依赖关系信息包括所述镜像所依赖的基础镜像信息;
镜像构建模块,用于读取所述镜像构建模型,通过所述镜像构建模型调用所述镜像对应的Docker file,根据所述镜像构建模型中的依赖关系信息依次构建多个所述镜像。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至10中任一项所述Docker镜像构建方法的步骤。
13.一种电子装置,其特征在于,包括:
处理单元;以及
存储单元,用于存储所述处理单元的可执行指令;
其中,所述处理单元配置为经由执行所述可执行指令来执行权利要求1至10中任一项所述Docker镜像构建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710660710.0A CN107491329B (zh) | 2017-08-04 | 2017-08-04 | Docker镜像构建方法、设备、存储介质以及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710660710.0A CN107491329B (zh) | 2017-08-04 | 2017-08-04 | Docker镜像构建方法、设备、存储介质以及电子装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107491329A true CN107491329A (zh) | 2017-12-19 |
CN107491329B CN107491329B (zh) | 2021-03-16 |
Family
ID=60644273
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710660710.0A Active CN107491329B (zh) | 2017-08-04 | 2017-08-04 | Docker镜像构建方法、设备、存储介质以及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491329B (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390920A (zh) * | 2018-02-02 | 2018-08-10 | 浙江臻善科技股份有限公司 | 基于web端的Docker镜像构建方法、装置、存储设备及终端设备 |
CN108415795A (zh) * | 2018-02-12 | 2018-08-17 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN108958843A (zh) * | 2018-07-12 | 2018-12-07 | 成都数字天空科技有限公司 | 基于轻量化脚本的插件构建方法、系统、设备及介质 |
CN109358857A (zh) * | 2018-08-22 | 2019-02-19 | 华为技术有限公司 | 镜像构建、镜像存储、镜像分发方法及装置 |
CN109491763A (zh) * | 2018-11-14 | 2019-03-19 | 北京奇艺世纪科技有限公司 | 一种系统部署方法、装置及电子设备 |
CN111124454A (zh) * | 2019-12-25 | 2020-05-08 | 南京医康科技有限公司 | 镜像构建方法与装置、电子设备、存储介质 |
CN111459509A (zh) * | 2020-03-27 | 2020-07-28 | 北京金山云网络技术有限公司 | 容器镜像的构建方法、装置和服务器 |
CN112256282A (zh) * | 2020-09-24 | 2021-01-22 | 深圳云天励飞技术股份有限公司 | 一种应用镜像的构建方法、装置、电子设备及存储介质 |
CN112256318A (zh) * | 2020-10-26 | 2021-01-22 | 上海云轴信息科技有限公司 | 一种用于依赖产品的构建方法及设备 |
CN112295229A (zh) * | 2020-10-28 | 2021-02-02 | 中国电子科技集团公司第二十八研究所 | 一种智能博弈对抗平台 |
CN113296879A (zh) * | 2020-10-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 容器创建方法以及装置 |
CN113378030A (zh) * | 2021-05-18 | 2021-09-10 | 上海德衡数据科技有限公司 | 搜索引擎的搜索方法、搜索引擎架构、设备及存储介质 |
CN114860350A (zh) * | 2022-07-07 | 2022-08-05 | 杭州子默网络科技有限公司 | 基于云无盘树状镜像的数据处理的方法及装置 |
US11429596B2 (en) | 2020-04-20 | 2022-08-30 | International Business Machines Corporation | Update for configuration file |
US20230091587A1 (en) * | 2021-09-17 | 2023-03-23 | Electronics And Telecommunications Research Institute | Docker image creation apparatus and method |
CN117389690A (zh) * | 2023-12-08 | 2024-01-12 | 中电云计算技术有限公司 | 镜像包的构建方法、装置、设备及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073582A (zh) * | 2010-07-30 | 2011-05-25 | 兰雨晴 | 基于冲突的软件包依赖关系检查方法 |
CN103167041A (zh) * | 2013-03-28 | 2013-06-19 | 广州中国科学院软件应用技术研究所 | 一种支持云环境应用集群自动化部署的系统及方法 |
US20130198717A1 (en) * | 2012-01-31 | 2013-08-01 | Sap Ag | Unified Software Build System |
CN103324474A (zh) * | 2013-05-22 | 2013-09-25 | 中标软件有限公司 | 基于Linux操作系统跨体系构造ISO的方法及模块 |
CN104077140A (zh) * | 2014-07-04 | 2014-10-01 | 用友软件股份有限公司 | 用于持续集成的自动化编译方法和编译装置 |
CN105404506A (zh) * | 2015-10-30 | 2016-03-16 | 广州云晫信息科技有限公司 | 一种云计算镜像文件的构建方法及系统 |
US20160274928A1 (en) * | 2015-03-20 | 2016-09-22 | International Business Machines Corporation | Virtual machine migration between hypervisor virtual machines and containers |
CN106227579A (zh) * | 2016-07-12 | 2016-12-14 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN106873975A (zh) * | 2016-12-30 | 2017-06-20 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化系统及方法 |
CN106933635A (zh) * | 2017-03-15 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
CN108829409A (zh) * | 2018-06-20 | 2018-11-16 | 泰华智慧产业集团股份有限公司 | 一种分布式系统快速部署方法及系统 |
-
2017
- 2017-08-04 CN CN201710660710.0A patent/CN107491329B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073582A (zh) * | 2010-07-30 | 2011-05-25 | 兰雨晴 | 基于冲突的软件包依赖关系检查方法 |
US20130198717A1 (en) * | 2012-01-31 | 2013-08-01 | Sap Ag | Unified Software Build System |
CN103167041A (zh) * | 2013-03-28 | 2013-06-19 | 广州中国科学院软件应用技术研究所 | 一种支持云环境应用集群自动化部署的系统及方法 |
CN103324474A (zh) * | 2013-05-22 | 2013-09-25 | 中标软件有限公司 | 基于Linux操作系统跨体系构造ISO的方法及模块 |
CN104077140A (zh) * | 2014-07-04 | 2014-10-01 | 用友软件股份有限公司 | 用于持续集成的自动化编译方法和编译装置 |
US20160274928A1 (en) * | 2015-03-20 | 2016-09-22 | International Business Machines Corporation | Virtual machine migration between hypervisor virtual machines and containers |
CN105404506A (zh) * | 2015-10-30 | 2016-03-16 | 广州云晫信息科技有限公司 | 一种云计算镜像文件的构建方法及系统 |
CN106227579A (zh) * | 2016-07-12 | 2016-12-14 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN106873975A (zh) * | 2016-12-30 | 2017-06-20 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化系统及方法 |
CN106933635A (zh) * | 2017-03-15 | 2017-07-07 | 北京搜狐新媒体信息技术有限公司 | Docker镜像生成方法及Docker容器 |
CN108829409A (zh) * | 2018-06-20 | 2018-11-16 | 泰华智慧产业集团股份有限公司 | 一种分布式系统快速部署方法及系统 |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108390920A (zh) * | 2018-02-02 | 2018-08-10 | 浙江臻善科技股份有限公司 | 基于web端的Docker镜像构建方法、装置、存储设备及终端设备 |
CN108415795A (zh) * | 2018-02-12 | 2018-08-17 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN108415795B (zh) * | 2018-02-12 | 2019-04-05 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN108958843A (zh) * | 2018-07-12 | 2018-12-07 | 成都数字天空科技有限公司 | 基于轻量化脚本的插件构建方法、系统、设备及介质 |
CN109358857A (zh) * | 2018-08-22 | 2019-02-19 | 华为技术有限公司 | 镜像构建、镜像存储、镜像分发方法及装置 |
CN109491763A (zh) * | 2018-11-14 | 2019-03-19 | 北京奇艺世纪科技有限公司 | 一种系统部署方法、装置及电子设备 |
CN111124454A (zh) * | 2019-12-25 | 2020-05-08 | 南京医康科技有限公司 | 镜像构建方法与装置、电子设备、存储介质 |
CN111124454B (zh) * | 2019-12-25 | 2024-03-19 | 医渡云(北京)技术有限公司 | 镜像构建方法与装置、电子设备、存储介质 |
CN111459509A (zh) * | 2020-03-27 | 2020-07-28 | 北京金山云网络技术有限公司 | 容器镜像的构建方法、装置和服务器 |
US11429596B2 (en) | 2020-04-20 | 2022-08-30 | International Business Machines Corporation | Update for configuration file |
CN112256282A (zh) * | 2020-09-24 | 2021-01-22 | 深圳云天励飞技术股份有限公司 | 一种应用镜像的构建方法、装置、电子设备及存储介质 |
CN112256282B (zh) * | 2020-09-24 | 2024-03-22 | 深圳云天励飞技术股份有限公司 | 一种应用镜像的构建方法、装置、电子设备及存储介质 |
CN112256318B (zh) * | 2020-10-26 | 2022-12-27 | 上海云轴信息科技有限公司 | 一种用于依赖产品的构建方法及设备 |
CN112256318A (zh) * | 2020-10-26 | 2021-01-22 | 上海云轴信息科技有限公司 | 一种用于依赖产品的构建方法及设备 |
CN112295229A (zh) * | 2020-10-28 | 2021-02-02 | 中国电子科技集团公司第二十八研究所 | 一种智能博弈对抗平台 |
CN113296879A (zh) * | 2020-10-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 容器创建方法以及装置 |
CN113296879B (zh) * | 2020-10-29 | 2024-03-08 | 阿里巴巴集团控股有限公司 | 容器创建方法以及装置 |
CN113378030A (zh) * | 2021-05-18 | 2021-09-10 | 上海德衡数据科技有限公司 | 搜索引擎的搜索方法、搜索引擎架构、设备及存储介质 |
US20230091587A1 (en) * | 2021-09-17 | 2023-03-23 | Electronics And Telecommunications Research Institute | Docker image creation apparatus and method |
CN114860350A (zh) * | 2022-07-07 | 2022-08-05 | 杭州子默网络科技有限公司 | 基于云无盘树状镜像的数据处理的方法及装置 |
CN117389690A (zh) * | 2023-12-08 | 2024-01-12 | 中电云计算技术有限公司 | 镜像包的构建方法、装置、设备及存储介质 |
CN117389690B (zh) * | 2023-12-08 | 2024-03-15 | 中电云计算技术有限公司 | 镜像包的构建方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107491329B (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491329A (zh) | Docker镜像构建方法、设备、存储介质以及电子装置 | |
US11093216B2 (en) | Automatic discovery of microservices from monolithic applications | |
Molloy | Exploring Raspberry Pi: interfacing to the real world with embedded Linux | |
EP3011442B1 (en) | Method and apparatus for customized software development kit (sdk) generation | |
CN108304201A (zh) | 对象更新方法、装置及设备 | |
CN108830720A (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
CN106462407A (zh) | 用于语言无关调度的代码服务 | |
CN103718164A (zh) | 虚拟计算机和服务 | |
CN104765621B (zh) | 一种在集群节点中部署程序的方法和系统 | |
US8756407B2 (en) | Configuration rule prototyping tool | |
CN109542459A (zh) | 应用程序打包方法及装置、计算机装置及计算机存储介质 | |
US10565314B2 (en) | Disambiguating concepts in natural language | |
CN105100127A (zh) | 用于验证在云计算环境中的应用部署拓扑的设备和方法 | |
CN105938525B (zh) | 虚拟机设备的基于目录的发现 | |
US11048485B2 (en) | User interface code re-use based upon machine learning of design documents | |
CN106951248A (zh) | 添加代码的方法、装置和可读存储介质 | |
CN109039788A (zh) | 网络设备的端口配置方法、装置和存储介质 | |
CN111399833A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN107239309A (zh) | 补丁生成方法及装置、更新方法、电子设备、存储介质 | |
CN109284126A (zh) | 类库自动更新方法、装置、电子设备、存储介质 | |
CN112966824A (zh) | 推理库的部署方法、装置和电子设备 | |
CN113454594A (zh) | 用于云服务的本机代码生成 | |
CN103970581A (zh) | 创建虚拟资源包的方法和设备 | |
US11061739B2 (en) | Dynamic infrastructure management and processing | |
US20180329688A1 (en) | Lossless bi-directional formatting of program source code |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |