CN107766052B - 一种构建容器镜像的方法和装置 - Google Patents
一种构建容器镜像的方法和装置 Download PDFInfo
- Publication number
- CN107766052B CN107766052B CN201710841510.5A CN201710841510A CN107766052B CN 107766052 B CN107766052 B CN 107766052B CN 201710841510 A CN201710841510 A CN 201710841510A CN 107766052 B CN107766052 B CN 107766052B
- Authority
- CN
- China
- Prior art keywords
- variable information
- target application
- matched
- mirror image
- structural body
- 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.)
- Expired - Fee Related
Links
Images
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
- 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
-
- 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/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Stored Programmes (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明实施例涉及容器技术领域,尤其涉及一种构建容器镜像的方法和装置,用于实现自动构建镜像,减少开发或运维人员的学习成本。获取目标应用所属的应用类型对应的模板文件;模板文件包括平台环境的配置信息和至少一个变量信息;获取至少一个变量信息对应的与目标应用匹配的待输入参数;根据平台环境配置信息、至少一个变量信息和至少一个变量信息对应的与目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行目标应用的镜像。如此,开发或运维人员只需要知道至少一个变量信息对应的与目标应用匹配的待输入参数,就可以实现自动构建运行目标应用类型的镜像,开发或运维人员无需学习镜像构建技术,可以减少学习成本。
Description
技术领域
本发明实施例涉及容器技术领域,尤其涉及一种构建容器镜像的方法和装置。
背景技术
在当前云计算架构中,特别是PaaS平台架构,通过容器技术作为各类应用运行的载体,从而实现运维自动化、开发运维一体化(DevOps)、微服务架构等应用场景。在这些应用场景中,容器镜像构建技术是必不可少的一个环节。
现有技术中的容器镜像构建过程,需要开发或运维人员根据实际需要设计运行某一类应用程序的镜像,所以开发或运维人员必须在构建之前先学习容器镜像构建技术。由于用于运行不同的应用程序的镜像不同,不同镜像的构建过程也不同,而且在应用组件迁移到PaaS平台的过程中还涉及到与平台兼容性配置的问题,开发或运维人员不一定可以构建一个比较精简、有效且可以正常运行的镜像。
因此,亟需一种构建容器镜像的方法,实现自动构建镜像,减少开发或运维人员的学习成本。
发明内容
本发明实施例提供一种构建容器镜像的方法和装置,用以实现自动构建镜像,减少开发或运维人员的学习成本。
本发明实施例提供一种构建容器镜像的方法,包括:获取目标应用所属的应用类型对应的模板文件;所述模板文件包括平台环境配置信息和至少一个变量信息;获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数;根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像。
可选的,所述根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像,包括:根据所述目标应用所属的应用类型对应的模板文件,确定出每个变量信息在所述模板文件中的目标位置;将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本;根据所述镜像构建脚本执行构建容器镜像命令,得到用于运行所述目标应用的镜像。
可选的,所述获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,包括:将所述至少一个变量信息显示在Web页面或所述目标应用的属性文件中;若监测到所述Web页面或所述目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与所述目标应用匹配的待输入参数。
可选的,所述模板文件中还包括所述至少一个变量信息对应的预设结构体;所述将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置之前,还包括:将获取的所述至少一对键值对解析成待匹配结构体;所述待匹配结构体与所述预设结构体的格式一致。
可选的,所述确定出每个变量信息在所述模板文件中的目标位置,将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本,包括:将所述待匹配结构体中的每个变量信息与所述预设结构体中的每个变量信息进行匹配;若确定所述待匹配结构体中的变量信息与所述预设结构体中的变量信息一致,则:将所述预设结构体中的变量信息对应的位置确定为所述目标位置;将所述目标位置处的变量信息删除,并将所述待匹配结构体中变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,得到镜像构建脚本。
可选的,所述根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像之前,还包括:根据与所述目标应用匹配的待输入参数确定所述用于运行所述目标应用的镜像的名称。
本发明实施例提供一种用于构建容器镜像的装置,包括:获取单元,用于获取目标应用所属的应用类型对应的模板文件;获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数;所述模板文件包括平台环境配置信息和至少一个变量信息;镜像构建单元,用于根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像。
可选的,所述镜像构建单元,用于:根据所述目标应用所属的应用类型对应的模板文件,确定出每个变量信息在所述模板文件中的目标位置;将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本;根据所述镜像构建脚本执行构建容器镜像命令,得到用于运行所述目标应用的镜像。
可选的,所述获取单元,用于:将所述至少一个变量信息显示在Web页面或所述目标应用的属性文件中;若监测到所述Web页面或所述目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与所述目标应用匹配的待输入参数。
可选的,所述模板文件中还包括所述至少一个变量信息对应的预设结构体;所述装置还包括解析单元,用于:将获取的所述至少一对键值对解析成待匹配结构体;所述待匹配结构体与所述预设结构体的格式一致。
可选的,所述镜像构建单元,还用于:将所述待匹配结构体中的每个变量信息与所述预设结构体中的每个变量信息进行匹配;若确定所述待匹配结构体中的变量信息与所述预设结构体中的变量信息一致,则:将所述预设结构体中的变量信息对应的位置确定为所述目标位置;将所述目标位置处的变量信息删除,并将所述待匹配结构体中变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,得到镜像构建脚本。
可选的,所述镜像构建单元,还用于:根据与所述目标应用匹配的待输入参数确定所述用于运行所述目标应用的镜像的名称。
本发明实施例中,获取目标应用所属的应用类型对应的模板文件;模板文件包括平台环境的配置信息和至少一个变量信息;获取至少一个变量信息对应的与目标应用匹配的待输入参数;根据平台环境配置信息、至少一个变量信息和至少一个变量信息对应的与目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行目标应用的镜像。如此,开发或运维人员只需要知道至少一个变量信息对应的与目标应用匹配的待输入参数,就可以实现自动构建运行目标应用类型的镜像,开发或运维人员无需学习镜像构建技术,可以减少学习成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。
图1为本发明实施例提供的一种构建容器镜像的方法流程示意图;
图2为本发明实施例提供的包括属性文件的目录结构示意图;
图3为本发明实施例提供的另一种构建容器镜像的方法流程示意图;
图4为本发明实施例提供的一种用于构建容器镜像的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的镜像构建方法适用于所有通过镜像构建脚本构建镜像的场景,主要涉及的镜像类型包括但不限于Docker容器类镜像。由于不同类型的应用程序的镜像不同,用于构建不同的镜像的模板文件也不同。为了避免每次构建镜像都需要编写用于构建镜像的所有信息,本发明实施例通过选择一个预先制定的目标应用所属的应用类型对应的模板文件,获取变量信息对应的待输入参数,并执行构建容器镜像命令,实现简化构建镜像过程。
图1示例性示出了本发明实施例提供的一种构建容器镜像的方法流程示意图。如图1所示,本发明实施例提供的构建镜像方法包括以下步骤:
步骤101:获取目标应用所属的应用类型对应的模板文件;模板文件包括平台环境配置信息和至少一个变量信息;
步骤102:获取至少一个变量信息对应的与所述目标应用匹配的待输入参数;
步骤103:根据平台环境的配置信息、至少一个变量信息和至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行目标应用的镜像。
本发明实施例中,获取目标应用所属的应用类型对应的模板文件;模板文件包括平台环境的配置信息和至少一个变量信息;获取至少一个变量信息对应的与目标应用匹配的待输入参数;根据平台环境配置信息、至少一个变量信息和至少一个变量信息对应的与目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行目标应用的镜像。如此,开发或运维人员只需要知道至少一个变量信息对应的与所述目标应用匹配的待输入参数,就可以实现自动构建运行目标应用类型的镜像,开发或运维人员无需学习镜像构建技术,可以减少学习成本。
本发明实施例中,获取目标应用所属的应用类型对应的模板文件的实现方式有多种。一种可选的实现方式为,制定一个通用型的模板文件,可以用来构建用于运行各种类型应用的镜像,各种类型应用可以但不限于以下类型:Java应用类型、PHP应用类型、Go/C/C++应用类型。另一种可选的实现方式为,制定多份具有应用类型通用型的模板文件,也就是说,为每种类型应用制备模板文件,用于构建运行该类型应用的镜像;比如,针对Java应用类型,制备一个适用于Java应用类型的模板文件。
本发明实施例中,每个模板文件中包括用于运行目标应用类型的平台环境配置信息和至少一个变量信息。举个例子,目标应用为Java应用1,属于Java应用类型,与Java应用1属于同一应用类型的应用还有Java应用2和Java应用3,在构建用于运行Java应用1、Java应用2和Java应用3的镜像时,可以使用同一个Java应用类型的模板文件。
上述实施例中,平台环境配置信息为平台相关的配置项,比如平台的兼容性要求、平台的特殊性要求等配置内容。可选的,每个与目标应用所属的应用类型一致的应用的平台环境配置信息相同。也就是说,Java应用1、Java应用2和Java应用3的平台环境配置信息相同,不需要进行分别设置,所以可以在模板文件中预先设置,在构建目标应用的镜像时不需要将平台环境配置信息暴露给开发或运维人员,从而可以简化构建镜像过程,减少开发或运维人员工作量。
本发明实施例中,模板文件中的使用的语言有多种,本发明实施例以Go语言为例,以下提供一个包括变量信息的模板文件的示例。
示例1:
FROM{{.BaseImage}}
MAINTAINER{{.UserName}}
RUN{{.LinuxBaseCmd}}
COPY package/*/{{.AppName}}/
COPY script/run.sh{{.CmdDir}}
RUN rpm-ivh/{{.AppName}}/*.rpm&&rm-r/{{.AppName}}/*.rpm
COPY config/*{{.ConfigDir}}
RUN rm-fr{{.LogDir}}
RUN ln-sf/wae/log{{.LogDir}}
WORKDIR{{.Workdir}}
CMD["{{.CmdDir}}run.sh"]
上述示例1中,大括号{{.}}中的内容为至少一个变量信息,比如基础镜像(BaseImage),用户名称(UserName)和Linux基本命令(LinuxBaseCmd)等。
基于步骤102,每个与目标应用所属的应用类型一致的应用的待输入参数不同。举个例子,比如在构建用于运行Java应用1的镜像时,需要获取Java应用1匹配的待输入参数;在构建用于运行Java应用2的镜像时,需要获取Java应用2匹配的待输入参数。在构建用于运行目标应用的镜像时,需要将模板文件中的至少一个变量信息暴露给开发或运维人员,开发或运维人员输入每个变量信息对应的与目标应用匹配的待输入参数。
本发明提供一种获取至少一个变量信息对应的与所述目标应用匹配的待输入参数的实现方式,将至少一个变量信息显示在Web页面或目标应用的属性文件中;在监测到Web页面或目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与目标应用匹配的待输入参数。
可选的,属性文件包括但不限于JSON文件、XML文件、YAML文件等文件。若是将至少一个变量信息显示在属性文件中,以JSON文件为例,那么可以在文件展示的目录结构中查找到JSON文件,图2示例性示出了本发明实施例提供的包括属性文件的目录结构示意图。如图2所示,在目录结构中的父目录wplus-console的子目录中找到子目录info,再找到目录info的JSON文件appInfo.json,JSON文件中包括至少一个变量信息。
以下提供一个将变量信息展示在Web页面或属性文件中的示例。
示例2:
上述示例2中,每一行包括一个变量信息,比如第一行包括变量信息:基础镜像(BaseImage),第二行包括变量信息:命名空间(Namespace)等。
基于示例2,开发或运维人员在Web页面或属性文件中填写至少一个变量信息对应的与目标应用匹配的待输入参数,之后,获取以变量信息为关键字,以该变量信息对应的与目标应用匹配的待输入参数为值的键值对。
基于示例2中展示的变量信息,以下提供至少一对键值对的示例。
示例3:
上述示例2中,每一行的中包括一对键值对,举个例子,比如第一行中,关键字为变量信息:BaseImage,其值为:与目标应用匹配的待输入参数为registry.wae.haplat.net/base/java:7;再比如第二行中,关键字为变量信息:Namespace,其值为:与目标应用匹配的待输入参数为wplus。本发明实施例中向开发或运维人员暴露至少一个变量信息,开发或运维人员只需要输入至少一个变量信息对应的与目标应用匹配的待输入参数。如此,开发或运维人员不需要编写与平台相关的配置信息,无需关注不同的平台兼容配置问题,从而实现简单高效的自动化构建镜像过程。
本发明实施例中,构建镜像需要先创建一个镜像构建脚本。创建镜像构建脚本的过程并不需要开发和运维人员了解,可以根据平台环境的配置信息、至少一个变量信息和至少一个变量信息对应的与所述目标应用匹配的待输入参数,自动构建用于运行目标应用的镜像。
下面对本发明实施例如何自动创建镜像构建脚本并构建镜像过程进行详细介绍。
基于步骤102,在获取到与目标应用匹配的待输入参数之后,根据平台环境配置信息、至少一个变量信息和至少一个变量信息对应的与目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行目标应用的镜像,包括:根据目标应用所属的应用类型对应的模板文件,确定出每个变量信息在模板文件中的目标位置;将每个变量信息对应的与目标应用匹配的待输入参数填充至目标位置,并根据填充后的模板文件生成镜像构建脚本;根据镜像构建脚本执行构建容器镜像命令,得到用于运行目标应用的镜像。
结合示例1、示例3举个例子,在示例1中的模板文件中包括至少一条包括变量信息的命令,比如FROM{{.BaseImage}},命令为:基于一个基础镜像构建用于运行目标应用的镜像。首先,确定出变量信息BaseImage在模板文件中的位置,作为目标位置;之后,获取示例3中变量信息BaseImage对应的待输入参数registry.wae.haplat.net/base/java:7,并将该待输入参数填充至示例1中的模板文件中变量信息BaseImage对应的目标位置,即可得到镜像构建脚本。如此,可以简化构建镜像的过程,实现自动构建镜像。
本发明实施例中,所述模板文件中还包括所述至少一个变量信息对应的预设结构体;将每个变量信息对应的与目标应用匹配的待输入参数填充至目标位置之前,还包括:将获取的至少一对键值对解析成待匹配结构体;其中,待匹配结构体与预设结构体的格式一致。举个例子,当用户在AppInfo.json文件中输入至少一个变量信息对应的待输入参数时,即可通过json.Unmarshal函数将从AppInfo.json文件中获取的至少一个键值对解析成待匹配结构体。再将该待匹配结构体通过模板处理方式解析生成构建镜像脚本,其中模板处理方式可以通过text/template包或http/template包的模板处理功能实现。
本发明实施例提供一种确定出每个变量信息在所述模板文件中的目标位置,将每个变量信息对应的与目标应用匹配的待输入参数填充至目标位置得到镜像构建脚本的实施方式:将所述待匹配结构体中的每个变量信息与所述预设结构体中的每个变量信息进行匹配;若确定所述待匹配结构体中的变量信息与所述预设结构体中的变量信息一致,则:将所述预设结构体中的变量信息对应的位置确定为所述目标位置;将所述目标位置的变量信息删除,并将所述待匹配结构体中变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,得到镜像构建脚本。
本发明实施例中,镜像构建脚本不局限于Dockerfile文件,可以是任何镜像构建文件,以下提供一种根据示例3中的键值对和模板文件得到的镜像构建脚本的示例。
示例4:
FROM registry.wae.haplat.net/base/java:7
MAINTAINER huwh
RUN yum install-y file
COPY package/*/wplus-console/
COPY script/run.sh/usr/local/bin/
RUN rpm-ivh/wplus-console/*.rpm&&rm-r/wplus-console/*.rpm
COPY config/*/usr/local/wsop/console/conf/
RUN rm-fr/usr/local/wsop/console/logs
RUN ln-sf/wae/log/usr/local/wsop/console/logs
WORKDIR/usr/local/wsop/console/
CMD["/usr/local/bin/run.sh"]
根据示例4中的镜像构建脚本,执行镜像构建命令,可以实现一键式自动构建镜像。本发明实施例中,在执行构建容器镜像命令得到用于运行目标应用的镜像之前,还包括:根据与目标应用匹配的待输入参数确定用于运行目标应用的镜像的名称。一种可选的实施方式为,根据与目标应用匹配的待输入参数中的任多项确定镜像名称,举个例子,比如镜像名称命名由如下变量信息对应的待输入参数确定:
<docker-registry-url>/<namespace>/<app-name>:<version>;
其中,变量信息docker-registry-url为镜像中心地址,一般指的是域名,例如,其对应的待输入参数为registry.wae.haplat.net;变量信息namespace为命名空间,例如,其对应的待输入参数为wplus;变量信息app-name为应用名称,例如,其对应的待输入参数为wplus-console;变量信息version为应用版本号,例如,其对应的待输入参数为1.4.1-1;该例子中镜像的名称为:registry.wae.haplat.net/wplus/wplus-console:1.4.1-1./。
在生成镜像之后,即可将镜像推送到镜像仓库供后续验证及应用部署。所需使用到的命令如下:
查看镜像:docker images
推送镜像:docker push registry.wae.haplat.net/wplus/wplus-console:1.4.1-1。
为了更清楚的介绍上述方法流程,本发明实施例再提供一个示例。
图3示例性示出了本发明实施例提供的一种版本文件升级方法流程示意图,如图3所示,本发明实施例提供的一种版本文件升级方法,该方法包括以下步骤:
步骤301:获取目标应用所属的应用类型对应的模板文件;模板文件包括平台环境配置信息和至少一个变量信息;
步骤302:将至少一个变量信息显示在Web页面或目标应用的属性文件中;
步骤303:若监测到Web页面或目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与目标应用匹配的待输入参数;
步骤304:将获取的至少一对键值对解析成待匹配结构体;所述模板文件中包括所述至少一个变量信息对应的预设结构体,待匹配结构体与预设结构体的格式一致;
步骤305:针对待匹配结构体中的每个变量信息,将待匹配结构体中的该变量信息与预设结构体中的每个变量信息进行匹配;
步骤306:从预设结构体中确定出与待匹配结构体中的该变量信息一致的变量信息;
步骤307:将预设结构体中确定出的与待匹配结构体中的该变量信息一致的变量信息对应的位置确定为目标位置;
步骤308:将目标位置处的变量信息删除,并将待匹配结构体中变量信息对应的与目标应用匹配的待输入参数填充至目标位置,得到镜像构建脚本;
步骤309:根据镜像构建脚本执行构建容器镜像命令,得到用于运行目标应用的镜像。
通过上述实施例可以看出,本发明实施例中,获取目标应用所属的应用类型对应的模板文件;模板文件包括平台环境的配置信息和至少一个变量信息;获取至少一个变量信息对应的与目标应用匹配的待输入参数;根据平台环境配置信息、至少一个变量信息和至少一个变量信息对应的与目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行目标应用的镜像。如此,开发或运维人员只需要知道至少一个变量信息对应的与目标应用匹配的待输入参数,就可以实现自动构建运行目标应用类型的镜像,开发或运维人员无需学习镜像构建技术,可以减少学习成本。
基于以上实施例以及相同构思,图4为本发明实施例提供的一种用于构建镜像的装置结构示意图,如图4所示,该用于构建镜像的装置400可以对应上述方法中的用于构建镜像的装置。该用于构建镜像的装置可以实现如上图1中所示的任一项或任多项对应的方法中用于构建镜像的装置所执行的步骤。该用于构建镜像的装置400可以包括获取单元401、镜像构建单元403;可选的,还包括解析单元402。
获取单元401,用于获取目标应用所属的应用类型对应的模板文件;获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数;所述模板文件包括平台环境配置信息和至少一个变量信息;
镜像构建单元403,用于根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像。
本发明实施例中,开发或运维人员只需要知道至少一个变量信息对应的与目标应用匹配的待输入参数,将与目标应用匹配的待输入参数输入至模板文件中,就可以实现自动构建运行目标应用类型的镜像,开发或运维人员无需学习镜像构建技术,可以减少学习成本。
可选的,所述镜像构建单元403,用于:根据所述目标应用所属的应用类型对应的模板文件,确定出每个变量信息在所述模板文件中的目标位置;将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本;根据所述镜像构建脚本执行构建容器镜像命令,得到用于运行所述目标应用的镜像。
可选的,所述获取单元401,用于:将所述至少一个变量信息显示在Web页面或所述目标应用的属性文件中;若监测到所述Web页面或所述目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与所述目标应用匹配的待输入参数。
可选的,所述模板文件中还包括所述至少一个变量信息对应的预设结构体;所述装置还包括解析单元402,用于:将获取的所述至少一对键值对解析成待匹配结构体;所述待匹配结构体与所述预设结构体的格式一致;所述镜像构建单元403,用于:将所述待匹配结构体中的每个变量信息与所述预设结构体中的每个变量信息进行匹配;若确定所述待匹配结构体中的变量信息与所述预设结构体中的变量信息一致,则:将所述预设结构体中的变量信息对应的位置确定为所述目标位置;将所述目标位置处的变量信息删除,并将所述待匹配结构体中变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,得到镜像构建脚本。
可选的,所述镜像构建单元403,还用于:根据与所述目标应用匹配的待输入参数确定所述用于运行所述目标应用的镜像的名称。
该用于构建镜像的装置所涉及的与本发明实施例提供的技术方案相关的概念,解释和详细说明及其他步骤请参见前述方法或其他实施例中关于这些内容的描述,此处不做赘述。
需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本发明的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种构建容器镜像的方法,其特征在于,包括:
获取目标应用所属的应用类型对应的模板文件;所述模板文件包括平台环境配置信息和至少一个变量信息;所述模板文件为预先制定的具有应用类型通用型的模板文件,相同应用类型的模板文件相同;
获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数;
根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像。
2.如权利要求1所述的方法,其特征在于,所述根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像,包括:
根据所述目标应用所属的应用类型对应的模板文件,确定出每个变量信息在所述模板文件中的目标位置;
将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本;
根据所述镜像构建脚本执行构建容器镜像命令,得到用于运行所述目标应用的镜像。
3.如权利要求2所述的方法,其特征在于,所述获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,包括:
将所述至少一个变量信息显示在Web页面或所述目标应用的属性文件中;
若监测到所述Web页面或所述目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与所述目标应用匹配的待输入参数。
4.如权利要求3所述的方法,其特征在于,所述模板文件中还包括所述至少一个变量信息对应的预设结构体;所述将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置之前,还包括:
将获取的所述至少一对键值对解析成待匹配结构体;所述待匹配结构体与所述预设结构体的格式一致。
5.如权利要求4所述的方法,其特征在于,所述确定出每个变量信息在所述模板文件中的目标位置,将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本,包括:
将所述待匹配结构体中的每个变量信息与所述预设结构体中的每个变量信息进行匹配;
若确定所述待匹配结构体中的变量信息与所述预设结构体中的变量信息一致,则:
将所述预设结构体中的变量信息对应的位置确定为所述目标位置;
将所述目标位置处的变量信息删除,并将所述待匹配结构体中变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,得到镜像构建脚本。
6.如权利要求1-5任一项权利要求所述的方法,其特征在于,所述根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像之前,还包括:
根据与所述目标应用匹配的待输入参数确定所述用于运行所述目标应用的镜像的名称。
7.一种用于构建容器镜像的装置,其特征在于,包括:
获取单元,用于获取目标应用所属的应用类型对应的模板文件;所述模板文件包括平台环境配置信息和至少一个变量信息;所述模板文件为预先制定的具有应用类型通用型的模板文件,相同应用类型的模板文件相同;获取所述至少一个变量信息对应的与所述目标应用匹配的待输入参数;
镜像构建单元,用于根据所述平台环境配置信息、所述至少一个变量信息和所述至少一个变量信息对应的与所述目标应用匹配的待输入参数,执行构建容器镜像命令得到用于运行所述目标应用的镜像。
8.如权利要求7所述的装置,其特征在于,所述镜像构建单元,用于:
根据所述目标应用所属的应用类型对应的模板文件,确定出每个变量信息在所述模板文件中的目标位置;
将所述每个变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,并根据填充后的模板文件生成镜像构建脚本;
根据所述镜像构建脚本执行构建容器镜像命令,得到用于运行所述目标应用的镜像。
9.如权利要求8所述的装置,其特征在于,所述获取单元,用于:
将所述至少一个变量信息显示在Web页面或所述目标应用的属性文件中;
若监测到所述Web页面或所述目标应用的属性文件中存在数据输入,则获取每个变量信息和每个变量信息对应的输入的数据组成的至少一对键值对;每对键值对包括的关键字为变量信息,值为该变量信息对应的与所述目标应用匹配的待输入参数。
10.如权利要求9所述的装置,其特征在于,所述模板文件中还包括所述至少一个变量信息对应的预设结构体;所述装置还包括解析单元,用于:
将获取的所述至少一对键值对解析成待匹配结构体;所述待匹配结构体与所述预设结构体的格式一致。
11.如权利要求10所述的装置,其特征在于,所述镜像构建单元,还用于:
将所述待匹配结构体中的每个变量信息与所述预设结构体中的每个变量信息进行匹配;
若确定所述待匹配结构体中的变量信息与所述预设结构体中的变量信息一致,则:
将所述预设结构体中的变量信息对应的位置确定为所述目标位置;
将所述目标位置处的变量信息删除,并将所述待匹配结构体中变量信息对应的与所述目标应用匹配的待输入参数填充至所述目标位置,得到镜像构建脚本。
12.如权利要求7-11中任一项权利要求所述的装置,其特征在于,所述镜像构建单元,还用于:
根据与所述目标应用匹配的待输入参数确定所述用于运行所述目标应用的镜像的名称。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710841510.5A CN107766052B (zh) | 2017-09-18 | 2017-09-18 | 一种构建容器镜像的方法和装置 |
US16/316,443 US20210373870A1 (en) | 2017-09-18 | 2017-10-19 | Method and device for building images |
PCT/CN2017/106896 WO2019051919A1 (zh) | 2017-09-18 | 2017-10-19 | 一种构建镜像的方法和装置 |
EP17924930.5A EP3522005A4 (en) | 2017-09-18 | 2017-10-19 | MIRROR IMAGE CONSTRUCTION METHOD AND APPARATUS |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710841510.5A CN107766052B (zh) | 2017-09-18 | 2017-09-18 | 一种构建容器镜像的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766052A CN107766052A (zh) | 2018-03-06 |
CN107766052B true CN107766052B (zh) | 2020-09-25 |
Family
ID=61266059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710841510.5A Expired - Fee Related CN107766052B (zh) | 2017-09-18 | 2017-09-18 | 一种构建容器镜像的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210373870A1 (zh) |
EP (1) | EP3522005A4 (zh) |
CN (1) | CN107766052B (zh) |
WO (1) | WO2019051919A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124596A (zh) * | 2018-11-01 | 2020-05-08 | 千寻位置网络有限公司 | 基于容器的发布管理方法及其系统 |
US20200244772A1 (en) * | 2019-01-30 | 2020-07-30 | Huawei Technologies Co., Ltd. | Method and system for cloud application and service integration using pattern-based discovery |
CN110058863A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | Docker容器的构建方法、装置、设备及存储介质 |
CN110187912B (zh) * | 2019-05-16 | 2022-03-29 | 华为技术有限公司 | 一种节点选择方法和装置 |
CN113448597A (zh) * | 2020-03-26 | 2021-09-28 | 顺丰科技有限公司 | 容器镜像的模板管理方法、装置、设备及存储介质 |
CN111930419B (zh) * | 2020-07-30 | 2021-08-10 | 深圳市威富视界有限公司 | 基于深度学习模型的代码包生成方法和系统 |
CN112015376A (zh) * | 2020-08-21 | 2020-12-01 | 广州欢网科技有限责任公司 | 一种生成Dockerfile的方法和装置 |
CN112363806B (zh) * | 2020-11-23 | 2023-09-22 | 北京信安世纪科技股份有限公司 | 一种集群管理方法、装置、电子设备及存储介质 |
CN115840588A (zh) * | 2023-02-14 | 2023-03-24 | 北京万里红科技有限公司 | 应用于debian系统的基于VSCode环境制作ISO镜像的方法 |
CN116560722B (zh) * | 2023-07-12 | 2024-01-02 | 腾讯科技(深圳)有限公司 | 运维流程处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580519A (zh) * | 2015-01-29 | 2015-04-29 | 福建师范大学福清分校 | 一种快速部署openstack云计算平台的方法 |
CN106406978A (zh) * | 2016-08-31 | 2017-02-15 | 武汉钢信软件有限公司 | 私有云虚拟机模板自动制作装置及方法 |
CN106406951A (zh) * | 2016-09-20 | 2017-02-15 | 杭州昆海信息技术有限公司 | 一种操作系统的安装方法和装置 |
CN106790595A (zh) * | 2016-12-29 | 2017-05-31 | 上海理想信息产业(集团)有限公司 | 一种Docker容器主动负载均衡装置及方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8689177B2 (en) * | 2009-08-31 | 2014-04-01 | Accenture Global Services Limited | Integration environment generator |
CN101697135B (zh) * | 2009-10-28 | 2012-06-27 | 东方网力科技股份有限公司 | 一种编译程序的方法及装置 |
CN101819530A (zh) * | 2010-04-30 | 2010-09-01 | 山东中创软件工程股份有限公司 | 一种程序对象生成方法、装置及计算机 |
US8739150B2 (en) * | 2010-05-28 | 2014-05-27 | Smartshift Gmbh | Systems and methods for dynamically replacing code objects via conditional pattern templates |
US8589867B2 (en) * | 2010-06-18 | 2013-11-19 | Microsoft Corporation | Compiler-generated invocation stubs for data parallel programming model |
CN103186376B (zh) * | 2011-12-30 | 2018-06-05 | 百度在线网络技术(北京)有限公司 | 一种用于建立或更新软件开发环境的方法、装置和设备 |
CN103294450B (zh) * | 2012-02-22 | 2018-04-06 | 腾讯科技(深圳)有限公司 | 应用发布方法及系统 |
US20160350081A1 (en) * | 2015-05-27 | 2016-12-01 | Runnable Inc. | Automatic container definition |
KR101831430B1 (ko) * | 2015-10-27 | 2018-02-22 | 삼성에스디에스 주식회사 | 인프라의 설치와 구성을 자동화하는 장치 및 그 방법 |
CN105404506A (zh) * | 2015-10-30 | 2016-03-16 | 广州云晫信息科技有限公司 | 一种云计算镜像文件的构建方法及系统 |
US10761857B2 (en) * | 2015-11-29 | 2020-09-01 | Hewlett Packard Enterprise Development Lp | Hardware management |
CN106657248A (zh) * | 2016-11-01 | 2017-05-10 | 山东大学 | 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法 |
CN106802807B (zh) * | 2017-02-20 | 2020-07-24 | 深圳市冬泉谷信息技术有限公司 | 基于容器平台的应用交付方法、容器平台及应用交付系统 |
CN106874052B (zh) * | 2017-02-24 | 2020-06-26 | 北京中电普华信息技术有限公司 | 一种应用程序的部署方法和装置 |
-
2017
- 2017-09-18 CN CN201710841510.5A patent/CN107766052B/zh not_active Expired - Fee Related
- 2017-10-19 WO PCT/CN2017/106896 patent/WO2019051919A1/zh unknown
- 2017-10-19 US US16/316,443 patent/US20210373870A1/en not_active Abandoned
- 2017-10-19 EP EP17924930.5A patent/EP3522005A4/en not_active Withdrawn
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580519A (zh) * | 2015-01-29 | 2015-04-29 | 福建师范大学福清分校 | 一种快速部署openstack云计算平台的方法 |
CN106406978A (zh) * | 2016-08-31 | 2017-02-15 | 武汉钢信软件有限公司 | 私有云虚拟机模板自动制作装置及方法 |
CN106406951A (zh) * | 2016-09-20 | 2017-02-15 | 杭州昆海信息技术有限公司 | 一种操作系统的安装方法和装置 |
CN106790595A (zh) * | 2016-12-29 | 2017-05-31 | 上海理想信息产业(集团)有限公司 | 一种Docker容器主动负载均衡装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019051919A1 (zh) | 2019-03-21 |
US20210373870A1 (en) | 2021-12-02 |
EP3522005A4 (en) | 2019-12-18 |
CN107766052A (zh) | 2018-03-06 |
EP3522005A1 (en) | 2019-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766052B (zh) | 一种构建容器镜像的方法和装置 | |
US9983892B2 (en) | Deep linking to mobile application states through programmatic replay of user interface events | |
CN108279932B (zh) | 一种移动终端动态配置用户界面方法和装置 | |
US20170185617A1 (en) | Data Object Based Application State Sharing Methods for User Devices | |
US20160350081A1 (en) | Automatic container definition | |
US9898471B1 (en) | Computer implemented system and method, and computer program product, for generic source control for orchestration workflows | |
US11341589B2 (en) | Method and system for providing a cooperative working environment that facilitates management of property | |
US10007532B1 (en) | Data infrastructure for cross-platform cross-device API inter-connectivity | |
US10901804B2 (en) | Apparatus and method to select services for executing a user program based on a code pattern included therein | |
US20180150302A1 (en) | Method for Extracting BIOS Attributes for BIOS Management and System Therefor | |
US20160028672A1 (en) | Message Controlled Application and Operating System Image Development and Deployment | |
US20210271493A1 (en) | Remote Component Loader | |
CN112685036A (zh) | 前端代码生成方法、装置、计算机设备及存储介质 | |
US9367299B2 (en) | Preventing application downgrade in an application store | |
CN109213498A (zh) | 一种互联网web前端的配置方法及服务器 | |
US9886272B1 (en) | Transformation of a web application into a hybrid mobile application | |
CN110532016B (zh) | 版本管理方法、版本更新方法和版本管理系统 | |
Rattanapoka et al. | An MQTT-based IoT cloud platform with flow design by Node-RED | |
Challita et al. | Model-based cloud resource management with TOSCA and OCCI | |
US20130282908A1 (en) | Method and System for Deploying and Modifying a Service-Oriented Architecture Deployment Environment | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
US9509761B2 (en) | Open user interface | |
CN112527459B (zh) | 一种基于Kubernetes集群的日志分析方法及装置 | |
CN110083366B (zh) | 应用运行环境的生成方法、装置、计算设备及存储介质 | |
CN112596854A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20200925 |
|
CF01 | Termination of patent right due to non-payment of annual fee |