CN109271198A - 基于Docker容器的镜像打包方法、装置及电子设备 - Google Patents

基于Docker容器的镜像打包方法、装置及电子设备 Download PDF

Info

Publication number
CN109271198A
CN109271198A CN201810937024.8A CN201810937024A CN109271198A CN 109271198 A CN109271198 A CN 109271198A CN 201810937024 A CN201810937024 A CN 201810937024A CN 109271198 A CN109271198 A CN 109271198A
Authority
CN
China
Prior art keywords
mirror image
packet
docker
container
image packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810937024.8A
Other languages
English (en)
Inventor
张欢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201810937024.8A priority Critical patent/CN109271198A/zh
Publication of CN109271198A publication Critical patent/CN109271198A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified

Landscapes

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

Abstract

本申请涉及计算虚拟化服务技术领域,公开了一种基于Docker容器的镜像打包方法、装置及电子设备,其中,基于Docker容器的镜像打包方法包括:从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取基础Docker容器镜像包,基础Docker容器镜像包包括中间件和底层操作***;基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,目标镜像包被打包在Docker中。本申请实施例的方法,将原有的复杂的打包操作集中在一起快速完成,极大提高打包效率,而且不需要借助于中间件容器,避免了中间件容器带来的应用环境等额外因素导致的问题。

Description

