CN113485795B - 一种基于多种类型项目的自动化容器启动方法 - Google Patents
一种基于多种类型项目的自动化容器启动方法 Download PDFInfo
- Publication number
- CN113485795B CN113485795B CN202110843247.XA CN202110843247A CN113485795B CN 113485795 B CN113485795 B CN 113485795B CN 202110843247 A CN202110843247 A CN 202110843247A CN 113485795 B CN113485795 B CN 113485795B
- Authority
- CN
- China
- Prior art keywords
- container
- mirror image
- information
- item
- source code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000010276 construction Methods 0.000 claims abstract description 19
- 230000009191 jumping Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 7
- 230000007547 defect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Classifications
-
- 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
- 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
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于多种类型项目的自动化容器启动方法,包括以下步骤:S1、根据组件的标识,从数据库中读取组件的项目类型、构建信息、网络信息、挂载信息、运行信息和配置信息;S2、根据组件的项目类型和构建信息,调取或生成容器的镜像;S3、根据组件的网络信息和挂载信息,调用kubernetes集群的远程接口,建立并运行容器所需的资源;S4、基于容器的镜像、运行容器所需的资源、组件的运行信息和组件的配置信息,调用kubernetes集群的远程接口,启动容器;本发明解决了当前容器技术的普适性差,服务器项目开发必须对项目源代码进行改造和侵入,才能构建并启动容器的问题。
Description
技术领域
本发明涉及容器技术领域,具体涉及一种基于多种类型项目的自动化容器启动方法。
背景技术
近年来,在IT行业中,越来越多的服务端项目采用微服务架构来进行开发和部署。微服务架构将传统单体项目中功能相近的模块拆分成独立的子项目,各子项目作为一个微服务,单独进行开发和部署。但为了保障可靠性,每一个微服务也需要部署多个实例,因此存在运维压力大的缺陷。为了应对该缺陷,IT行业产生了Linux容器(LXC,LinuXContainer)技术,该技术本质是一种将运行应用程序所需的所有必要组件打包为单个可重复使用的镜像的虚拟化技术,其基于Linux系统内核提供的命名空间(namespace)、控制群组(cgroup)和联合文件系统(union file system),使多个用户态在通过LXC中间层共享同一个内核态的同时,之间的软硬件资源却相互隔离。其中,每个用户态即是一个容器,每个容器内的进程不会影响容器外的任何进程。这样,通过容器技术,便可在不消耗大量运维成本的情况下为每一个微服务部署多个实例。
目前,容器技术仍具有不可忽视的缺陷,其只支持特定且单一的编程语言项目,且需部署的项目必须按照容器技术平台提供的规范进行改造,不具备普适性。因此服务器项目的开发存在必须对项目源代码进行改造和侵入,才能构建并启动成容器的问题。
发明内容
针对现有技术中的上述不足,本发明提供的一种基于多种类型项目的自动化容器启动方法解决了当前容器技术的普适性差,服务器项目开发必须对项目源代码进行改造和侵入,才能构建并启动容器的问题。
为了达到上述发明目的,本发明采用的技术方案为:一种基于多种类型项目的自动化容器启动方法,包括以下步骤:
S1、根据组件的标识,从数据库中读取组件的项目类型、构建信息、网络信息、挂载信息、运行信息和配置信息;
S2、根据组件的项目类型和构建信息,调取或生成容器的镜像;
S3、根据组件的网络信息和挂载信息,调用kubernetes集群的远程接口,建立并运行容器所需的资源;
S4、基于容器的镜像、运行容器所需的资源、组件的运行信息和组件的配置信息,调用kubernetes集群的远程接口,启动容器。
进一步地,步骤S2包括以下分步骤:
S21、判断项目类型是否为普通镜像或中间件模板,若是,则从镜像仓库获取指定的容器的镜像,结束分步骤,若否,则项目类型为java、nginx前端、nodejs前端或python,并跳转至步骤S22;
S22、根据构建信息中的源代码来源地址,从代码仓库调出项目的源代码到本地Linux构建环境,编译项目的源代码,生成容器的镜像,结束分步骤。
进一步地,步骤S22中编译项目的源代码,生成容器的镜像包括以下分步骤:
A1、若项目类型为java,采用maven工具,将项目的源代码编译生成jar包;
A2、根据java基础镜像,将jar包构建生成java容器的镜像;
A3、若项目类型为nginx前端,采用yarn工具,将项目的源代码编译生成nginx前端tar包;
A4、根据nginx基础镜像,将nginx前端tar包构建生成nginx前端容器的镜像;
A5、若项目类型为nodejs前端,采用yarn工具,将项目的源代码编译生成nodejs前端tar包;
A6、根据nodejs基础镜像,将nodejs前端tar包构建生成nodejs前端容器的镜像;
A7、若项目类型为python,将项目的源代码编译生成python tar包;
A8、根据python基础镜像,将python tar包构建生成python容器的镜像。
进一步地,步骤S3中容器所需的资源包括:网络资源和挂载资源。
进一步地,网络资源的类型包括:ClusterIP、NodePort和Ingress。
进一步地,挂载资源的类型包括:PersistentVolumeClaim、ConfigMap、InitContainer和SideCar。
综上,本发明的有益效果为:
(1)、支持多种类型的项目,包括普通镜像、Java项目、Nginx前端项目、Nodejs前端项目、中间件集群模板等,其中中间件集群模板又包括6节点(3主3从)Redis集群、3节点Zookeeper集群和3节点Kafka集群,因此适用范围相当广泛;
(2)、一站式、自动化地将项目源代码构建并启动成容器,既隐藏了内部的执行细节,使用户无需深入理解容器化技术就能使用本方法,降低了使用的门槛;又能够快速完成软件项目的容器化CI/CD(持续集成/持续交付),提高了开发效率;
(3)、本方法无需对项目本身进行改造,对项目源代码没有侵入要求,因此耦合性低,软件项目接入本方法的难度低,在本方法支持的类型内普适性高。
附图说明
图1为一种基于多种类型项目的自动化容器启动方法的流程图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
如图1所示,一种基于多种类型项目的自动化容器启动方法,包括以下步骤:
S1、根据组件的标识,从数据库中读取组件的项目类型、构建信息、网络信息、挂载信息、运行信息和配置信息;
组件的构建信息,包括组件的构建信息,包括源代码的来源地址、构建命令和构建脚本;
组件的挂载信息,包括挂载资源的类型和挂载的内容。
组件的网络信息,包括网络资源的类型、容器内服务绑定的端口号和对外暴露的端口号。
组件的运行信息,包括启动命令、容器类型和服务绑定的端口号。
组件的配置信息,包括构建参数、运行参数、环境变量和容器参数。
S2、根据组件的项目类型和构建信息,调取或生成容器的镜像;
S3、根据组件的网络信息和挂载信息,调用kubernetes集群的远程接口,建立并运行容器所需的资源;
S4、从镜像仓库调取容器的镜像,基于容器的镜像、运行容器所需的资源、组件的运行信息和组件的配置信息,调用kubernetes集群的远程接口,启动容器。
步骤S2包括以下分步骤:
S21、判断项目类型是否为普通镜像或中间件模板(其中“中间件”是专有名词,泛指介于业务系统和数据库之间的非业务应用程序,比如Redis、Zookeeper及Kafka等;“中间件模板”是指本方法提前将中间件的镜像和容器化启动方法制作成脚本模板,用户在使用时可以通过脚本模板直接启动对应的中间件集群),若是,则从镜像仓库获取指定的容器的镜像,结束分步骤,若否,则项目类型为java、nginx前端、nodejs前端或python,并跳转至步骤S22;
S22、根据构建信息中的源代码来源地址,从代码仓库调出项目的源代码到本地Linux构建环境,编译项目的源代码,生成容器的镜像,结束分步骤。
步骤S22中编译项目的源代码,生成容器的镜像包括以下分步骤:
A1、若项目类型为java,采用maven工具,将项目的源代码编译生成jar包;
A2、根据java基础镜像,将jar包构建生成java容器的镜像;
A3、若项目类型为nginx前端,采用yarn工具,将项目的源代码编译生成nginx前端tar包;
A4、根据nginx基础镜像,将nginx前端tar包构建生成nginx前端容器的镜像;
A5、若项目类型为nodejs前端,采用yarn工具,将项目的源代码编译生成nodejs前端tar包;
A6、根据nodejs基础镜像,将nodejs前端tar包构建生成nodejs前端容器的镜像;
A7、若项目类型为python前端,将项目的源代码编译生成python tar包;
A8、根据python基础镜像,将python tar包构建生成python容器的镜像。
将构建生成的容器的镜像上传至镜像仓库。
步骤S3中容器所需的资源包括:网络资源和挂载资源。
网络资源的类型包括:ClusterIP、NodePort和Ingress。
挂载资源的类型包括:PersistentVolumeClaim、ConfigMap、InitContainer和SideCar。
组件是指一个容器运行起来所需要的所有信息,包括基本信息(如名称、描述、项目类型等)、构建信息(如源代码来源、构建命令等)、运行信息(如启动命令、容器类型、服务绑定端口号等),等等。
Linux构建环境:用于编译源代码并生成指定容器镜像的Linux环境。
Kubernetes集群:用于容器的运行时环境,基于kubernetes底层架构,由多台主机构成集群。
代码仓库:用于存储所有项目的源代码,从该仓库中拉取源代码。
镜像仓库:用于存储所有组件的容器镜像,将生成好的镜像上传到该仓库,而kubernetes集群从该仓库中拉取指定镜像并根据指定命令运行成容器。
Claims (4)
1.一种基于多种类型项目的自动化容器启动方法,其特征在于,包括以下步骤:
S1、根据组件的标识,从数据库中读取组件的项目类型、构建信息、网络信息、挂载信息、运行信息和配置信息;
S2、根据组件的项目类型和构建信息,调取或生成容器的镜像;
S3、根据组件的网络信息和挂载信息,调用kubernetes集群的远程接口,建立并运行容器所需的资源;
S4、基于容器的镜像、运行容器所需的资源、组件的运行信息和组件的配置信息,调用kubernetes集群的远程接口,启动容器;
所述步骤S2包括以下分步骤:
S21、判断项目类型是否为普通镜像或中间件模板,若是,则从镜像仓库获取指定的容器的镜像,结束分步骤,若否,则项目类型为java、nginx前端、nodejs前端或python,并跳转至步骤S22;
S22、根据构建信息中的源代码来源地址,从代码仓库调出项目的源代码到本地Linux构建环境,编译项目的源代码,生成容器的镜像,结束分步骤;
所述中间件模板为将中间件的镜像和容器化启动方法制作成的脚本模板,通过脚本模板直接启动对应的中间件集群;所述中间件集群包括6节点Redis集群、3节点Zookeeper集群和3节点Kafka集群;
所述步骤S22中编译项目的源代码,生成容器的镜像包括以下分步骤:
A1、若项目类型为java,采用maven工具,将项目的源代码编译生成jar包;
A2、根据java基础镜像,将jar包构建生成java容器的镜像;
A3、若项目类型为nginx前端,采用yarn工具,将项目的源代码编译生成nginx前端tar包;
A4、根据nginx基础镜像,将nginx前端tar包构建生成nginx前端容器的镜像;
A5、若项目类型为nodejs前端,采用yarn工具,将项目的源代码编译生成nodejs前端tar包;
A6、根据nodejs基础镜像,将nodejs前端tar包构建生成nodejs前端容器的镜像;
A7、若项目类型为python,将项目的源代码编译生成python tar包;
A8、根据python基础镜像,将python tar包构建生成python容器的镜像。
2.根据权利要求1所述的基于多种类型项目的自动化容器启动方法,其特征在于,所述步骤S3中容器所需的资源包括:网络资源和挂载资源。
3.根据权利要求2所述的基于多种类型项目的自动化容器启动方法,其特征在于,所述网络资源的类型包括:ClusterIP、NodePort和Ingress。
4.根据权利要求2所述的基于多种类型项目的自动化容器启动方法,其特征在于,所述挂载资源的类型包括:PersistentVolumeClaim、ConfigMap、InitContainer和SideCar。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110843247.XA CN113485795B (zh) | 2021-07-26 | 2021-07-26 | 一种基于多种类型项目的自动化容器启动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110843247.XA CN113485795B (zh) | 2021-07-26 | 2021-07-26 | 一种基于多种类型项目的自动化容器启动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113485795A CN113485795A (zh) | 2021-10-08 |
CN113485795B true CN113485795B (zh) | 2024-03-26 |
Family
ID=77943650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110843247.XA Active CN113485795B (zh) | 2021-07-26 | 2021-07-26 | 一种基于多种类型项目的自动化容器启动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485795B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678756A (zh) * | 2017-09-29 | 2018-02-09 | 千寻位置网络有限公司 | 一种基于Docker的Web应用一键发布方法 |
CN108958927A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 容器应用的部署方法、装置、计算机设备和存储介质 |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、系统、服务器、装置及存储介质 |
CN110058863A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | Docker容器的构建方法、装置、设备及存储介质 |
CN110286997A (zh) * | 2019-05-17 | 2019-09-27 | 平安科技(深圳)有限公司 | 多容器应用创建方法、装置、计算机设备及存储介质 |
CN111124596A (zh) * | 2018-11-01 | 2020-05-08 | 千寻位置网络有限公司 | 基于容器的发布管理方法及其系统 |
CN111399865A (zh) * | 2020-04-21 | 2020-07-10 | 贵州新致普惠信息技术有限公司 | 一种基于容器技术自动构建目标文件的方法 |
CN111399897A (zh) * | 2020-02-21 | 2020-07-10 | 北京值得买科技股份有限公司 | 基于kubernetes的应用发布方法以及系统 |
CN111930388A (zh) * | 2020-07-13 | 2020-11-13 | 银盛支付服务股份有限公司 | 一种基于k8s、docker容器的持续化集成方法和系统 |
WO2021035553A1 (zh) * | 2019-08-27 | 2021-03-04 | 西门子股份公司 | 应用程序开发部署方法、装置和计算机可读介质 |
CN112463165A (zh) * | 2021-02-03 | 2021-03-09 | 北京并行科技股份有限公司 | 一种程序镜像构建方法、系统、计算设备及可读存储介质 |
WO2021098392A1 (zh) * | 2019-11-19 | 2021-05-27 | 平安科技(深圳)有限公司 | 应用部署方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387199B2 (en) * | 2017-03-31 | 2019-08-20 | International Business Machines Corporation | Container chaining for automated process completion |
-
2021
- 2021-07-26 CN CN202110843247.XA patent/CN113485795B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107678756A (zh) * | 2017-09-29 | 2018-02-09 | 千寻位置网络有限公司 | 一种基于Docker的Web应用一键发布方法 |
WO2019095936A1 (zh) * | 2017-11-15 | 2019-05-23 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、系统、服务器、装置及存储介质 |
CN108958927A (zh) * | 2018-05-31 | 2018-12-07 | 康键信息技术(深圳)有限公司 | 容器应用的部署方法、装置、计算机设备和存储介质 |
CN111124596A (zh) * | 2018-11-01 | 2020-05-08 | 千寻位置网络有限公司 | 基于容器的发布管理方法及其系统 |
CN110058863A (zh) * | 2019-03-16 | 2019-07-26 | 平安城市建设科技(深圳)有限公司 | Docker容器的构建方法、装置、设备及存储介质 |
CN110286997A (zh) * | 2019-05-17 | 2019-09-27 | 平安科技(深圳)有限公司 | 多容器应用创建方法、装置、计算机设备及存储介质 |
WO2021035553A1 (zh) * | 2019-08-27 | 2021-03-04 | 西门子股份公司 | 应用程序开发部署方法、装置和计算机可读介质 |
WO2021098392A1 (zh) * | 2019-11-19 | 2021-05-27 | 平安科技(深圳)有限公司 | 应用部署方法、装置、电子设备及存储介质 |
CN111399897A (zh) * | 2020-02-21 | 2020-07-10 | 北京值得买科技股份有限公司 | 基于kubernetes的应用发布方法以及系统 |
CN111399865A (zh) * | 2020-04-21 | 2020-07-10 | 贵州新致普惠信息技术有限公司 | 一种基于容器技术自动构建目标文件的方法 |
CN111930388A (zh) * | 2020-07-13 | 2020-11-13 | 银盛支付服务股份有限公司 | 一种基于k8s、docker容器的持续化集成方法和系统 |
CN112463165A (zh) * | 2021-02-03 | 2021-03-09 | 北京并行科技股份有限公司 | 一种程序镜像构建方法、系统、计算设备及可读存储介质 |
Non-Patent Citations (1)
Title |
---|
基于Docker的研发部署管理平台的设计与实现;王飞;中国优秀硕士学位论文全文数据库 (信息科技辑);20150915;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113485795A (zh) | 2021-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309441B (zh) | 一种基于Jenkins实现DevOps的微服务部署方法 | |
CN107147704B (zh) | 一种面向区块链的通用服务中间件系统 | |
JP6755158B2 (ja) | 計算機システム、計算機システムによるソフトウェアの更新方法、及び、そのためのプログラム | |
CN109523383B (zh) | 一种智能合约转换系统及方法 | |
US9122520B2 (en) | Generic wait service: pausing a BPEL process | |
US8271609B2 (en) | Dynamic service invocation and service adaptation in BPEL SOA process | |
US8910166B2 (en) | Automatic transcoding and semantic adaptation between scripting and workflow systems | |
US20080288962A1 (en) | Method and System for Dynamic Remote injection of In-process Agents into Virtual Machine based Applications | |
CN112506477B (zh) | 一种在Kubernetes集群中使用RESTful API添加计算节点的方法 | |
CN103019874A (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN114064213B (zh) | 基于Kubernets容器环境的快速编排服务方法及系统 | |
WO2023231704A1 (zh) | 算法运行方法、装置、设备、存储介质 | |
CN115202874A (zh) | 基于声明式api的数据传输系统资源调度的方法及存储介质 | |
CN111857801A (zh) | 一种移动应用的构建方法 | |
CN115543546A (zh) | 一种基于Spring的模块热部署方法及系统 | |
CN113485795B (zh) | 一种基于多种类型项目的自动化容器启动方法 | |
CN111522623B (zh) | 组件化软件多进程运行系统 | |
CN113296795A (zh) | 应用部署方法、装置、设备、存储介质及程序产品 | |
CN110727568A (zh) | 一种云环境下的多源日志数据处理系统及方法 | |
CN110659022A (zh) | 一种基于Java自动调用Python脚本的方法 | |
CN116009984A (zh) | 安全编排与自动化响应处理方法、装置及电子设备 | |
CN114860300A (zh) | 依赖配置方法及装置、电子设备及存储介质 | |
CN112817808B (zh) | 一种计算机集群维护任务管理方法及系统 | |
US8239837B2 (en) | Remotely handling exceptions through STAF | |
CN111984275A (zh) | 基于cpu架构类型的系统部署方法、系统、终端及存储介质 |
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 |