CN116302361A - 镜像构建方法、装置、处理器及电子设备 - Google Patents
镜像构建方法、装置、处理器及电子设备 Download PDFInfo
- Publication number
- CN116302361A CN116302361A CN202310345300.2A CN202310345300A CN116302361A CN 116302361 A CN116302361 A CN 116302361A CN 202310345300 A CN202310345300 A CN 202310345300A CN 116302361 A CN116302361 A CN 116302361A
- Authority
- CN
- China
- Prior art keywords
- construction
- image
- file
- operating system
- image construction
- 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
Links
Images
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/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本发明公开了一种镜像构建方法、装置、处理器及电子设备。涉及镜像领域。该方法包括:调取预定版本库中存储的镜像构建文本文件;读取所述镜像构建文本文件中的基础镜像信息;依据所述基础镜像信息与目标命令,构建临时运行容器,其中,所述目标命令用于确定所述临时运行容器对应的硬件架构与操作***;运行所述临时运行容器,获取所述临时运行容器执行所述目标命令后输出的所述临时运行容器对应的硬件架构与操作***;发送所述镜像构建文本文件至目标构建机。本发明解决了相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
Description
技术领域
本发明涉及镜像领域,具体而言,涉及一种镜像构建方法、装置、处理器及电子设备。
背景技术
现有的跨架构镜像方法通常是人工分类不同架构的镜像到不同git版本库,然后对应不同的架构和操作***配置不同的构建机,可知,相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种镜像构建方法、装置、处理器及电子设备,以至少解决相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
根据本发明实施例的一个方面,提供了一种镜像构建方法,包括:调取预定版本库中存储的镜像构建文本文件;读取所述镜像构建文本文件中的基础镜像信息;依据所述基础镜像信息与目标命令,构建临时运行容器,其中,所述目标命令用于确定所述临时运行容器对应的硬件架构与操作***;运行所述临时运行容器,获取所述临时运行容器执行所述目标命令后输出的所述临时运行容器对应的硬件架构与操作***;发送所述镜像构建文本文件至目标构建机,其中,所述目标构建机对应的硬件架构与操作***与所述临时运行容器对应的硬件架构与操作***一致,所述目标构建机用于从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件,依据所述镜像构建文件构建镜像。
可选地,所述依据所述基础镜像信息与目标命令,构建临时运行容器,包括:确定本地硬件架构与本地操作***与所述基础镜像信息对应的硬件架构与操作***是否一致的一致性结果;在所述一致性结果为所述本地硬件架构与所述本地操作***与所述基础镜像信息对应的硬件架构与操作***不一致的情况下,依据所述基础镜像信息与所述目标命令,构建所述临时运行容器。
可选地,所述确定本地硬件架构与本地操作***与所述基础镜像信息对应的硬件架构与操作***是否一致的一致性结果之后,还包括:在所述一致性结果为所述本地硬件架构与所述本地操作***与所述基础镜像信息对应的硬件架构与操作***一致的情况下,从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件;依据所述镜像构建文件构建镜像。
可选地,所述从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件之前,还包括:依据所述镜像构建文本文件与所述预定版本库,确定镜像构建忽略文件,其中,所述镜像构建忽略文件表示在构建镜像过程中不需要从所述预定版本库中调取的文件;依据所述镜像构建文本文件与所述镜像构建忽略文件,确定所述镜像构建文件。
可选地,所述依据所述镜像构建文本文件与所述预定版本库,确定镜像构建忽略文件,包括:确定所述镜像构建文本文件中包括的依赖项;依据所述依赖项以及所述预定版本库,确定所述镜像构建忽略文件。
可选地,所述依据所述镜像构建文件构建镜像,包括:在所述镜像构建文件为多个的情况下,依据多个镜像构建文件,并行构建多个镜像。
可选地,所述发送所述镜像构建文本文件至目标构建机之后,还包括:接收所述目标构建机发送的构建结果,其中,所述构建结果表示所述目标构建机构建镜像的构建结果。
根据本发明实施例的一个方面,提供了一种镜像构建装置,包括:调取模块,用于调取预定版本库中存储的镜像构建文本文件;读取模块,用于读取所述镜像构建文本文件中的基础镜像信息;构建模块,用于依据所述基础镜像信息与目标命令,构建临时运行容器,其中,所述目标命令用于确定所述临时运行容器对应的硬件架构与操作***;获取模块,用于运行所述临时运行容器,获取所述临时运行容器执行所述目标命令后输出的所述临时运行容器对应的硬件架构与操作***;发送模块,用于发送所述镜像构建文本文件至目标构建机,其中,所述目标构建机对应的硬件架构与操作***与所述临时运行容器对应的硬件架构与操作***一致,所述目标构建机用于从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件,依据所述镜像构建文件构建镜像。
根据本发明实施例的一个方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的镜像构建方法。
根据本发明实施例的一个方面,提供了一种电子设备,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述任意一项所述的镜像构建方法。
在本发明实施例中,调取预定版本库中存储的镜像构建文本文件,读取镜像构建文本文件中的基础镜像信息,依据基础镜像信息与目标命令,构建临时运行容器,运行临时运行容器,获取临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***,发送镜像构建文本文件至目标构建机,其中,目标构建机对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***一致,以使目标构建机从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。由于直接将对应硬件架构与操作***的镜像构建文本文件发送给了目标构建机,目标构建机能够直接依据镜像构建文本文件调取镜像构建文件,以达到快速、便捷构建镜像的效果,进而解决了相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例提供的镜像构建方法的流程图;
图2是本发明可选实施方式提供的镜像构建***示意图;
图3是本发明可选实施方式提供的镜像构建流程图;
图4是根据本申请实施例提供的镜像构建装置的结构框图;
图5是本发明实施例提供的电子设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本公开所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
Docker:拉取镜像,构建镜像,推送镜像的工具。
构建机:安装了Docker软件,可以构建镜像的机器。
镜像:镜像是Docker中的核心概念之一,它是一个轻量级的、可执行的独立软件包,其中包括了运行某个应用程序所需的所有内容,包括代码、运行时环境、***工具、库文件等等。镜像可以被看作是一个只读的模板,它是创建Docker容器的基础。
基础镜像:是指在Docker容器中使用的最基本的镜像,它包含了一个最小的操作***,以及可以运行其他软件的一些基本组件和工具。
基础镜像信息:指的是包含在Dockerfile文件中,用于构建基础镜像的指令信息,包括了基础镜像的名称、版本、来源、镜像大小等。
Dockerfile文件:Dockerfile文件是用来定义Docker镜像构建过程的文本文件。它包含了一系列指令和配置,包括基础镜像信息,文件拷贝信息等等,用来告诉Docker引擎如何构建一个Docker镜像。
Git版本库:存储代码的仓库工具,也可以理解为Git版本库是一个用于管理源代码的分布式版本控制***。它允许开发人员在多个计算机之间协作开发同一项目,并记录每个开发者的修改历史,从而提高代码协作和管理的效率。
依赖项:在Dockerfile文件中,依赖通常是指应用程序所依赖的库、框架、工具和其他软件包。Dockerfile文件中通过一系列指令来描述应用程序的构建过程,其中包括安装和配置应用程序所需要的依赖项。
.Dockerignore:.Dockerignore是一个配置文件,用于在构建Docker镜像时指定哪些文件或目录不需要包含在镜像中。与.gitignore类似,.Dockerignore文件也是一个纯文本文件,每行指定一个需要忽略的文件或目录的路径。
Node_modules:在前端广泛使用的开发工具nodejs存储依赖的文件夹,有数量极多的小文件。
下面结合优选的实施步骤对本发明进行说明,图1是根据本申请实施例提供的镜像构建方法的流程图,如图1所示。
首先需要说明的是,本申请所提供方法的应用场景为,多个构建机以及git版本库组成的***,其中,git版本库中包括多个不同硬件架构与硬件***对应的镜像构建文本文件。本申请实施例提供的镜像构建方法的执行主体为多个构建机中的一个构建机,可以将其称为入口构建机,仅需要一个入口构建机调取git版本库中的镜像构建文本文件,然后通过判断硬件架构与操作***,发送镜像构建文本文件至对应硬件架构与操作***的构建机,即可执行镜像构建的操作。
下面对本申请实施例提供的镜像构建方法进行介绍,该方法包括如下步骤:
步骤S101,调取预定版本库中存储的镜像构建文本文件;
在本申请提供的步骤S101中,调取出了预定版本库中存储的镜像构建文本文件,其中,预定版本库为git版本库,里面可以包括多个不同硬件架构与硬件***对应的镜像构建文本文件,其中,镜像构建文本文件可以为Dockerfile文件。通过本申请提供的方法,只需要一个版本库统一管理,不需要按不同的架构区分不同的版本库,便捷了镜像构建的过程。
步骤S102,读取镜像构建文本文件中的基础镜像信息;
步骤S103,依据基础镜像信息与目标命令,构建临时运行容器,其中,目标命令用于确定临时运行容器对应的硬件架构与操作***;
在本申请提供的步骤S102-S103中,读取镜像构建文本文件中的基础镜像信息,以依据基础镜像信息与目标命令,构建临时运行容器,其中,构建临时运行容器的主要目的是为了在基础镜像的基础上创建一个可运行的容器实例,以便在其中运行一些测试、调试或其他临时任务,即可以基于目标命令构建出的临时容器,用于执行目标命令,而不必构建新的镜像,在执行完目标命令后会自行删除,不会占用内存,达到节省资源的效果。通过临时运行容器,也可以在基础镜像的基础上进行一些修改和调试,以便更好地理解和处理容器环境中的问题。
其中,操作***可以是例如windows,或者linux***,硬件架构可以是x86处理器架构之类的架构。
步骤S104,运行临时运行容器,获取临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***;
在本申请提供的步骤S104中,通过运行临时运行容器,即可获取到临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***,由于临时运行容器对应的硬件架构与操作***与基础镜像信息中对应的硬件架构与操作***是一致的,因此,与临时运行容器对应的硬件架构与操作***一致的话,与基础镜像信息中对应的硬件架构与操作***也是一致的。通过该方式,能够自动识别硬件架构和操作***,不需要复杂易错的手工配置方式。
步骤S105,发送镜像构建文本文件至目标构建机,其中,目标构建机对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***一致,目标构建机用于从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。
在本申请提供的步骤S105中,发送镜像构建文本文件至对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***是一致的目标构建机,即可从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。而不用目标构建机去特定的版本库调取,节省了构建镜像的时间,提高了构建镜像的效率。
通过上述步骤,调取预定版本库中存储的镜像构建文本文件,读取镜像构建文本文件中的基础镜像信息,依据基础镜像信息与目标命令,构建临时运行容器,运行临时运行容器,获取临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***,发送镜像构建文本文件至目标构建机,其中,目标构建机对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***一致,以使目标构建机从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。由于直接将对应硬件架构与操作***的镜像构建文本文件发送给了目标构建机,目标构建机能够直接依据镜像构建文本文件调取镜像构建文件,以达到快速、便捷构建镜像的效果,进而解决了相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
作为一种可选的实施例,依据基础镜像信息与目标命令,构建临时运行容器,包括:确定本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果;在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***不一致的情况下,依据基础镜像信息与目标命令,构建临时运行容器。
在该实施例中,根据基础镜像信息,只能够确定出本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致,即只能确定出本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果,在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***不一致的情况下,就要确定出基础镜像信息对应的硬件架构和操作***,以便将镜像构建文本文件发送至对应的构建机,在该情况下,即可以通过确定临时运行容器对应的硬件架构与操作***确定基础镜像信息对应的硬件架构和操作***。因此,可以依据基础镜像信息与目标命令,构建临时运行容器,以达到确定临时运行容器、基础镜像信息对应的硬件架构与操作***的目的。
作为一种可选的实施例,确定本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果之后,还包括:在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***一致的情况下,从预定版本库中调取与镜像构建文本文件对应的镜像构建文件;依据镜像构建文件构建镜像。
在该实施例中,根据基础镜像信息,只能够确定出本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致,即只能确定出本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果,在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***一致的情况下,说明调取出的这个镜像构建文本文件就是当前构建机可以使用的文件,因此,可以直接从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。
作为一种可选的实施例,从预定版本库中调取与镜像构建文本文件对应的镜像构建文件之前,还包括:依据镜像构建文本文件与预定版本库,确定镜像构建忽略文件,其中,镜像构建忽略文件表示在构建镜像过程中不需要从预定版本库中调取的文件;依据镜像构建文本文件与镜像构建忽略文件,确定镜像构建文件。
在该实施例中,镜像构建忽略文件可以如.Dockerignore文件,在此过程中,依据镜像构建文本文件与预定版本库可以快速生成,在确定镜像构建文件时,文件中只包括了需要用到的文件,因此,不仅加快了镜像构建文件进行,还加快了镜像构建的过程。
作为一种可选的实施例,依据镜像构建文本文件与预定版本库,确定镜像构建忽略文件,包括:确定镜像构建文本文件中包括的依赖项;依据依赖项以及预定版本库,确定镜像构建忽略文件。
在该实施例中,说明了镜像构建忽略文件的确定过程,可以依据镜像构建文本文件中包括的依赖项以及预定版本库得到。通过该实施例,可以自动识别Dockerfile中的依赖项,精简构建目录,避免冗余拷贝,加快构建镜像的速度。
作为一种可选的实施例,依据镜像构建文件构建镜像,包括:在镜像构建文件为多个的情况下,依据多个镜像构建文件,并行构建多个镜像。
在该实施例中,在镜像构建文件为多个的情况下,其实指的也是镜像构建文本文件为多个,从多个镜像构建文本文件中能够分别读取出对应的基础镜像信息,在多个基础镜像信息对应的硬件架构与操作***与本地硬件架构与本地操作***均一致的情况下,可以依据多个镜像构建文本文件调取多个镜像构建文件,以并行构建多个镜像。在多个基础镜像信息对应的硬件架构与操作***与本地硬件架构与本地操作***均不一致的情况下,通过多个基础镜像信息,得到多个临时运行容器对应的硬件架构与操作***,在这多个临时运行容器对应的硬件架构与操作***均相同的情况下,发送至一个目标构建机,以使得目标构建机能够依据多个镜像构建文本文件,调取多个镜像构建文件,以并行构建多个镜像。构建机会开启多线程并行构建,最大限度地使用cpu和网络资源,加大构建速度,避免单个镜像构建卡顿导致整体速度下降。
作为一种可选的实施例,发送镜像构建文本文件至目标构建机之后,还包括:接收目标构建机发送的构建结果,其中,构建结果表示目标构建机构建镜像的构建结果。
在该实施例中,目标构建机的构建结果都会反馈给入口构建机,以使得入口构建机能知晓整个***中所有构建机构建镜像的状态,有利于协调统一管理。
基于上述实施例及可选实施例,提供了一种可选实施方式,下面具体说明。
在相关技术中,跨架构镜像方法通常是人工分类不同架构的镜像到不同git版本库,然后对应不同的架构和操作***配置不同的构建机,存在版本管理复杂,配置复杂,人工介入多,容易出错、无法自动识别架构和操作***,依赖人工配置、无法自动排除目录中冗余的文件,导致构建缓慢、一台机器只有一个线程参与构建,导致构建缓慢、需要同时拉取多个版本库的内容进行合并,流程复杂等诸多问题。
鉴于此,本发明可选实施方式中提供了一种镜像构建方法,其能够解决上述问题,下面对本发明可选实施方式进行介绍。
图2是本发明可选实施方式提供的镜像构建***示意图,如图2所示,该***为多个构建机以及git版本库组成的***,其中,git版本库中包括多个不同硬件架构与硬件***对应的镜像构建文本文件。本申请实施例提供的镜像构建方法的执行主体为多个构建机中的一个构建机,称为入口构建机,仅需要一个入口构建机调取git版本库中的镜像构建文本文件,然后通过判断硬件架构与操作***,发送镜像构建文本文件至对应硬件架构与操作***的构建机,即可执行镜像构建的操作。
图3是本发明可选实施方式提供的镜像构建流程图,如图3所示,入口构建机发送镜像构建文本文件至对应硬件架构与操作***的构建机,构建机可以确定镜像构建文本文件与构建机本身的硬件架构与操作***是否一致,在一致的情况下,依据镜像构建文本文件从版本库中确定出镜像构建忽略文件,在确定出镜像构建文件,以根据镜像构建文件构建镜像。在包括多个镜像构建文件的情况下,并行构建多个镜像。并在构建完成后,反馈构建结果至入口构建机。具体步骤如下:
S1,入口构建机从git版本库拉取所有Dockerfile文件;
S2,逐一读取Dockerfile中记载的基础镜像信息;
S3,使用Docker工具依据基础镜像信息,构建临时运行容器,审查其架构和操作***,并记录。
需要说明的是,镜像构建是最佳实践是在和自身有相同架构和操作***的构建机上构建。因此本发明根据记录的架构和操作***对待构建镜像进行分组,同时通过ssh协议调度其它架构和操作***的构建机等待构建,根据架构和操作***的不同组合,有以下分类的构建机:
-windows操作***,x86架构,等等;
-linux操作***,x86架构,等等。
S4,发送Dockerfile至与之对应的架构和操作***的构建机;
S5,每台接收到Dockerfile文件的构建机会检视自身分配到的Dockerfile文件,查看其基础镜像信息对应的架构与操作***是否与自身架构与操作***一致;
S6,在一致的情况下,检查Dockerfile内包含的依赖,动态生成.Dockerignore文件以精确构建目录,避免冗余拷贝。
需要说明的是,Docker在构建时默认会将工作目录的所有文件上送到构建镜像进程,但是Dockerfile只会引用其中的部分依赖,其中多余的部分本不需要发送到守护进程,这会导致构建时间过长。尤其是遇到类似node_modules数量众多的小文件,耗时会拉长到1小时。本发明动态生成.Dockerignore文件可以排除不必要的文件,使Docker更精确地发送文件到构建镜像进程,加大构建速度。
S7,在受调度的构建机收到多个Dockerfile文件的情况下,会开启多线程并行构建,最大限度地使用cpu和网络资源,加大构建速度,避免单个镜像构建卡顿导致整体速度下降。
通过上述可选实施方式,可以达到至少以下几点有益效果:
(1)只需要一个版本库统一管理,不需要按不同的架构区分不同的版本库;
(2)自动识别镜像的架构和操作***,不需要复杂易错的手工配置方式;
(3)可以调度多台构建机并行构建,加大构建速度;
(4)在单台构建机上可以调度多线程进行构建,最大限度地利用***资源;
(5)可以自动识别Dockerfile中的依赖,精简构建目录,避免冗余拷贝,加快构建速度。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
根据本发明实施例,还提供了一种用于实施上述镜像构建方法的装置,图4是根据本申请实施例提供的镜像构建装置的结构框图,如图4所示,该装置包括:调取模块401,读取模块402,构建模块403,获取模块404和发送模块405,下面对该装置进行详细说明。
调取模块401,用于调取预定版本库中存储的镜像构建文本文件;读取模块402,连接于上述调取模块401,用于读取所述镜像构建文本文件中的基础镜像信息;构建模块403,连接于上述读取模块402,用于依据所述基础镜像信息与目标命令,构建临时运行容器,其中,所述目标命令用于确定所述临时运行容器对应的硬件架构与操作***;获取模块404,连接于上述构建模块403,用于运行所述临时运行容器,获取所述临时运行容器执行所述目标命令后输出的所述临时运行容器对应的硬件架构与操作***;发送模块405,连接于上述获取模块404,用于发送所述镜像构建文本文件至目标构建机,其中,所述目标构建机对应的硬件架构与操作***与所述临时运行容器对应的硬件架构与操作***一致,所述目标构建机用于从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件,依据所述镜像构建文件构建镜像。
此处需要说明的是,上述调取模块401,读取模块402,构建模块403,获取模块404和发送模块405对应于实施镜像构建方法中的步骤S101至步骤S105,多个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例所公开的内容。
本申请实施例提供的镜像构建装置,调取预定版本库中存储的镜像构建文本文件,读取镜像构建文本文件中的基础镜像信息,依据基础镜像信息与目标命令,构建临时运行容器,运行临时运行容器,获取临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***,发送镜像构建文本文件至目标构建机,其中,目标构建机对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***一致,以使目标构建机从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。由于直接将对应硬件架构与操作***的镜像构建文本文件发送给了目标构建机,目标构建机能够直接依据镜像构建文本文件调取镜像构建文件,以达到快速、便捷构建镜像的效果,进而解决了相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
所述镜像构建装置包括处理器和存储器,上述多个模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决相关技术中在构建机上构建镜像时,需要去与硬件架构和操作***对应的特定版本库中调取镜像构建文本文件,造成的构建镜像步骤繁琐、构建镜像效率低的技术问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现镜像构建方法。
本发明实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行镜像构建方法。
图5是本发明实施例提供的电子设备的示意图,如图5所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:调取预定版本库中存储的镜像构建文本文件;读取镜像构建文本文件中的基础镜像信息;依据基础镜像信息与目标命令,构建临时运行容器,其中,目标命令用于确定临时运行容器对应的硬件架构与操作***;运行临时运行容器,获取临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***;发送镜像构建文本文件至目标构建机,其中,目标构建机对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***一致,目标构建机用于从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。
可选地,依据基础镜像信息与目标命令,构建临时运行容器,包括:确定本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果;在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***不一致的情况下,依据基础镜像信息与目标命令,构建临时运行容器。
可选地,确定本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果之后,还包括:在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***一致的情况下,从预定版本库中调取与镜像构建文本文件对应的镜像构建文件;依据镜像构建文件构建镜像。
可选地,从预定版本库中调取与镜像构建文本文件对应的镜像构建文件之前,还包括:依据镜像构建文本文件与预定版本库,确定镜像构建忽略文件,其中,镜像构建忽略文件表示在构建镜像过程中不需要从预定版本库中调取的文件;依据镜像构建文本文件与镜像构建忽略文件,确定镜像构建文件。
可选地,依据镜像构建文本文件与预定版本库,确定镜像构建忽略文件,包括:确定镜像构建文本文件中包括的依赖项;依据依赖项以及预定版本库,确定镜像构建忽略文件。
可选地,依据镜像构建文件构建镜像,包括:在镜像构建文件为多个的情况下,依据多个镜像构建文件,并行构建多个镜像。
可选地,发送镜像构建文本文件至目标构建机之后,还包括:接收目标构建机发送的构建结果,其中,构建结果表示目标构建机构建镜像的构建结果。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:调取预定版本库中存储的镜像构建文本文件;读取镜像构建文本文件中的基础镜像信息;依据基础镜像信息与目标命令,构建临时运行容器,其中,目标命令用于确定临时运行容器对应的硬件架构与操作***;运行临时运行容器,获取临时运行容器执行目标命令后输出的临时运行容器对应的硬件架构与操作***;发送镜像构建文本文件至目标构建机,其中,目标构建机对应的硬件架构与操作***与临时运行容器对应的硬件架构与操作***一致,目标构建机用于从预定版本库中调取与镜像构建文本文件对应的镜像构建文件,依据镜像构建文件构建镜像。
可选地,依据基础镜像信息与目标命令,构建临时运行容器,包括:确定本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果;在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***不一致的情况下,依据基础镜像信息与目标命令,构建临时运行容器。
可选地,确定本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***是否一致的一致性结果之后,还包括:在一致性结果为本地硬件架构与本地操作***与基础镜像信息对应的硬件架构与操作***一致的情况下,从预定版本库中调取与镜像构建文本文件对应的镜像构建文件;依据镜像构建文件构建镜像。
可选地,从预定版本库中调取与镜像构建文本文件对应的镜像构建文件之前,还包括:依据镜像构建文本文件与预定版本库,确定镜像构建忽略文件,其中,镜像构建忽略文件表示在构建镜像过程中不需要从预定版本库中调取的文件;依据镜像构建文本文件与镜像构建忽略文件,确定镜像构建文件。
可选地,依据镜像构建文本文件与预定版本库,确定镜像构建忽略文件,包括:确定镜像构建文本文件中包括的依赖项;依据依赖项以及预定版本库,确定镜像构建忽略文件。
可选地,依据镜像构建文件构建镜像,包括:在镜像构建文件为多个的情况下,依据多个镜像构建文件,并行构建多个镜像。
可选地,发送镜像构建文本文件至目标构建机之后,还包括:接收目标构建机发送的构建结果,其中,构建结果表示目标构建机构建镜像的构建结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种镜像构建方法,其特征在于,包括:
调取预定版本库中存储的镜像构建文本文件;
读取所述镜像构建文本文件中的基础镜像信息;
依据所述基础镜像信息与目标命令,构建临时运行容器,其中,所述目标命令用于确定所述临时运行容器对应的硬件架构与操作***;
运行所述临时运行容器,获取所述临时运行容器执行所述目标命令后输出的所述临时运行容器对应的硬件架构与操作***;
发送所述镜像构建文本文件至目标构建机,其中,所述目标构建机对应的硬件架构与操作***与所述临时运行容器对应的硬件架构与操作***一致,所述目标构建机用于从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件,依据所述镜像构建文件构建镜像。
2.根据权利要求1所述的方法,其特征在于,所述依据所述基础镜像信息与目标命令,构建临时运行容器,包括:
确定本地硬件架构与本地操作***与所述基础镜像信息对应的硬件架构与操作***是否一致的一致性结果;
在所述一致性结果为所述本地硬件架构与所述本地操作***与所述基础镜像信息对应的硬件架构与操作***不一致的情况下,依据所述基础镜像信息与所述目标命令,构建所述临时运行容器。
3.根据权利要求2所述的方法,其特征在于,所述确定本地硬件架构与本地操作***与所述基础镜像信息对应的硬件架构与操作***是否一致的一致性结果之后,还包括:
在所述一致性结果为所述本地硬件架构与所述本地操作***与所述基础镜像信息对应的硬件架构与操作***一致的情况下,从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件;
依据所述镜像构建文件构建镜像。
4.根据权利要求3所述的方法,其特征在于,所述从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件之前,还包括:
依据所述镜像构建文本文件与所述预定版本库,确定镜像构建忽略文件,其中,所述镜像构建忽略文件表示在构建镜像过程中不需要从所述预定版本库中调取的文件;
依据所述镜像构建文本文件与所述镜像构建忽略文件,确定所述镜像构建文件。
5.根据权利要求4所述的方法,其特征在于,所述依据所述镜像构建文本文件与所述预定版本库,确定镜像构建忽略文件,包括:
确定所述镜像构建文本文件中包括的依赖项;
依据所述依赖项以及所述预定版本库,确定所述镜像构建忽略文件。
6.根据权利要求3所述的方法,其特征在于,所述依据所述镜像构建文件构建镜像,包括:
在所述镜像构建文件为多个的情况下,依据多个镜像构建文件,并行构建多个镜像。
7.根据权利要求1至6中任意一项所述的方法,其特征在于,所述发送所述镜像构建文本文件至目标构建机之后,还包括:
接收所述目标构建机发送的构建结果,其中,所述构建结果表示所述目标构建机构建镜像的构建结果。
8.一种镜像构建装置,其特征在于,包括:
调取模块,用于调取预定版本库中存储的镜像构建文本文件;
读取模块,用于读取所述镜像构建文本文件中的基础镜像信息;
构建模块,用于依据所述基础镜像信息与目标命令,构建临时运行容器,其中,所述目标命令用于确定所述临时运行容器对应的硬件架构与操作***;
获取模块,用于运行所述临时运行容器,获取所述临时运行容器执行所述目标命令后输出的所述临时运行容器对应的硬件架构与操作***;
发送模块,用于发送所述镜像构建文本文件至目标构建机,其中,所述目标构建机对应的硬件架构与操作***与所述临时运行容器对应的硬件架构与操作***一致,所述目标构建机用于从所述预定版本库中调取与所述镜像构建文本文件对应的镜像构建文件,依据所述镜像构建文件构建镜像。
9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的镜像构建方法。
10.一种电子设备,其特征在于,包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任意一项所述的镜像构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310345300.2A CN116302361A (zh) | 2023-03-31 | 2023-03-31 | 镜像构建方法、装置、处理器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310345300.2A CN116302361A (zh) | 2023-03-31 | 2023-03-31 | 镜像构建方法、装置、处理器及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116302361A true CN116302361A (zh) | 2023-06-23 |
Family
ID=86837865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310345300.2A Pending CN116302361A (zh) | 2023-03-31 | 2023-03-31 | 镜像构建方法、装置、处理器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116302361A (zh) |
-
2023
- 2023-03-31 CN CN202310345300.2A patent/CN116302361A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11150916B2 (en) | Execution of workflows in distributed systems | |
US10824404B2 (en) | Methods and systems for uploading a program based on a target network platform | |
US9703677B2 (en) | Code coverage plugin | |
US8978020B2 (en) | Generating reusable test components out of remote application programming interface | |
US20170269921A1 (en) | Continuous and automatic application development and deployment | |
CN110955431B (zh) | 编译环境的处理方法及装置 | |
US10409567B2 (en) | Trimming unused dependencies using package graph and module graph | |
US9542173B2 (en) | Dependency handling for software extensions | |
Garbervetsky et al. | Toward full elasticity in distributed static analysis: The case of callgraph analysis | |
CN113885849B (zh) | 基于工业互联网平台的应用开发方法、装置及终端设备 | |
WO2020019993A1 (en) | Virtual machine container for applications | |
CN112099880B (zh) | 场景驱动的应用程序约减方法和*** | |
US11989539B2 (en) | Continuous integration and deployment system time-based management | |
CN109284222B (zh) | 软件单元、数据处理***中的项目测试方法、装置及设备 | |
US20220237025A1 (en) | Active build migration in continuous integration environments | |
CN114791884A (zh) | 测试环境的构建方法、装置、存储介质及电子设备 | |
US11720348B2 (en) | Computing node allocation based on build process specifications in continuous integration environments | |
CN116302361A (zh) | 镜像构建方法、装置、处理器及电子设备 | |
CN111273940B (zh) | 将程序文件上传至代码仓库的方法及装置 | |
US11915007B2 (en) | CI/CD pipeline to container conversion | |
US11960861B1 (en) | System and method for code development tools existing within code container | |
US20240103853A1 (en) | Code maintenance system | |
CN111124931B (zh) | 一种Java代码合规性检查方法和装置 | |
US20240202062A1 (en) | Dynamic network debug service in a containerized computing cluster | |
Sello | Zamperla Analytics Service: design and deployment of a microservice architecture with Kubernetes |
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 |