基于Docker容器的镜像打包方法、装置及电子设备
技术领域
本申请涉及计算虚拟化服务技术领域,具体而言,本申请涉及一种基于Docker容器的镜像打包方法、装置及电子设备。
背景技术
Docker(容器)是PaaS提供商DotCloud开源的一个基于LXC(Linux container,Linux容器)的高级容器引擎,使用客户端/服务器架构模式,使用OPEN API来管理容器整个生命周期。
镜像(Image)是构建容器的基础,镜像是一种分层结构的文件***。一个只读层被称为镜像,一个镜像是永久不会变的,并且镜像是不可写、无状态的。Docker使用一个统一文件***,Docker进程认为整个文件***是以读写方式挂载的,但是所有的变更都发生顶层的可写层,而下层的原始的只读镜像文件并未变化。
业界现有的基于Docker的镜像打包方法,需要借助于平台提供的中间件容器来完成待打包应用程序的打包,得到相应的应用包,接着将得到的应用包与基础镜像包再次打包成整体。然而,采用上述打包方法,不仅打包过程繁琐,导致效率低下,而且当中间件容器出现故障时,需要开发人员、中间件容器提供方及运维人员等众多人员的共同参与,消耗大量人力资源,且不利于故障的快速解决。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特别是需要借助于平台提供的中间件容器来完成待打包应用程序的打包的技术缺陷。
第一方面,提供了一种基于Docker容器的镜像打包方法,包括:
从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取基础Docker容器镜像包,基础Docker容器镜像包包括中间件和底层操作***;
基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,目标镜像包被打包在Docker中。
第二方面,提供了一种基于Docker容器的镜像打包装置,包括:
获取模块,用于从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取基础Docker容器镜像包,基础Docker容器镜像包包括中间件和底层操作***;
第一处理模块,用于基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,目标镜像包被打包在Docker中。
第三方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现上述的基于Docker容器的镜像打包方法。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述的基于Docker容器的镜像打包方法。
本申请实施提供的基于Docker容器的镜像打包方法,从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取基础Docker容器镜像包,为后续基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理提供前提保障;基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,使得可以直接将原始应用包以及基础Docker容器镜像包打包成一个整体镜像包,从而将原有的复杂的打包操作集中在一起快速完成,极大提高打包效率,而且不需要借助于中间件容器,避免了中间件容器带来的应用环境等额外因素导致的问题,另外,即使打包过程出现故障,也不需要中间件容器提供方人员的参与,节约了人力资源。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本申请实施例的基于Docker容器的镜像打包方法的流程示意图;
图2为本申请实施例的基于Docker容器的镜像打包装置的基本结构示意图;
图3为本申请实施例的基于Docker容器的镜像打包装置的详细结构示意图;
图4为本申请实施例的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
业界现在的docker平台部署的基本流程是:平台提供中间件容器,接着通过构建工具将待打包的应用程序打包,得到相应的应用包,接着关闭该应用程序提供的服务,接着将应用包存储至容器中指定目录,接着重启该应用程序提供的服务。这种操作流程不仅繁琐,而且效率低下。
本申请提供的基于Docker容器的镜像打包方法、装置及电子设备,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
实施例一
本申请实施例提供了一种基于Docker容器的镜像打包方法,如图1所示,包括:
步骤S100,从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取基础Docker容器镜像包,基础Docker容器镜像包包括中间件和底层操作***。
具体地,预设版本控制***的仓库包括仓库git(分布式版本控制***)或仓库svn(svn是Subversion的简称,是一个开放源代码的版本控制***),即可以通过Jenkins在仓库git或svn中获取待打包的应用的源代码。其中,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,可以提供一个开放易用的软件平台,使软件的持续集成成为可能。
进一步地,在获取到待打包的源代码之后,可以通过相应的打包工具(例如Maven)对待打包的源代码进行打包处理,得到上述的原始应用包。其中,通过Maven对待打包的源代码进行打包处理,实际上是通过Maven提供的jetty选项,对获取到的待打包的源代码进行相应的编译操作,从而得到上述的原始应用包。其中,jetty选项需要在Maven的配置文件pom.xml中进行预先配置。
进一步地,可以从预设Docker私服中获取基础Docker容器镜像包,即可以获取Docker私服中存储的基础Docker容器镜像包,即从Docker私服中获取基础Docker容器镜像包,此外的Docker私服即为开源应用容器引擎Docker的服务器。其中,基础Docker容器镜像包包括但不限于中间件和底层操作***等,可以是在开源应用容器引擎Docker中制作的用于进行应用包的打包处理的基础包。
进一步地,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱隔离机制的,相互之间不会有任何影响。
步骤S200,基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,目标镜像包被打包在Docker中。
具体地,Maven插件是Java工程自动化编译工具,在使用Maven(麦文)插件进行打包处理之前,预先进行Maven的下载与安装,在安装Maven的过程中,将下载的Maven的zip包解压缩至预定的Maven安装路径下,假设为D:\project\maven\,接下来设置环境变量,将Maven安装路径配置到操作***PATH环境变量中。接着,需要验证maven命令是否可用,需要再命令行中验证mvn-version命令是否有对应maven信息输出,如果错误,需要检查变量是否配置正确。
进一步地,在完成Maven的下载与安装后,可以通过Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到目标镜像包。其中,上述的目标镜像包是被打包在Docker中的。
进一步地,通过Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理的过程,可以为:先通过相应的拷贝命令将获取到的原始应用包拷贝到基础Docker容器镜像包中,再通过相应的镜像生成命令,利用该基础Docker容器镜像包生成Docker容器的默认启动脚本,从而获得目标镜像包。
进一步地,通过Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理的过程,还可以为:先将原始应用包、基础Docker容器镜像包以及入口脚本程序写预设文件中,再通过相应的镜像生成命令生成目标镜像,具体可以包括如下步骤:步骤A,选择原始应用包,其中,可以将原始应用包的源代码通过git clone克隆到编译环境,该编译环境可以是具备编译工具的一台主机,或者是Jenkins的一个节点中的一个任务执行器;步骤B,拉取代码分支,以切换为所需代码分支;步骤C,编译,可以通过执行“主编译脚本”实现编译,输出编译后的目标文件,“主编译脚本”相当于一个main()函数,不同编译类型存在于各个判断分支内,每个编译类型又有各自差异化的编译步骤,均以“子编译脚本”的形式组织;步骤D,打包,将编译后的目标文件进行必要的目录或文件结构调整后,压缩打包,存放于指定目录下的指定文件夹中,以便生成目标镜像包时拷贝;步骤E,生成目标镜像包,进入上述的指定文件夹的指定目录,并执行相应的生成命令,从而生成目标镜像包。
本申请实施例提供的基于Docker容器的镜像打包方法,与现有技术相比,分别获取原始应用包与基础Docker容器镜像包,为后续基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理提供前提保障;基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,使得可以直接将原始应用包以及基础Docker容器镜像包打包成一个整体镜像包,从而将原有的复杂的打包操作集中在一起快速完成,极大提高打包效率,而且不需要借助于中间件容器,避免了中间件容器带来的应用环境等额外因素导致的问题,另外,即使打包过程出现故障,也不需要中间件容器提供方人员的参与,节约了人力资源。
实施例二
本申请实施例提供了另一种可能的实现方式,在实施例一的基础上,还包括实施例二所示的方法,其中,
在步骤S200之前还包括步骤S101(图中未标注):在项目对象模型中对Maven插件进行配置。
在步骤S200中包括步骤S201(图中未标注):通过第三预设命令,对所述原始应用包以及基础Docker容器镜像包进行打包处理。
具体地,第三预设命令可以为mvn clean package docker:build命令,在基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理之前,需要在POM(Project Object Model,项目对象模型)文件中配置好打包需要的Maven(麦文)插件。
进一步地,Maven的基本插件以及后期引入的插件都需要在项目对象模型中进行配置。Maven中的项目对象模型的实现形式为项目根目录下的pom.xml配置文件。这个配置文件提供了Maven项目的主要配置,包括项目名称、拥有者与其他项目的依赖等内容。还可以对项目构建过程中的阶段单独进行配置,比如对某些过程中所使用插件的配置。其中,规模较大的项目可以分为若干子项目进行处理,每个子项目单独配置POM(即pom.xml),再另外配置一个总的POM来实现统一的管理与编译。POM还具有可继承性,可以从其他POM文件中继承已有的配置。所有的POM文件都继承自默认的根POM,根POM文件中提供了默认的配置,比如默认源代码目录,默认的插件等内容。
进一步地,假设待打包的应用包为spring cloud,通过在Maven的POM中配置我们对spring boot的需求,就可以将spring cloud包所依赖的包也引入进来,若spring cloud所依赖的包也依赖于其他的包,也可以将该被依赖的其他的包也引入进来。
进一步地,配置docker(容器)镜像打包的Maven插件,将待打包的应用包及包括基础镜像、入口启动脚本程序的基础容器镜像等信息在插件中配置好。
进一步地,在完成Maven的基本插件以及后期引入的插件等镜像打包所必须的配置工作,以及在插件中配置好待打包的应用包及包括基础镜像、入口启动脚本程序的基础容器镜像等信息后,可以通过第三预设命令,例如mvn clean package docker:build命令,对原始应用包以及基础Docker容器镜像包进行打包处理,得到目标镜像包。
对于本申请实施例,通过在项目对象模型中对Maven插件进行配置,为后续基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理提供了必要的前提保障,而通过第三预设命令mvn clean package docker:build,可以做到一次打包成目标镜像,提高了打包效率,大大节约打包时间。
实施例三
本申请实施例提供了另一种可能的实现方式,在实施例二的基础上,还包括实施例三所示的方法,其中,
在步骤S200之后还包括步骤S300(图中未标注):将目标镜像包推送至开源应用容器引擎Docker的服务器,以完成对目标镜像包的部署。
在步骤S300之前还包括步骤S202(图中未标注)与步骤S203(图中未标注),其中,
步骤S202:设置目标镜像包的版本标识。
步骤S203:将设置有版本标识的目标镜像包进行存储。
具体地,在打包镜像的时候,可以根据默认项目的group(组)和name(名字),设置该整体镜像包的版本标识(例如group-name:V1.0.0、group-name:V1.0.1等),其中,可以通过更改配置信息项进行版本标识的自定义。
进一步地,在完成目标镜像包的版本标识的设置后,可以将带有版本标识的目标镜像包暂时保存在本地,此时,可以根据需要选择启动相应版本标识的目标镜像,例如,若当前正在运行版本标识为group-name:V1.0.1的目标镜像,而此时用户想要运行版本标识为group-name:V1.0.0的目标镜像,这时用户只需要将关闭运行的版本标识为group-name:V1.0.1的目标镜像,直接打开运行版本标识为group-name:V1.0.0的目标镜像即可,使得只需要在Docker容器中启动新老目标镜像包即可实现目标镜像包的回滚,从而实现了无需关注新老镜像包的替换和备份问题,避免了现有技术中回滚拷贝目标镜像包高出错的问题。
进一步地,在运行目标镜像包时,可以通过第一预设命令来运行,其中,第一预设命令可以为“docker run目标镜像包名称”命令,例如docker run group-name:V1.0.0命令,又例如docker rungroup-name:V1.0.1命令。
进一步地,在得到目标镜像包后,如果需要远程部署则将目标镜像包推送到开源应用容器引擎Docker的服务器,以完成对目标镜像包的部署。
进一步地,可以通过第二预设命令,将目标镜像包推送至开源应用容器引擎Docker的服务器,其中,第二预设命令可以为mvn docker:push命令。
对于本申请实施例,设置目标镜像包的版本标识,便于用户一目了然地了解目标镜像包的新老更新情况,从而使得用户能够快速地启动所需的目标镜像。
对于本申请实施例,只需通过第二预设命令mvn docker:push,即可将目标镜像包推送至服务器,不仅完成了目标镜像包的高效部署,大大降低部署操作的复杂度、降低部署时间,而且能够起到对目标镜像包进行备份的作用,使得需求方可以从服务器中下载所需的目标镜像包,实现目标镜像包的高效使用。
实施例四
图2为本申请实施例提供的一种基于Docker容器的镜像打包装置的结构示意图,如图2所示,该装置20可以包括获取模块21与第一处理模块22;其中,
获取模块21,用于从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取基础Docker容器镜像包,基础Docker容器镜像包包括中间件和底层操作***;
第一处理模块22,用于基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,目标镜像包被打包在Docker中。
对于本申请实施例,可以通过Jenkins在仓库git(分布式版本控制***)或svn(svn是Subversion的简称,是一个开放源代码的版本控制***)中获取待打包的应用的源代码。其中,Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,可以提供一个开放易用的软件平台,使软件的持续集成成为可能。
其中,在获取到待打包的源代码之后,可以通过相应的打包工具(例如Maven)对待打包的源代码进行打包处理,得到上述的原始应用包。其中,通过Maven对待打包的源代码进行打包处理,实际上是通过Maven提供的jetty选项,对获取到的待打包的源代码进行相应的编译操作,从而得到上述的原始应用包。其中,jetty选项需要在Maven的配置文件pom.xml中进行预先配置。
此外,可以获取Docker私服中存储的基础Docker容器镜像包,即从Docker私服中获取基础Docker容器镜像包,此外的Docker私服即为开源应用容器引擎Docker的服务器。其中,基础Docker容器镜像包包括但不限于中间件和底层操作***等,可以是在开源应用容器引擎Docker中制作的用于进行应用包的打包处理的基础包。
此外,Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱隔离机制的,相互之间不会有任何影响。
此外,在本申请实施例中,Maven插件是Java工程自动化编译工具,在使用Maven(麦文)插件进行打包处理之前,预先进行Maven的下载与安装,在安装Maven的过程中,将下载的Maven的zip包解压缩至预定的Maven安装路径下,假设为D:\project\maven\,接下来设置环境变量,将Maven安装路径配置到操作***PATH环境变量中。接着,需要验证maven命令是否可用,需要再命令行中验证mvn-version命令是否有对应maven信息输出,如果错误,需要检查变量是否配置正确。
此外,在完成Maven的下载与安装后,可以通过Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,得到目标镜像包。其中,上述的目标镜像包是被打包在Docker中的。
另外,通过Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理的过程,可以为:先通过相应的拷贝命令将获取到的原始应用包拷贝到基础Docker容器镜像包中,再通过相应的镜像生成命令,利用该基础Docker容器镜像包生成Docker容器的默认启动脚本,从而获得目标镜像包。
进一步地,该装置还包括推送模块23,如图3所示,推送模块23用于将目标镜像包推送至开源应用容器引擎Docker的服务器,以完成对目标镜像包的部署。
进一步地,该装置还包括第二处理模块24,如图3所示,第二处理模块24用于设置目标镜像包的版本标识;以及用于将设置有版本标识的目标镜像包进行存储。
进一步地,该装置还包括运行模块25,如图3所示,运行模块25用于通过第一预设命令,来运行目标镜像包。
进一步地,推送模块具体用于通过第二预设命令,将目标镜像包推送至开源应用容器引擎Docker的服务器。
进一步地,该装置还包括配置模块26,如图3所示,配置模块26用于在项目对象模型中对Maven插件进行配置。
进一步地,第一处理模块具体用于通过第三预设命令,对原始应用包以及基础Docker容器镜像包进行打包处理。
其中,在打包镜像的时候,可以根据默认项目的group(组)和name(名字),设置该整体镜像包的版本标识(例如group-name:V1.0.0、group-name:V1.0.1等),其中,可以通过更改配置信息项进行版本标识的自定义。在完成目标镜像包的版本标识的设置后,可以将带有版本标识的目标镜像包暂时保存在本地,此时,可以根据需要选择启动相应版本标识的目标镜像,例如,若当前正在运行版本标识为group-name:V1.0.1的目标镜像,而此时用户想要运行版本标识为group-name:V1.0.0的目标镜像,这时用户只需要将关闭运行的版本标识为group-name:V1.0.1的目标镜像,直接打开运行版本标识为group-name:V1.0.0的目标镜像即可,使得只需要在Docker容器中启动新老目标镜像包即可实现目标镜像包的回滚,从而实现了无需关注新老镜像包的替换和备份问题,避免了现有技术中回滚拷贝目标镜像包高出错的问题。
此外,在得到目标镜像包后,如果需要远程部署则将目标镜像包推送到开源应用容器引擎Docker的服务器,以完成对目标镜像包的部署。其中,可以通过第二预设命令,将目标镜像包推送至开源应用容器引擎Docker的服务器,其中,第二预设命令可以为mvndocker:push命令。
此外,第三预设命令可以为mvn clean package docker:build命令,在基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理之前,需要在POM(ProjectObject Model,项目对象模型)文件中配置好打包需要的Maven(麦文)插件。
此外,Maven的基本插件以及后期引入的插件都需要在项目对象模型中进行配置。Maven中的项目对象模型的实现形式为项目根目录下的pom.xml配置文件。这个配置文件提供了Maven项目的主要配置,包括项目名称、拥有者与其他项目的依赖等内容。还可以对项目构建过程中的阶段单独进行配置,比如对某些过程中所使用插件的配置。其中,规模较大的项目可以分为若干子项目进行处理,每个子项目单独配置POM(即pom.xml),再另外配置一个总的POM来实现统一的管理与编译。POM还具有可继承性,可以从其他POM文件中继承已有的配置。所有的POM文件都继承自默认的根POM,根POM文件中提供了默认的配置,比如默认源代码目录,默认的插件等内容。
此外,假设待打包的应用包为spring cloud,通过在Maven的POM中配置我们对spring boot的需求,就可以将spring cloud包所依赖的包也引入进来,若spring cloud所依赖的包也依赖于其他的包,也可以将该被依赖的其他的包也引入进来。
此外,配置docker(容器)镜像打包的Maven插件,将待打包的应用包及包括基础镜像、入口启动脚本程序的基础容器镜像等信息在插件中配置好。
此外,在完成Maven的基本插件以及后期引入的插件等镜像打包所必须的配置工作,以及在插件中配置好待打包的应用包及包括基础镜像、入口启动脚本程序的基础容器镜像等信息后,可以通过第三预设命令,例如mvn clean package docker:build命令,对原始应用包以及基础Docker容器镜像包进行打包处理,得到目标镜像包。
本申请实施例提供的基于Docker容器的镜像打包装置,与现有技术相比,分别获取原始应用包与基础Docker容器镜像包,为后续基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理提供前提保障;基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,使得可以直接将原始应用包以及基础Docker容器镜像包打包成一个整体镜像包,从而将原有的复杂的打包操作集中在一起快速完成,极大提高打包效率,而且不需要借助于中间件容器,避免了中间件容器带来的应用环境等额外因素导致的问题,另外,即使打包过程出现故障,也不需要中间件容器提供方人员的参与,节约了人力资源。
实施例五
本申请实施例提供了一种电子设备,如图4所示,图4所示的电子设备400包括:处理器401和存储器403。其中,处理器401和存储器403相连,如通过总线402相连。进一步地,电子设备400还可以包括收发器404。需要说明的是,实际应用中收发器404不限于一个,该电子设备400的结构并不构成对本申请实施例的限定。
其中,处理器401应用于本申请实施例中,用于实现图2所示的第一处理模块的功能。收发器404包括接收机和发射机,收发器404应用于本申请实施例中,用于实现图2所示的获取模块的功能。
处理器401可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器401也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线402可包括一通路,在上述组件之间传送信息。总线402可以是PCI总线或EISA总线等。总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器403可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器403用于存储执行本申请方案的应用程序代码,并由处理器401来控制执行。处理器401用于执行存储器403中存储的应用程序代码,以实现图2所示实施例提供的基于Docker容器的镜像打包装置的动作。
本申请实施例提供的电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,与现有技术相比,可实现:分别获取原始应用包与基础Docker容器镜像包,为后续基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理提供前提保障;基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,使得可以直接将原始应用包以及基础Docker容器镜像包打包成一个整体镜像包,从而将原有的复杂的打包操作集中在一起快速完成,极大提高打包效率,而且不需要借助于中间件容器,避免了中间件容器带来的应用环境等额外因素导致的问题,另外,即使打包过程出现故障,也不需要中间件容器提供方人员的参与,节约了人力资源。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现实施例一所示的方法。与现有技术相比,分别获取原始应用包与基础Docker容器镜像包,为后续基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理提供前提保障;基于Maven插件,对原始应用包以及基础Docker容器镜像包进行打包处理,使得可以直接将原始应用包以及基础Docker容器镜像包打包成一个整体镜像包,从而将原有的复杂的打包操作集中在一起快速完成,极大提高打包效率,而且不需要借助于中间件容器,避免了中间件容器带来的应用环境等额外因素导致的问题,另外,即使打包过程出现故障,也不需要中间件容器提供方人员的参与,节约了人力资源。
本申请实施例提供的计算机可读存储介质适用于上述方法的任一实施例。在此不再赘述。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种基于Docker容器的镜像打包方法,其特征在于,包括:
从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取与基础Docker容器镜像包,所述基础Docker容器镜像包包括中间件和底层操作***;
基于Maven插件,对所述原始应用包以及所述基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,所述目标镜像包被打包在Docker中。
2.根据权利要求1所述的方法,其特征在于,在得到目标镜像包之后,还包括:
将所述目标镜像包推送至开源应用容器引擎Docker的服务器,以完成对所述目标镜像包的部署。
3.根据权利要求2所述的方法,其特征在于,在将所述目标镜像包推送至Docker容器镜像仓库之前,还包括:
设置所述目标镜像包的版本标识;
将设置有版本标识的所述目标镜像包进行存储。
4.根据权利要求3所述的方法,其特征在于,在将设置有版本标识的所述目标镜像包进行存储之后,还包括:
通过第一预设命令,来运行所述目标镜像包。
5.根据权利要求2所述的方法,其特征在于,将所述目标镜像包推送至开源应用容器引擎Docker的服务器,包括:
通过第二预设命令,将所述目标镜像包推送至开源应用容器引擎Docker的服务器。
6.根据权利要求1-5任一项所述的方法,其特征在于,在基于Maven插件,对所述原始应用包以及基础Docker容器镜像包进行打包处理之前,还包括:
在项目对象模型中对所述Maven插件进行配置。
7.根据权利要求1-5任一项所述的方法,其特征在于,基于Maven插件,对所述原始应用包以及基础Docker容器镜像包进行打包处理,包括:
通过第三预设命令,对所述原始应用包以及基础Docker容器镜像包进行打包处理。
8.一种基于Docker容器的镜像打包装置,其特征在于,包括:
获取模块,用于从预设版本控制***的仓库中获取原始应用包,并从预设Docker私服中获取与基础Docker容器镜像包,所述基础Docker容器镜像包包括中间件和底层操作***;
第一处理模块,用于基于Maven插件,对所述原始应用包以及所述基础Docker容器镜像包进行打包处理,得到相应的目标镜像包,所述目标镜像包被打包在Docker中。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述的基于Docker容器的镜像打包方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1-7任一项所述的基于Docker容器的镜像打包方法。
CN201810937024.8A 2018-08-16 2018-08-16 基于Docker容器的镜像打包方法、装置及电子设备 Pending CN109271198A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810937024.8A CN109271198A (zh) 2018-08-16 2018-08-16 基于Docker容器的镜像打包方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810937024.8A CN109271198A (zh) 2018-08-16 2018-08-16 基于Docker容器的镜像打包方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN109271198A true CN109271198A (zh) 2019-01-25

