CN114675928A - 容器镜像的构建方法和装置、存储介质及电子装置 - Google Patents
容器镜像的构建方法和装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN114675928A CN114675928A CN202210213191.4A CN202210213191A CN114675928A CN 114675928 A CN114675928 A CN 114675928A CN 202210213191 A CN202210213191 A CN 202210213191A CN 114675928 A CN114675928 A CN 114675928A
- Authority
- CN
- China
- Prior art keywords
- mirror image
- container
- image
- target
- container mirror
- 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/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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
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
本申请公开了一种容器镜像的构建方法和装置、存储介质及电子装置,涉及智能家居技术领域,该容器镜像的构建方法包括:接收镜像构建请求;响应镜像构建请求,获取目标应用的初始应用文件和容器镜像的构建脚本;通过执行构建脚本,对初始应用文件进行优化,得到目标应用文件;通过执行构建脚本,使用目标应用文件构建目标容器镜像。采用上述技术方案,解决了相关技术中,构建容器镜像的效率较低等问题。
Description
技术领域
本申请涉及智能家居技术领域,具体而言,涉及一种容器镜像的构建方法和装置、存储介质及电子装置。
背景技术
在当前大规模容器化部署的背景下,容器镜像优化的重要性不言而喻。它带来的好处有很多,比如减少容器镜像的构建时间,减少容器镜像对于磁盘存储空间的使用量,减少容器镜像的下载时间,也因为优化后的容器镜像所包含的文件少,使得其攻击面减小,提高了使用的安全性以及部署速度等。
但是,在目前的技术中,对容器镜像进行优化的方式一般是由研发人员根据个人的需求和偏好手动进行操作,并且仅对容器镜像的某个方面进行优化,可见,目前容器镜像的优化方式过于手工化,需要人为确定出需要进行优化的内容并手动进行优化,导致使用目前的优化方式构建的容器镜像依然需要消耗过多的时间。
针对相关技术中,构建容器镜像的效率较低等问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种容器镜像的构建方法和装置、存储介质及电子装置,以至少解决相关技术中,构建容器镜像的效率较低等问题。
根据本申请实施例的一个实施例,提供了一种容器镜像的构建方法,包括:
接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
在一个示例性实施例中,对所述初始应用文件中的配置信息进行配置优化,得到第一应用文件;对所述第一应用文件中的操作指令进行指令优化,得到所述目标应用文件,其中,所述基础资源包括所述配置信息和所述操作指令。
在一个示例性实施例中,从所述初始应用文件中识别镜像版本标识,其中,所述配置信息包括所述镜像版本标识,所述镜像版本标识用于指示为所述目标应用构建容器镜像时所使用的基础容器镜像版本;在所述镜像版本标识与默认版本标识不一致的情况下,将所述初始应用文件中记录的所述镜像版本标识修改为所述默认版本标识,得到所述第一应用文件。
在一个示例性实施例中,从所述第一应用文件所包括的操作指令中删除冗余的操作指令,得到第二应用文件;遍历所述第二应用文件所包括的每个操作指令;在确定所述每个操作指令属于指令类型集合中的目标指令类型的情况下,对属于所述目标指令类型的操作指令执行所述目标指令类型对应的目标优化操作,得到所述目标应用文件,其中,所述指令类型集合用于记录预设的待进行指令优化的一个或者多个指令类型。
在一个示例性实施例中,使用所述目标应用文件中记录的目标配置信息构建初始容器镜像;执行所述目标应用文件中记录的目标操作指令向所述初始容器镜像中添加镜像文件,得到候选容器镜像,其中,在向所述初始容器镜像中添加镜像文件的过程中排除忽略文件列表中所包括的镜像文件;对所述候选容器镜像进行镜像优化,得到所述目标容器镜像。
在一个示例性实施例中,对所述候选容器镜像进行裁剪聚合,得的第一容器镜像;对所述第一容器镜像进行性能测试,得到性能测试报告;在所述性能测试报告用于指示所述第一容器镜像的性能低于目标性能的情况下,对所述第一容器镜像进行调整,直至得到性能高于或者等于所述目标性能的第二容器镜像;将所述第二容器镜像确定为所述目标容器镜像。
在一个示例性实施例中,为所述第一容器镜像构建测试容器;在所述测试容器中运行所述第一容器镜像;在所述第一容器镜像运行的过程中,运行测试脚本,得到测试结果,其中,所述测试脚本用于指示对所述第一容器镜像进行测试的流程;根据所述第一容器镜像的运行过程和所述测试结果生成所述性能测试报告。
根据本申请实施例的另一个实施例,还提供了一种容器镜像的构建装置,包括:接收模块,用于接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
获取模块,用于响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
优化模块,用于通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
构建模块,用于通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
根据本申请实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述容器镜像的构建方法。
根据本申请实施例的又一方面,还提供了一种电子装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,上述处理器通过计算机程序执行上述的容器镜像的构建方法。
在本申请实施例中,接收镜像构建请求,其中,镜像构建请求用于请求为目标应用构建容器镜像,容器镜像用于安装应用;响应镜像构建请求,获取目标应用的初始应用文件和容器镜像的构建脚本,其中,初始应用文件用于指示为目标应用构建容器镜像的过程中所使用的基础资源,构建脚本用于指示为应用构建容器镜像的流程;通过执行构建脚本,对初始应用文件进行优化,得到目标应用文件,其中,目标应用文件用于指示为目标应用构建容器镜像的过程中所使用的优化资源;通过执行构建脚本,使用目标应用文件构建目标容器镜像,其中,目标容器镜像用于安装目标应用,即构建脚本中记录了为应用构建容器镜像的流程,当需要为目标应用构建容器镜像时,可以通过发起镜像构建请求来调用该构建脚本自动执行初始应用文件的优化以及使用优化后的应用文件(即目标应用文件)为目标应用构建目标容器镜像的操作,从而使得容器镜像的构建过程能够自动完成。采用上述技术方案,解决了相关技术中,构建容器镜像的效率较低等问题,实现了提高构建容器镜像的效率的技术效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例的一种容器镜像的构建方法的硬件环境示意图;
图2是根据本申请实施例的一种容器镜像的构建方法的流程图;
图3是根据本申请实施例的容器镜像的构建方法的构建界面示意图一;
图4是根据本申请实施例的容器镜像的构建方法的构建界面示意图二;
图5是根据本申请实施例的容器镜像的构建过程的示意图;
图6是根据本申请实施例的一种容器镜像的构建装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例的一个方面,提供了一种容器镜像的构建方法。该容器镜像的构建方法广泛应用于智慧家庭(Smart Home)、智能家居、智能家用设备生态、智慧住宅(Intelligence House)生态等全屋智能数字化控制应用场景。可选地,在本实施例中,上述容器镜像的构建方法可以应用于如图1所示的由终端设备102和服务器104所构成的硬件环境中。如图1所示,服务器104通过网络与终端设备102进行连接,可用于为终端或终端上安装的客户端提供服务(如应用服务等),可在服务器上或独立于服务器设置数据库,用于为服务器104提供数据存储服务,可在服务器上或独立于服务器配置云计算和/或边缘计算服务,用于为服务器104提供数据运算服务。
上述网络可以包括但不限于以下至少之一:有线网络,无线网络。上述有线网络可以包括但不限于以下至少之一:广域网,城域网,局域网,上述无线网络可以包括但不限于以下至少之一:WIFI(Wireless Fidelity,无线保真),蓝牙。终端设备102可以并不限定于为PC、手机、平板电脑、智能空调、智能烟机、智能冰箱、智能烤箱、智能炉灶、智能洗衣机、智能热水器、智能洗涤设备、智能洗碗机、智能投影设备、智能电视、智能晾衣架、智能窗帘、智能影音、智能插座、智能音响、智能音箱、智能新风设备、智能厨卫设备、智能卫浴设备、智能扫地机器人、智能擦窗机器人、智能拖地机器人、智能空气净化设备、智能蒸箱、智能微波炉、智能厨宝、智能净化器、智能饮水机、智能门锁等。
在本实施例中提供了一种容器镜像的构建方法,图2是根据本申请实施例的一种容器镜像的构建方法的流程图,该流程包括如下步骤:
步骤S202,接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
步骤S204,响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
步骤S206,通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
步骤S208,通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
通过上述步骤,构建脚本中记录了为应用构建容器镜像的流程,当需要为目标应用构建容器镜像时,可以通过发起镜像构建请求来调用该构建脚本自动执行初始应用文件的优化以及使用优化后的应用文件(即目标应用文件)为目标应用构建目标容器镜像的操作,从而使得容器镜像的构建过程能够自动完成。采用上述技术方案,解决了相关技术中,构建容器镜像的效率较低等问题,实现了提高构建容器镜像的效率的技术效果。
可选地,在本实施例中,上述容器镜像的构建方法可以但不限于作为一个功能工具单独部署,比如:在Kaniko工具中部署上述容器镜像的构建功能,用户可以使用该Kaniko工具在Kubernets平台上通过上述容器镜像的构建方法构建容器镜像。或者上述容器镜像的构建方法也可以部署在用于实现其他功能并具有容器镜像构建需求的平台上,比如:在Jenkins平台上部署上述容器镜像的构建功能,用户可以在Jenkins平台上通过调用上述功能为在该平台上开发的应用构建容器镜像。
比如:以用户在应用开发平台构建容器镜像为例,用户在应用开发平台上开发了一款智能控制应用,图3是根据本申请实施例的容器镜像的构建方法的构建界面示意图一,如图3所示,在应用开发平台的显示界面上,显示了用户开发的智能控制应用以及用户为该应用创建的初始应用文件,应用开发平台的显示界面上还显示了其他功能图标,比如:新建图标保存图标和构建图标“★”等等。用户可以通过点击“★”图标,调用构建脚本,并使用初始应用文件自动为智能控制应用构建容器镜像。
在上述步骤S202提供的技术方案中,上述镜像构建请求可以但不限于是由任何类型的具有构建容器镜像需求的主体触发的。比如:镜像构建请求可以由用户(比如:应用的开发人员)触发,用户根据实际需求,如果需要为开发出的目标应用构建容器镜像,则可以通过点击图标,编辑程序等方式发出镜像构建请求。镜像构建请求也可以由应用的开发平台触发等等,应用的开发平台确认目标应用开发完成后,可以自动发起镜像构建请求来请求为目标应用构建容器镜像。
可选地,在本实施例中,上述目标应用可以但不限于包括任何类型的应用,比如:智能设备控制应用,多媒体应用,即时通信应用,购物应用,金融应用等等。
可选地,在本实施例中,容器镜像用于安装应用,在应用开发完成后,可以通过构建容器镜像作为应用的安装包,调用构建的容器镜像即可在需要的位置安装并使用相应的应用。
在上述步骤S204提供的技术方案中,上述初始应用文件用于指示为目标应用构建容器镜像的过程中所使用的基础资源,该基础资源可以但不限于包括:容器运行时所需的程序、库、数据、配置(如匿名卷、环境变量、用户等)等。初始应用文件可以但不限于是开发者在完成应用开发后,为了便于安装应用,根据开发的应用编写的或者自动生成的一个文件系统,用来列举构建容器镜像中所使用的基础资源。该初始应用文件可以但不限于存储在数据仓库中。
可选地,在本实施例中,上述构建脚本用于指示为应用构建容器镜像的流程,也就是说,为应用构建容器镜像的整个流程被集成在构建脚本中,通过对该构建脚本的调用和运行能够自动完成容器镜像的构建,即克服了使用人工手动构建容器镜像的效率较低的问题,还能够克服使用人工手动构建的容器镜像不够全面和系统的问题,提高了容器镜像构建速度的同时还能够构建出更加全面系统质量更高的容器镜像。
在上述步骤S206提供的技术方案中,上述构建脚本所指示的为应用构建容器镜像的流程可以但不限于包括:优化构建容器镜像所使用的初始应用文件的过程等等,通过执行上述构建脚本,对上述初始应用文件进行优化,将初始应用文件所指示的基础资源优化为优化资源,得到目标应用文件,使用该目标应用文件能够更快地构建出高质量的容器镜像。
可选地,在本实施例中,由于应用文件中的资源越多,创建的容器镜像层越多,构建容器镜像所需要的时间越久,构建容器镜像的效率就越低,因此将初始应用文件中的基础资源优化成目标应用文件中的优化资源可以减少容器镜像的构建过程中所使用的资源,也可以使得容器镜像的构建过程中使用更加适合的资源,从而能够减少容器镜像的层数,减少构建时间,提高构建容器镜像的效率。
可选地,在本实施例中,由于应用文件越大,构建的容器镜像的尺寸也就是越大,构建的容器镜像占用的存储空间越多,该容器镜像的拉取与推送的时间越久,启动该容器镜像的时间越长,安装该容器镜像对应的应用的时间也会越久,因此将初始应用文件进行优化,使用优化后的目标应用文件去构建容器镜像不仅提高了容器镜像的构建效率,还提高了该容器镜像对应的应用的安装效率。
在一个示例性实施例中,可以但不限于通过以下方式对初始应用文件进行优化:对所述初始应用文件中的配置信息进行配置优化,得到第一应用文件;对所述第一应用文件中的操作指令进行指令优化,得到所述目标应用文件,其中,所述基础资源包括所述配置信息和所述操作指令。
可选地,在本实施例中,初始应用文件中包括的不同类型的基础资源可以进行不同的优化处理。比如:对于初始应用文件中的配置信息可以执行配置优化的操作,对于初始应用文件中的操作指令可以执行指令优化的操作。
可选地,在本实施例中,配置优化的操作和指令优化的操作被写入到构建脚本中自动执行,从而能够在对应用文件的优化过程中从多个不同方面实现应用文件中不同资源的优化。
在一个示例性实施例中,可以但不限于通过以下方式对初始应用文件中的配置信息进行配置优化:从所述初始应用文件中识别镜像版本标识,其中,所述配置信息包括所述镜像版本标识,所述镜像版本标识用于指示为所述目标应用构建容器镜像时所使用的基础容器镜像版本;在所述镜像版本标识与默认版本标识不一致的情况下,将所述初始应用文件中记录的所述镜像版本标识修改为所述默认版本标识,得到所述第一应用文件。
可选地,在本实施例中,初始应用文件中可以但不限于携带了镜像版本标识,该镜像版本标识指示了为目标应用构建容器镜像时所使用的基础容器镜像版本。应用的开发人员在开发应用时在构建的初始应用文件中指定了为该应用构建容器镜像所希望使用的容器镜像的版本,该信息作为基础容器镜像版本记录在初始应用文件中,但是应用的开发人员希望使用的容器镜像版本往往并不是较优的选择,一些版本容器镜像如果作为创建容器镜像的基础容器镜像可能会为创建过程带来一些不必要的操作和冗余的资源,因此可以预先设置创建效果更好的默认版本的容器镜像,将其标识与初始应用文件中携带的镜像版本标识进行比对,如果二者不一致,则可以将初始应用文件中记录的镜像版本标识修改为上述默认版本标识。
可选地,在本实施例中,上述默认版本标识可以但不限于是最小配置的容器镜像的版本标识,官方镜像精简版容器镜像的版本标识等等,比如:默认版本的容器镜像可以但不限于包括Alpine版本的容器镜像,scratch容器镜像、busybox容器镜像等等,那么默认版本标识可以但不限于包括:Alpine,scratch,busybox等等。上述版本作为基础容器镜像运行起来更加流畅,占用的资源更小,是较为优化的基础容器镜像。
在一个示例性实施例中,可以但不限于通过以下方式对第一应用文件中的操作指令进行指令优化:从所述第一应用文件所包括的操作指令中删除冗余的操作指令,得到第二应用文件;遍历所述第二应用文件所包括的每个操作指令;在确定所述每个操作指令属于指令类型集合中的目标指令类型的情况下,对属于所述目标指令类型的操作指令执行所述目标指令类型对应的目标优化操作,得到所述目标应用文件,其中,所述指令类型集合用于记录预设的待进行指令优化的一个或者多个指令类型。
可选地,在本实施例中,首先对第一应用文件进行整体的去冗余操作,从第一应用文件所包括的操作指令中删除冗余的操作指令,在对得到的第二应用文件中所包括的操作指令进行遍历,根据每个操作指令的指令类型对其进行相应的优化操作。对于操作指令的优化过程,采用先整体再逐个的优化策略,能够使得操作指令的优化更加全面系统没有遗漏,从而达到更好的优化效果。
可选地,在本实施例中,删除操作中冗余的操作指令,也就是删除构建容器镜像的过程中冗余的安装包,也就是删除了应用的冗余安装步骤,可以实现删除构建的容器镜像中不必要的安装包或者额外的说明文件等等的目的,只保留有效的部分,这样使得构建的容器镜像占用的资源减少,提高了构建的效率,删除了应用的冗余安装步骤,也提高了应用的安装效率。
可选地,在本实施例中,目标指令类型对应的目标优化操作可以但不限于是预先设定并存储在构建脚本中的,目标指令类型可以但不限于包括:RUN指令,COPY指令,ADD指令,其他指令等等。
可选地,在本实施例中,对于RUN指令,目标优化操作可以但不限于包括在操作指令中存在多个RUN指令的情况下,将多个RUN指令进行合并。对于COPY指令,目标优化操作可以但不限于包括确定是COPY部分还是COPY全部,如果是COPY部分将指令改为COPY部分(也就是改为单次COPY,这样的话,每个步骤的构建缓存只在特定的文件变化时生效,可以减少构建容器镜像的时间和构建的容器镜像的大小)。对于ADD指令,目标优化操作可以但不限于包括在使用ADD指令从远程URL获取安装包的情况下,将安装包下载并保存,使用的时候可以直接进行使用。对于ADD指令,目标优化操作还可以但不限于包括使用curl和wget。对于其他,比如:USER、WORKDIR、ENV、CMD、ENTRYPOINT、ONBUILD等等指令,目标优化操作可以但不限于包括向编辑初始应用文件的人员显示提示信息。对于USER指令,提示信息可以是避免sudo,这样可以避免使用USER来回切换用户。对于WORKDIR指令,提示信息可以是使用绝对路径,避免使用RUN cd..&do something这样的指令;对于ENV指令,提示信息可以是便于修改时添加环境变量便于维护版本的信息。对于CMD指令提示信息可以是尽可能使用CMD[“executable”,“param1”,“param2”…]。对于ENTRYPOINT指令,提示信息可以是与CMD结合使用设置启动主命令。对于ONBUILD指令,提示信息可以是通过继承简化子容器镜像文件。
在上述步骤S208提供的技术方案中,上述构建脚本所指示的为应用构建容器镜像的流程可以但不限于包括:使用优化后的应用文件构建容器镜像的过程等等,通过执行上述构建脚本,调用优化后的应用文件来自动构建容器镜像,使用该目标应用文件能够更快地构建出高质量的容器镜像。使用优化后的应用文件构建容器镜像的过程中可以但不限于包括:初步构建容器镜像,对容器镜像进行测试以及根据测试结果优化容器镜像等等流程。
在一个示例性实施例中,可以但不限于通过以下方式使用目标应用文件构建目标容器镜像:使用所述目标应用文件中记录的目标配置信息构建初始容器镜像;执行所述目标应用文件中记录的目标操作指令向所述初始容器镜像中添加镜像文件,得到候选容器镜像,其中,在向所述初始容器镜像中添加镜像文件的过程中排除忽略文件列表中所包括的镜像文件;对所述候选容器镜像进行镜像优化,得到所述目标容器镜像。
可选地,在本实施例中,上述忽略文件列表可以但不限于用于在构建容器镜像的过程中排除一些文件,忽略文件列表可以但不限于是dockerignore,忽略文件列表中所包括的镜像文件可以但不限于是不需要上传到服务端的文件、敏感文件等等。
可选地,在本实施例中,首先使用目标应用文件中记录的目标配置信息构建初始容器镜像,再根据目标应用文件中记录的目标操作指令将目标指令指示的镜像文件添加到初始容器镜像中,在这个过程中排除忽略文件列表中的镜像文件,得到候选容器镜像。在构建容器镜像的过程中排除忽略文件列表中所包括的镜像文件,能加快容器镜像的构建速度,精简构建的容器镜像,并且排除敏感文件可以提高容器镜像的安全性。
在一个示例性实施例中,可以但不限于通过以下方式对候选容器镜像进行镜像优化,得到所述目标容器镜像:对所述候选容器镜像进行裁剪聚合,得的第一容器镜像;对所述第一容器镜像进行性能测试,得到性能测试报告;在所述性能测试报告用于指示所述第一容器镜像的性能低于目标性能的情况下,对所述第一容器镜像进行调整,直至得到性能高于或者等于所述目标性能的第二容器镜像;将所述第二容器镜像确定为所述目标容器镜像。
可选地,在本实施例中,上述对候选容器镜像进行裁剪聚合,可以但不限于通过dive指令实现,首先通过dive指令工具,检测候选容器镜像,显示容器镜像各层的内容以及变更记录,评估容器镜像的效率,可以但不限于通过CI pipeline(持续集成管道)检测候选容器镜像的冗余度,得到一个删除表,可以根据这个删除表对候选容器镜像进行裁剪聚合,得到第一容器镜像,比如,因为容器镜像里面有很多层,包括很多的文件,容器镜像的每一层都可以镜像缓存,当第二层已经缓存过文件A,那么之后的层中可以直接使用该文件,如果有几层都有这个文件,可以只用保留一个缓存文件A,对其他的缓存的文件A进行裁剪,然后将裁剪过的容器镜像层进行聚合。这样可以减少构建的容器镜像占用的内存,提高应用的安装效率。
可选地,在本实施例中,对裁剪聚合过的第一容器镜像进行性能测试,得到性能测试报告,查看性能测试报告中第一容器镜像的性能,将测试报告中的性能与目标性能进行对比,如果第一容器镜像的性能低于目标性能的话,可以但不限于通过调整第一容器镜像或者候选容器镜像,直到得到的第二容器镜像的性能高于或者等于目标性能。
可选地,在本实施例中,如果测试报告中的第一容器镜像的性能高于或者等于目标性能参数,那么可以直接将第一容器镜像确定为目标容器镜像。
可选地,在本实施例中,对构建的容器镜像进行性能测试,并将测试结果与预设的目标性能进行对比,根据测试结果去调整构建的容器镜像,最终得到目标容器镜像,这样可以提高构建的目标容器镜像更加符合构建的要求,生成的测试报告还能系统的评估构建的容器镜像的可用性。
在一个示例性实施例中,可以但不限于通过以下方式对所述第一容器镜像进行性能测试,得到性能测试报告:为所述第一容器镜像构建测试容器;在所述测试容器中运行所述第一容器镜像;在所述第一容器镜像运行的过程中,运行测试脚本,得到测试结果,其中,所述测试脚本用于指示对所述第一容器镜像进行测试的流程;根据所述第一容器镜像的运行过程和所述测试结果生成所述性能测试报告。
可选地,在本实施例中,上述测试容器可以但不限于用于运行构建的容器镜像,在测试容器中运行上述第一容器镜像,可以但不限于通过docker run启动测试容器或者通过kubernetes运行测试pod,来对构建的容器镜像进行运行测试,可以但不限于得到第一容器镜像的大小、占用的内存或者CPU数值等等。
可选地,在本实施例中,上述测试脚本可以但不限于包括在构建脚本中,在执行构建脚本中的流程的情况下,运行测试脚本对第一容器镜像进行测试,上述测试脚本可以但不限于是jmeter脚本,可以但不限于通过jmeter脚本运行benchmark测试。在测试完成后,可以但不限于通过文字或者图表的形式生成性能测试报告。
可选地,在本实施例中,在构建容器镜像的过程中就进行优化,并将构建的候选容器镜像进行裁剪聚合,再进行测试,根据测试的结果判断是否对第一容器镜像进行调整,最终得到满足目标性能的容器镜像,这样可以提高构建的容器镜像的质量,提高构建的容器镜像的可用性。
可选地,在本实施例中,在平台上为智能控制应用构建目标容器镜像,最终在该平台上得到该智能控制应用对应的目标容器镜像,图4是根据本申请实施例的容器镜像的构建方法的构建界面示意图二,如图4所示,根据智能控制应用对应的构建脚本和智能控制应用对应的初始应用文件将智能控制应用进行封装打包,构建容器镜像,最终在构建平台上得到目标容器镜像。
为了更好的理解上述容器镜像的构建方法的过程,以下再结合可选实施例对上述容器镜像的构建的实现方法流程进行说明,但不用于限定本申请实施例的技术方案。
在本实施例中提供了一种容器镜像的构建过程,图5是根据本申请实施例的容器镜像的构建过程的示意图,如图5所示,该过程可以但不限于包括:应用文件阶段(Dockerfile stage),容器镜像构建阶段(Docker image stage)和测试阶段(Benchmarkstage)等等。
在应用文件阶段(Dockerfile stage,相当于上述初始应用文件优化的过程),构建脚本中可以用Minimal configuration(最小配置)指令进行配置优化,也就是使用默认版本的基础容器镜像,然后使用Unnecessary packages(不必要的安装包)指令,进行删除冗余的操作指令的操作,最后通过Command optimize(命令优化)指令,进行指令优化中的根据操作指令执行该指令类型对应的优化操作的过程,对操作指令进行优化。
在容器镜像构建阶段(Docker image stage,相当于上述构建容器镜像优化的过程),在构建候选容器镜像的过程中,构建脚本中使用Use.dockerignore指令,排除dockerignore(即上述忽略文件列表)中所包括的镜像文件,构建脚本中使用Use dive指令,对候选容器镜像进行优化,得到第一容器镜像。
在测试阶段(Benchmark stage,相当于上述性能测试的过程),对上述第一容器镜像进行测试,构建脚本中使用Run container or pod指令,对第一容器镜像运行测试,然后根据构建脚本中的Benchmark test指令,通过jmeter脚本运行benchmark测试,构建脚本中的Report指令可以生成性能测试报告。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
图6是根据本申请实施例的一种容器镜像的构建装置的结构框图;如图6所示,包括:
接收模块602,用于接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
获取模块604,用于响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
优化模块606,用于通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
构建模块608,用于通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
通过上述实施例,构建脚本中记录了为应用构建容器镜像的流程,当需要为目标应用构建容器镜像时,可以通过发起镜像构建请求来调用该构建脚本自动执行初始应用文件的优化以及使用优化后的应用文件(即目标应用文件)为目标应用构建目标容器镜像的操作,从而使得容器镜像的构建过程能够自动完成。采用上述技术方案,解决了相关技术中,构建容器镜像的效率较低等问题,实现了提高构建容器镜像的效率的技术效果。
在一个示例性实施例中,所述优化模块,包括:
配置优化单元,用于对所述初始应用文件中的配置信息进行配置优化,得到第一应用文件;
指令优化单元,用于对所述第一应用文件中的操作指令进行指令优化,得到所述目标应用文件,其中,所述基础资源包括所述配置信息和所述操作指令。
在一个示例性实施例中,所述配置优化单元,用于:
从所述初始应用文件中识别镜像版本标识,其中,所述配置信息包括所述镜像版本标识,所述镜像版本标识用于指示为所述目标应用构建容器镜像时所使用的基础容器镜像版本;
在所述镜像版本标识与默认版本标识不一致的情况下,将所述初始应用文件中记录的所述镜像版本标识修改为所述默认版本标识,得到所述第一应用文件。
在一个示例性实施例中,所述指令优化单元,用于:
从所述第一应用文件所包括的操作指令中删除冗余的操作指令,得到第二应用文件;
遍历所述第二应用文件所包括的每个操作指令;
在确定所述每个操作指令属于指令类型集合中的目标指令类型的情况下,对属于所述目标指令类型的操作指令执行所述目标指令类型对应的目标优化操作,得到所述目标应用文件,其中,所述指令类型集合用于记录预设的待进行指令优化的一个或者多个指令类型。
在一个示例性实施例中,所述构建模块,包括:
构建单元,用于使用所述目标应用文件中记录的目标配置信息构建初始容器镜像;
添加单元,用于执行所述目标应用文件中记录的目标操作指令向所述初始容器镜像中添加镜像文件,得到候选容器镜像,其中,在向所述初始容器镜像中添加镜像文件的过程中排除忽略文件列表中所包括的镜像文件;
优化单元,用于对所述候选容器镜像进行镜像优化,得到所述目标容器镜像。
在一个示例性实施例中,所述优化单元,用于:
对所述候选容器镜像进行裁剪聚合,得的第一容器镜像;
对所述第一容器镜像进行性能测试,得到性能测试报告;
在所述性能测试报告用于指示所述第一容器镜像的性能低于目标性能的情况下,对所述第一容器镜像进行调整,直至得到性能高于或者等于所述目标性能的第二容器镜像;
将所述第二容器镜像确定为所述目标容器镜像。
在一个示例性实施例中,所述优化单元,用于:
为所述第一容器镜像构建测试容器;
在所述测试容器中运行所述第一容器镜像;
在所述第一容器镜像运行的过程中,运行测试脚本,得到测试结果,其中,所述测试脚本用于指示对所述第一容器镜像进行测试的流程;
根据所述第一容器镜像的运行过程和所述测试结果生成所述性能测试报告。
本申请的实施例还提供了一种存储介质,该存储介质包括存储的程序,其中,上述程序运行时执行上述任一项的方法。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:
S1,接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
S2,响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
S3,通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
S4,通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
S2,响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
S3,通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
S4,通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种容器镜像的构建方法,其特征在于,包括:
接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
2.根据权利要求1所述的容器镜像的构建方法,其特征在于,所述对所述初始应用文件进行优化,得到目标应用文件,包括:
对所述初始应用文件中的配置信息进行配置优化,得到第一应用文件;
对所述第一应用文件中的操作指令进行指令优化,得到所述目标应用文件,其中,所述基础资源包括所述配置信息和所述操作指令。
3.根据权利要求2所述的容器镜像的构建方法,其特征在于,所述对所述初始应用文件中的配置信息进行配置优化,得到第一应用文件,包括:
从所述初始应用文件中识别镜像版本标识,其中,所述配置信息包括所述镜像版本标识,所述镜像版本标识用于指示为所述目标应用构建容器镜像时所使用的基础容器镜像版本;
在所述镜像版本标识与默认版本标识不一致的情况下,将所述初始应用文件中记录的所述镜像版本标识修改为所述默认版本标识,得到所述第一应用文件。
4.根据权利要求2所述的容器镜像的构建方法,其特征在于,所述对所述第一应用文件中的操作指令进行指令优化,得到所述目标应用文件,包括:
从所述第一应用文件所包括的操作指令中删除冗余的操作指令,得到第二应用文件;
遍历所述第二应用文件所包括的每个操作指令;
在确定所述每个操作指令属于指令类型集合中的目标指令类型的情况下,对属于所述目标指令类型的操作指令执行所述目标指令类型对应的目标优化操作,得到所述目标应用文件,其中,所述指令类型集合用于记录预设的待进行指令优化的一个或者多个指令类型。
5.根据权利要求1所述的容器镜像的构建方法,其特征在于,所述使用所述目标应用文件构建目标容器镜像,包括:
使用所述目标应用文件中记录的目标配置信息构建初始容器镜像;
执行所述目标应用文件中记录的目标操作指令向所述初始容器镜像中添加镜像文件,得到候选容器镜像,其中,在向所述初始容器镜像中添加镜像文件的过程中排除忽略文件列表中所包括的镜像文件;
对所述候选容器镜像进行镜像优化,得到所述目标容器镜像。
6.根据权利要求5所述的容器镜像的构建方法,其特征在于,所述对所述候选容器镜像进行镜像优化,得到所述目标容器镜像,包括:
对所述候选容器镜像进行裁剪聚合,得的第一容器镜像;
对所述第一容器镜像进行性能测试,得到性能测试报告;
在所述性能测试报告用于指示所述第一容器镜像的性能低于目标性能的情况下,对所述第一容器镜像进行调整,直至得到性能高于或者等于所述目标性能的第二容器镜像;
将所述第二容器镜像确定为所述目标容器镜像。
7.根据权利要求6所述的容器镜像的构建方法,其特征在于,所述对所述第一容器镜像进行性能测试,得到性能测试报告,包括:
为所述第一容器镜像构建测试容器;
在所述测试容器中运行所述第一容器镜像;
在所述第一容器镜像运行的过程中,运行测试脚本,得到测试结果,其中,所述测试脚本用于指示对所述第一容器镜像进行测试的流程;
根据所述第一容器镜像的运行过程和所述测试结果生成所述性能测试报告。
8.一种容器镜像的构建装置,其特征在于,包括:
接收模块,用于接收镜像构建请求,其中,所述镜像构建请求用于请求为目标应用构建容器镜像,所述容器镜像用于安装应用;
获取模块,用于响应所述镜像构建请求,获取所述目标应用的初始应用文件和所述容器镜像的构建脚本,其中,所述初始应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的基础资源,所述构建脚本用于指示为应用构建容器镜像的流程;
优化模块,用于通过执行所述构建脚本,对所述初始应用文件进行优化,得到目标应用文件,其中,所述目标应用文件用于指示为所述目标应用构建容器镜像的过程中所使用的优化资源;
构建模块,用于通过执行所述构建脚本,使用所述目标应用文件构建目标容器镜像,其中,所述目标容器镜像用于安装所述目标应用。
9.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行权利要求1至7中任一项所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210213191.4A CN114675928A (zh) | 2022-03-04 | 2022-03-04 | 容器镜像的构建方法和装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210213191.4A CN114675928A (zh) | 2022-03-04 | 2022-03-04 | 容器镜像的构建方法和装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114675928A true CN114675928A (zh) | 2022-06-28 |
Family
ID=82071538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210213191.4A Pending CN114675928A (zh) | 2022-03-04 | 2022-03-04 | 容器镜像的构建方法和装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114675928A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658606A (zh) * | 2022-11-21 | 2023-01-31 | 福瑞泰克智能系统有限公司 | 文件处理方法和装置、存储介质及电子装置 |
-
2022
- 2022-03-04 CN CN202210213191.4A patent/CN114675928A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115658606A (zh) * | 2022-11-21 | 2023-01-31 | 福瑞泰克智能系统有限公司 | 文件处理方法和装置、存储介质及电子装置 |
CN115658606B (zh) * | 2022-11-21 | 2023-03-21 | 福瑞泰克智能系统有限公司 | 文件处理方法和装置、存储介质及电子装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108431765B (zh) | 设备应用的生成 | |
AU2018365860B2 (en) | Code module selection for device design | |
CN107003836B (zh) | 用于所连接的消费者设备的灵活设备模板 | |
CN114697150B (zh) | 命令的下发方法和装置、存储介质及电子装置 | |
CN114675928A (zh) | 容器镜像的构建方法和装置、存储介质及电子装置 | |
CN115167164A (zh) | 设备场景的确定方法和装置、存储介质及电子装置 | |
CN107329832B (zh) | 一种数据接收方法及装置 | |
CN106933449B (zh) | 图标处理方法和装置 | |
CN113282268B (zh) | 音效配置方法和装置、存储介质及电子设备 | |
CN107301089B (zh) | 一种app部署及调用方法和终端 | |
CN114327709A (zh) | 一种控制页面生成方法、装置、智能设备及存储介质 | |
CN115048392A (zh) | 数据的删除方法和装置、存储介质及电子装置 | |
CN115514750A (zh) | 电子设备远程控制方法、服务器、系统、介质和设备 | |
CN113196235A (zh) | 快应用的添加方法、装置、电子设备及存储介质 | |
CN112416698A (zh) | 监控系统的扩展方法及装置、存储介质及电子设备 | |
CN113132773B (zh) | 进入电视应用的方法及相关设备 | |
CN114356438B (zh) | 智能场景的启用方法及装置、电子设备、存储介质 | |
CN115695534A (zh) | 目标应用的运行方法和装置、存储介质及电子装置 | |
CN114885207A (zh) | 多媒体文件的渲染方法、装置、存储介质及电子装置 | |
CN115480809A (zh) | 代码提交量的确定方法及装置、存储介质及电子装置 | |
CN116382766A (zh) | 页面的封装方法和装置、存储介质及电子装置 | |
CN116521157A (zh) | 项目集成方法和装置、存储介质及电子装置 | |
CN114296357A (zh) | 功能数据的处理方法及装置、电子设备、存储介质 | |
CN116450229A (zh) | 应用软件的预启动方法、装置、存储介质及电子装置 | |
CN116301767A (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 |