CN110704098B - 一种根据应用包特征自动生成容器镜像的智能打包方法 - Google Patents
一种根据应用包特征自动生成容器镜像的智能打包方法 Download PDFInfo
- Publication number
- CN110704098B CN110704098B CN201910937190.2A CN201910937190A CN110704098B CN 110704098 B CN110704098 B CN 110704098B CN 201910937190 A CN201910937190 A CN 201910937190A CN 110704098 B CN110704098 B CN 110704098B
- Authority
- CN
- China
- Prior art keywords
- file
- matching rule
- command
- dockerfire
- dependency
- 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
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
一种根据应用包特征自动生成容器镜像的智能打包方法,包括接收用户的打包请求和待打包的目标应用程序,获取应用程序的基本信息和依赖项信息;根据应用程序的基本信息和依赖项信息获取Dockerfile文件,所述Dockerfile文件中的Dockerfile命令包括基于匹配规则库中的匹配规则匹配出的Dockerfile命令和用户手动添加的Dockerfile命令;运行Dockerfile文件生成镜像;向用户发送镜像供用户下载使用。通过待打包的目标应用程序的基本信息和依赖项信息,通过匹配规则库,匹配出相应的Dockerfile命令,自动生成Dockerfile文件,通过不断优化匹配规则,使通过待打包的应用包特征参数打包到镜像文件的过程更加智能,避免了打包过程中运行依赖关系确定困难和人工编写Dockerfile文件过程繁琐的问题。
Description
技术领域
本发明涉及计算机技术领域,更具体的说,涉及一种根据应用包特征自动生成容器镜像的智能打包方法。
背景技术
在对应用软件等构建镜像的过程中,一个必不可少的环节就是获取其依赖信息。应用软件在运行的过程中会存在调用其他操作系统、软件包、数据库以及配置信息等,此时称该应用软件所调用的信息为其依赖关系。如果不事先确定应用软件所需的依赖关系,则很有可能在构建镜像过程中出现错误,降低构建镜像的效率。
目前开发人员都是通过人工分析的方法来获取应用软件的依赖关系,然后将这些依赖关系写入Dockerfile中。然而,人工编写Dockerfile打包过程繁琐,且需要较高的专业技术要求,打包的前置条件又难以面面俱到。
发明内容
针对上述现有技术存在的问题(1)运行依赖关系确定困难(2)人工编写过程繁琐,本发明提供一种根据应用包特征自动生成容器镜像的智能打包方法,包括:
(11)接收用户的打包请求和待打包的目标应用程序,获取应用程序的基本信息和依赖项信息;
(12)根据应用程序的基本信息和依赖项信息获取Dockerfile文件,所述Dockerfile文件中的Dockerfile命令包括基于匹配规则库中的匹配规则匹配出的Dockerfile命令和用户手动添加的Dockerfile命令;
(13)运行Dockerfile文件生成镜像;
(14)向用户发送镜像供用户下载使用。
作为上述方案的进一步优化,所述获取应用程序的基本信息和依赖项信息的方法包括:
调用操作系统分析应用程序的包文件获取,调用数据库获取,通过用户手动输入获取。
作为上述方案的进一步优化,所述根据应用程序的基本信息和依赖项信息获取Dockerfile文件包括:
(31)获取Dockerfile文件,基于匹配规则库中的匹配规则,根据应用程序的基本信息和依赖项信息匹配出对应的Dockerfile命令,所有Dockerfile命令组成Dockerfile文件;
(32)运行Dockerfile文件生成的镜像,判断运行结果是否正常;
(33)若运行正常,则输出Dockerfile文件;
若运行异常,判断为Dockerfile文件中缺少部分依赖项信息对应的Dockerfile命令,则检测步骤(11)中获取的依赖项中,在匹配规则库中没有匹配规则的依赖项信息,并发送给用户,用于用户针对没有匹配规则的依赖项信息,手动添加对应的Dockerfile命令,在步骤(31)获取的Dockerfile文件基础上形成新的Dockerfile文件;
(34)运行新的Dockerfile文件生成的镜像,判断运行结果是否正常;
(35)重复步骤(33)。
作为上述方案的进一步优化,还包括步骤(14)后,根据用户手动添加的Dockerfile命令,向用户发送指令用于完善匹配规则库。
作为上述方案的进一步优化,所述完善匹配规则库,包括根据用户手动添加的Dockerfile命令及其对应的依赖项和匹配规则分别添加到相应的数据库中,并将依赖项说明添加到匹配说明库。
作为上述方案的进一步优化,匹配规则添加到匹配规则库之前,由用户确认,确认正确,则将匹配规则添加到匹配规则库,确认错误,则不将匹配规则添加到匹配规则库。
作为上述方案的进一步优化,所述基于匹配规则库中的匹配规则匹配出的Dockerfile命令包括:
根据应用程序的基本信息通过匹配规则生成对应的Dockerfile命令,用于安装应用程序的基本环境;
应用程序的依赖项信息匹配出相应的Dockerfile命令,包括匹配出依赖项安装方式的命令和安装目录的命令;
作为上述方案的进一步优化,所述依赖项安装方式包括在线安装和脚本式离线安装。
本发明的一种根据应用包特征自动生成容器镜像的智能打包方法,具备如下有益效果:
本发明的一种根据应用包特征自动生成容器镜像的智能打包方法中采用匹配规则库对应用程序生成镜像文件所需要特征信息进行智能匹配Dockerfile命令,从而生成用于创建镜像文件的Dockerfile文件,解决了在构建镜像过程中由于应用程序的运行依赖关系确定困难以及人工编写Dockerfile文件过程繁琐,造成的构建镜像文件效率低的问题,采用规则匹配可以自动匹配Dockerfile命令,还可以不断更新匹配规则库,不断优化匹配规则,实现一次处理多次复用的目的。
附图说明
图1为本发明一种根据应用包特征自动生成容器镜像的智能打包方法中智能打包镜像的流程框图;
图2为本发明一种根据应用包特征自动生成容器镜像的智能打包方法中添加匹配规则到匹配规则库的流程框图。
实施方式
下面结合附图1-2和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
一种根据应用包特征自动生成容器镜像的智能打包方法,包括:
(11)接收用户的打包请求和待打包的目标应用程序,获取应用程序的基本信息和依赖项信息;
接收用户的打包请求后,根据待打包的应用程序,通过调用操作系统分析应用程序的包文件,可以获取应用的类型、包的大小、创建的时间,通过调用数据库获取参考启动指令和入参模板,通过用户手动输入获取运行所需CPU及内存大小。
(12)根据应用程序的基本信息和依赖项信息获取Dockerfile文件,所述Dockerfile文件中的Dockerfile命令包括基于匹配规则库中的匹配规则匹配出的Dockerfile命令和用户手动添加的Dockerfile命令;
(13)运行Dockerfile文件生成镜像;
(14)向用户发送镜像供用户下载使用。
获取应用程序的基本信息和依赖项信息的方法包括:调用操作系统分析应用程序的包文件获取,调用数据库获取,通过用户手动输入获取。
本实施例中,获取的应用程序基本信息包括应用程序类型、大小、创建时间、参考启动指令、启动入参模板、运行所需CPU及内存大小;
应用程序依赖项信息,包括依赖项运行时需要的环境信息、依赖项调用的其他软件包、依赖项的数据库信息和配置信息,其中,调用操作系统分析应用程序的包文件,可以获取应用的类型、包的大小、创建的时间和依赖项信息;调用数据库方式和由用户手动输入方式可以获取参考启动指令、入参模板、运行所需CPU及内存大小获取。
在步骤(12)中根据应用程序的基本信息和依赖项信息获取Dockerfile文件具体包括:
(31)获取Dockerfile文件,基于匹配规则库中的匹配规则,根据应用程序的基本信息和依赖项信息匹配出对应的Dockerfile命令,所有Dockerfile命令组成Dockerfile文件;
(32)运行Dockerfile文件生成的镜像,判断运行结果是否正常;
(33)若运行正常,则输出Dockerfile文件;
若运行异常,判断为Dockerfile文件中缺少部分依赖项信息对应的Dockerfile命令,则检测步骤(11)中获取的依赖项中,在匹配规则库中没有匹配规则的依赖项信息,并发送给用户,用于用户针对没有匹配规则的依赖项信息,手动添加对应的Dockerfile命令,在步骤(31)获取的Dockerfile文件基础上形成新的Dockerfile文件;
(34)运行新的Dockerfile文件生成的镜像,判断运行结果是否正常;
(35)重复步骤(33)。
所述运行正常和运行异常具体包括:
第一种,应用正常启动,容器未退出;
第二种,应用正常启动,完成任务,容器正常退出;
第三种,应用启动报错,容器异常退出;
上述三种结果中,只有第三种情况是运行异常,需要进入获取新的Dockerfile文件的步骤,前两种情况均为正常。
本发明的一种根据应用包特征自动生成容器镜像的智能打包方法,还包括步骤(14)后,根据用户手动添加的Dockerfile命令,向用户发送指令用于完善匹配规则库。
所述完善匹配规则库,包括根据用户手动添加的Dockerfile命令及其对应的依赖项和匹配规则分别添加到相应的数据库中,并将依赖项说明添加到匹配说明库。
在用户获得正确的镜像打包文件后,系统向用户发出指令请求添加新的匹配规则,并将形成新的Dockerfile文件过程中新遇到的依赖项作为推荐项显示在用户界面,便于用户选择相应的推荐项并添加相应的匹配规则、匹配出的Dockerfile命令和依赖项说明。
为了保证匹配规则库中信息的准确性,在将匹配规则添加到匹配规则库之前,由用户确认,确认正确,则将匹配规则添加到匹配规则库,确认错误,则不将匹配规则添加到匹配规则库。
作为上述方案的进一步优化,所述基于匹配规则库中的匹配规则匹配出的Dockerfile命令包括:
根据应用程序的基本信息通过匹配规则生成对应的Dockerfile命令,用于安装应用程序的基本环境;
应用程序的依赖项信息匹配出相应的Dockerfile命令,包括匹配出依赖项安装方式的命令和安装目录的命令;
所述Dockerfile命令的部分匹配方式如表1所示:
基础环境匹配 | From |
安装依赖匹配 | Run<yum/apt/wget/...>xxx |
运行指令匹配 | Cmd/Entrypoint |
拷贝文件匹配 | Copy |
切换工作目录匹配 | Workdir |
表1 Dockerfile命令的匹配方式
依赖项的安装方式包括在线安装和脚本式离线安装;
对于在线安装方式,这种方式直接执行指令,自动完成安装,对于脚本式离线安装方式,这种方式中由安装脚本确定安装目录。两种方式匹配出的Dockerfile命令均为Run指令;
依赖项的安装命令包括yum、apt、wget、pip、二进制和指令安装;
对应的的依赖安装的Dockerfile命令格式为Run<yum/apt/wget/...>xxx。
工作原理:用户通过智能打包系统界面发送打包请求,并上传所需要打包的应用程序,系统接收到打包请求后,获取应用程序的基本信息和依赖项信息,其中,获取方法包括通过调用操作系统分析应用程序的包文件获取、通过调用数据库存储的数据获取和通过用户手动输入获取,系统根据获取的待打包应用程序的相关信息,通过查询匹配规则库匹配出相应的Dockerfile命令,生成Dockerfile文件,并运行判断Dockerfile命令是否完整,如果运行结果正常,则此次打包的应用程序中没有出现新的依赖项信息,已经完成打包,如果运行结果异常,则此次打包的应用程序中出现新的依赖项信息,系统会检测出相应的新的依赖性信息,并呈现在用户界面,让用户分别添加对应匹配的Dockerfile命令,形成新的Dockerfile文件,生成所需镜像。为了使匹配规则库的应用更广泛,本发明对匹配规则库不断进行完善,每次打包完成后,对于本次新出现的依赖项信息及相应的匹配规则添加到匹配信息中。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:包括:
(11)接收用户的打包请求和待打包的目标应用程序,获取应用程序的基本信息和依赖项信息;
(12)根据应用程序的基本信息和依赖项信息获取Dockerfile文件,所述Dockerfile文件中的Dockerfile命令包括基于匹配规则库中的匹配规则匹配出的Dockerfile命令和用户手动添加的Dockerfile命令;
(13)运行Dockerfile文件生成镜像;
(14)向用户发送镜像供用户下载使用;
所述根据应用程序的基本信息和依赖项信息获取Dockerfile文件包括:
(31)获取Dockerfile文件,基于匹配规则库中的匹配规则,根据应用程序的基本信息和依赖项信息匹配出对应的Dockerfile命令,所有Dockerfile命令组成Dockerfile文件;
(32)运行Dockerfile文件生成的镜像,判断运行结果是否正常;
(33)若运行正常,则输出Dockerfile文件;
若运行异常,判断为Dockerfile文件中缺少部分依赖项信息对应的Dockerfile命令,则检测步骤(11)中获取的依赖项中,在匹配规则库中没有匹配规则的依赖项信息,并发送给用户,用于用户针对没有匹配规则的依赖项信息,手动添加对应的Dockerfile命令,在步骤(31)获取的Dockerfile文件基础上形成新的Dockerfile文件;
(34)运行新的Dockerfile文件生成的镜像,判断运行结果是否正常;
(35)重复步骤(33)。
2.根据权利要求1所述的一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:所述获取应用程序的基本信息和依赖项信息的方法包括:
调用操作系统分析应用程序的包文件获取,调用数据库获取,通过用户手动输入获取。
3.根据权利要求1所述的一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:还包括步骤(14)后,根据用户手动添加的Dockerfile命令,向用户发送指令用于完善匹配规则库。
4.根据权利要求3所述的一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:所述完善匹配规则库,包括根据用户手动添加的Dockerfile命令及其对应的依赖项和匹配规则分别添加到相应的数据库中,并将依赖项说明添加到匹配说明库。
5.根据权利要求4所述的一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:匹配规则添加到匹配规则库之前,由用户确认,确认正确,则将匹配规则添加到匹配规则库,确认错误,则不将匹配规则添加到匹配规则库。
6.根据权利要求1所述的一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:所述基于匹配规则库中的匹配规则匹配出的Dockerfile命令包括:
根据应用程序的基本信息通过匹配规则生成对应的Dockerfile命令,用于安装应用程序的基本环境;
应用程序的依赖项信息匹配出相应的Dockerfile命令,包括匹配出依赖项安装方式的命令和安装目录的命令。
7.根据权利要求6所述的一种根据应用包特征自动生成容器镜像的智能打包方法,其特征在于:所述依赖项安装方式包括在线安装和脚本式离线安装。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910937190.2A CN110704098B (zh) | 2019-09-29 | 2019-09-29 | 一种根据应用包特征自动生成容器镜像的智能打包方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910937190.2A CN110704098B (zh) | 2019-09-29 | 2019-09-29 | 一种根据应用包特征自动生成容器镜像的智能打包方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110704098A CN110704098A (zh) | 2020-01-17 |
CN110704098B true CN110704098B (zh) | 2023-05-23 |
Family
ID=69197422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910937190.2A Active CN110704098B (zh) | 2019-09-29 | 2019-09-29 | 一种根据应用包特征自动生成容器镜像的智能打包方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110704098B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708610B (zh) * | 2020-06-19 | 2024-02-27 | 北京神州泰岳软件股份有限公司 | 数据库客户端构建方法和数据库操作方法 |
CN113821219B (zh) * | 2020-11-16 | 2024-09-20 | 北京沃东天骏信息技术有限公司 | 一种实现应用程序容器化的方法及系统 |
CN112463165B (zh) * | 2021-02-03 | 2021-06-04 | 北京并行科技股份有限公司 | 一种程序镜像构建方法、系统、计算设备及可读存储介质 |
CN114706564B (zh) * | 2022-05-16 | 2022-08-30 | 龙芯中科技术股份有限公司 | 软件包制作方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572055A (zh) * | 2013-10-23 | 2015-04-29 | 北大方正集团有限公司 | 拼版脚本生成装置和拼版脚本生成方法 |
CN108415795A (zh) * | 2018-02-12 | 2018-08-17 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN108563451A (zh) * | 2018-02-26 | 2018-09-21 | 挖财网络技术有限公司 | 一种Docker容器的构建和发布的方法、装置及系统 |
-
2019
- 2019-09-29 CN CN201910937190.2A patent/CN110704098B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572055A (zh) * | 2013-10-23 | 2015-04-29 | 北大方正集团有限公司 | 拼版脚本生成装置和拼版脚本生成方法 |
CN108415795A (zh) * | 2018-02-12 | 2018-08-17 | 人和未来生物科技(长沙)有限公司 | 一种容器Dockerfile、容器镜像快速生成方法及系统 |
CN108563451A (zh) * | 2018-02-26 | 2018-09-21 | 挖财网络技术有限公司 | 一种Docker容器的构建和发布的方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110704098A (zh) | 2020-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110704098B (zh) | 一种根据应用包特征自动生成容器镜像的智能打包方法 | |
CN107608710B (zh) | 基于Jenkins工具的软件项目构建任务配置方法及装置 | |
CN112764753B (zh) | 一种项目的部署方法、装置、电子设备及存储介质 | |
CN111158741B (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN110297776B (zh) | 检测报告生成、接收方法、装置、设备及存储介质 | |
CN109361628B (zh) | 报文组装方法、装置、计算机设备和存储介质 | |
CN111651358B (zh) | 生成测试用例的方法、软件测试方法、装置和服务器 | |
CN115794220A (zh) | 软件源迁移方法、装置和系统、计算设备和可读存储介质 | |
CN112698622B (zh) | 自动控制方法、装置及机器可读存储介质 | |
CN113254045A (zh) | 软件初始化方法、系统及计算机可读存储介质 | |
CN110806891B (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN111581063A (zh) | 数据处理方法、可读存储介质和电子设备 | |
CN111488144A (zh) | 一种数据处理方法以及设备 | |
CN116186050A (zh) | 一种基于哈希算法的数据更新方法及设备 | |
CN108614704B (zh) | 代码编译方法及装置 | |
CN115617555A (zh) | 一种信息处理系统以及方法 | |
CN109429100B (zh) | 一种页面路径的存储方法、装置及系统 | |
CN113867778B (zh) | 一种镜像文件的生成方法、装置、电子设备及存储介质 | |
CN114860300A (zh) | 依赖配置方法及装置、电子设备及存储介质 | |
CN114089965A (zh) | 基于单体式代码仓库Monorepo的程序开发项目管理方法、装置 | |
CN109240906B (zh) | 数据库配置信息适配方法、装置、计算机设备和存储介质 | |
US11835937B2 (en) | Non-transitory computer readable medium storing data distribution program, server apparatus, terminal apparatus, and data distribution system | |
JP2006318197A (ja) | コントローラ支援装置、プログラム | |
CN113032006B (zh) | 插件构建方法、装置、设备和存储介质 | |
CN115291936A (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 |