Family

ID=65153866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810937024.8A Pending CN109271198A (zh) 2018-08-16 2018-08-16 基于Docker容器的镜像打包方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN109271198A (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110007948A (zh) * 2019-02-22 2019-07-12 贵州力创科技发展有限公司 一种运维方法、装置和存储介质
CN110058863A (zh) * 2019-03-16 2019-07-26 平安城市建设科技(深圳)有限公司 Docker容器的构建方法、装置、设备及存储介质
CN110413311A (zh) * 2019-06-14 2019-11-05 厦门网宿有限公司 ***配置方法及服务器
CN110851122A (zh) * 2019-11-06 2020-02-28 深圳前海环融联易信息科技服务有限公司 基础框架包设计方法及装置
CN111026415A (zh) * 2019-12-17 2020-04-17 南京奥工信息科技有限公司 基于容器技术动态适应软硬件运行环境的软件部署方法
CN111078229A (zh) * 2019-12-20 2020-04-28 北京天融信网络安全技术有限公司 一种应用程序处理方法、装置、存储介质及电子设备
CN111124454A (zh) * 2019-12-25 2020-05-08 南京医康科技有限公司 镜像构建方法与装置、电子设备、存储介质
CN111142888A (zh) * 2019-12-29 2020-05-12 浪潮电子信息产业股份有限公司 服务器***灌装方法、装置、设备及计算机可读存储介质
CN111338641A (zh) * 2020-02-11 2020-06-26 腾讯云计算(北京)有限责任公司 一种应用发布方法及装置
CN112463304A (zh) * 2020-12-03 2021-03-09 金蝶软件(中国)有限公司 容器镜像的回滚方法、装置、计算机设备和存储介质
CN112947948A (zh) * 2020-01-17 2021-06-11 深圳市明源云科技有限公司 应用服务的部署方法及装置
CN113626043A (zh) * 2021-08-04 2021-11-09 湖北美和易思教育科技有限公司 一种基于Kubernetes的容器开发环境自动打包方法及***
CN114157658A (zh) * 2021-12-06 2022-03-08 京东科技信息技术有限公司 镜像仓库部署方法、装置、电子设备和计算机可读介质
CN114443169A (zh) * 2022-01-28 2022-05-06 中国民生银行股份有限公司 一种实现技术组件平台化的方法及装置
CN114995897A (zh) * 2022-05-07 2022-09-02 远光软件股份有限公司 获取持续集成工具运行结果的方法、装置、存储介质及计算机设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142847A (zh) * 2013-05-06 2014-11-12 ***股份有限公司 云计算环境下的无状态化虚拟机及其应用
US20170269921A1 (en) * 2016-03-18 2017-09-21 TUPL, Inc. Continuous and automatic application development and deployment
CN107329800A (zh) * 2017-06-29 2017-11-07 北京北信源软件股份有限公司 一种基于Docker平台的中间件应用管控方法和装置
CN107678756A (zh) * 2017-09-29 2018-02-09 千寻位置网络有限公司 一种基于Docker的Web应用一键发布方法
CN107729034A (zh) * 2017-10-24 2018-02-23 郑州云海信息技术有限公司 一种软件持续集成方法及其装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142847A (zh) * 2013-05-06 2014-11-12 ***股份有限公司 云计算环境下的无状态化虚拟机及其应用
US20170269921A1 (en) * 2016-03-18 2017-09-21 TUPL, Inc. Continuous and automatic application development and deployment
CN107329800A (zh) * 2017-06-29 2017-11-07 北京北信源软件股份有限公司 一种基于Docker平台的中间件应用管控方法和装置
CN107678756A (zh) * 2017-09-29 2018-02-09 千寻位置网络有限公司 一种基于Docker的Web应用一键发布方法
CN107729034A (zh) * 2017-10-24 2018-02-23 郑州云海信息技术有限公司 一种软件持续集成方法及其装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SEAN: "使用docker Maven插件本地构建docker镜像并发布到远程服务器", pages 1 - 12, Retrieved from the Internet <URL:https://segmentfault.com/a/1190000010313412/revision#r2> *
腾讯云开发者: "【全干货】5 分钟带你看懂Docker!", Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/30713987> *
黄炜耀: "自定义微服务实现方式", 信息通信, no. 09 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110007948A (zh) * 2019-02-22 2019-07-12 贵州力创科技发展有限公司 一种运维方法、装置和存储介质
CN110058863A (zh) * 2019-03-16 2019-07-26 平安城市建设科技(深圳)有限公司 Docker容器的构建方法、装置、设备及存储介质
CN110413311A (zh) * 2019-06-14 2019-11-05 厦门网宿有限公司 ***配置方法及服务器
CN110851122A (zh) * 2019-11-06 2020-02-28 深圳前海环融联易信息科技服务有限公司 基础框架包设计方法及装置
CN111026415A (zh) * 2019-12-17 2020-04-17 南京奥工信息科技有限公司 基于容器技术动态适应软硬件运行环境的软件部署方法
CN111078229A (zh) * 2019-12-20 2020-04-28 北京天融信网络安全技术有限公司 一种应用程序处理方法、装置、存储介质及电子设备
CN111124454A (zh) * 2019-12-25 2020-05-08 南京医康科技有限公司 镜像构建方法与装置、电子设备、存储介质
CN111124454B (zh) * 2019-12-25 2024-03-19 医渡云(北京)技术有限公司 镜像构建方法与装置、电子设备、存储介质
CN111142888A (zh) * 2019-12-29 2020-05-12 浪潮电子信息产业股份有限公司 服务器***灌装方法、装置、设备及计算机可读存储介质
CN112947948B (zh) * 2020-01-17 2024-03-12 深圳市明源云科技有限公司 应用服务的部署方法及装置
CN112947948A (zh) * 2020-01-17 2021-06-11 深圳市明源云科技有限公司 应用服务的部署方法及装置
CN111338641A (zh) * 2020-02-11 2020-06-26 腾讯云计算(北京)有限责任公司 一种应用发布方法及装置
CN112463304A (zh) * 2020-12-03 2021-03-09 金蝶软件(中国)有限公司 容器镜像的回滚方法、装置、计算机设备和存储介质
CN113626043A (zh) * 2021-08-04 2021-11-09 湖北美和易思教育科技有限公司 一种基于Kubernetes的容器开发环境自动打包方法及***
CN113626043B (zh) * 2021-08-04 2024-04-05 武汉美和易思数字科技有限公司 一种基于Kubernetes的容器开发环境自动打包方法及***
CN114157658A (zh) * 2021-12-06 2022-03-08 京东科技信息技术有限公司 镜像仓库部署方法、装置、电子设备和计算机可读介质
CN114157658B (zh) * 2021-12-06 2024-03-01 京东科技信息技术有限公司 镜像仓库部署方法、装置、电子设备和计算机可读介质
CN114443169A (zh) * 2022-01-28 2022-05-06 中国民生银行股份有限公司 一种实现技术组件平台化的方法及装置
CN114995897A (zh) * 2022-05-07 2022-09-02 远光软件股份有限公司 获取持续集成工具运行结果的方法、装置、存储介质及计算机设备

Similar Documents

Publication Publication Date Title
CN109271198A (zh) 基于Docker容器的镜像打包方法、装置及电子设备
CN109034814B (zh) 基于以太坊虚拟机的智能合约处理方法和装置
US8589903B2 (en) Patch attachment facility
CN102053831B (zh) 一种Linux操作***的定制方法及***
CN107678756A (zh) 一种基于Docker的Web应用一键发布方法
CN103164239B (zh) 基于微网可视化平台的插件实现方法
CN105511911B (zh) ***固件升级包的生成方法及装置
CN103353844B (zh) 一种软件开发工具包升级方法和***
US8762937B2 (en) Model driven deployment of composite applications
CN111666099B (zh) 一种应用服务发布***
CN103501308A (zh) 分布式云应用部署***和/或相关的方法
CN105516154B (zh) 应用于SEAndroid***的安全策略配置方法及装置
WO2005109299A1 (en) Robot control software framework in open distributed process architecture
US10140106B2 (en) Method, computer readable medium and system for deploying and merging release independent applications
CN111158741B (zh) 监控业务模块对第三方类库依赖关系变化的方法及装置
CN108364242A (zh) 保存中间文件的版权确权方法及装置
US20160117160A1 (en) Preparing installations and updates for software systems
CN104461562A (zh) 一种任务创建的方法及***
CN104133699A (zh) 设备***软件升级方法与***
CN105144085B (zh) 针对存储设备的软件框架
CN109857432A (zh) 一种游戏应用的热更新方法和装置
CN108920171A (zh) 固件更新方法及装置、电子设备
US10838712B1 (en) Lifecycle management for software-defined datacenters
CN107526584B (zh) 数据接入方法和装置
CN112486505A (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