一种容器镜像的构建方法、装置、设备及存储介质制造方法及图纸

技术编号:24251235 阅读:54 留言:0更新日期:2020-05-22 23:25
本发明专利技术公开了一种容器镜像的构建方法、装置、设备及存储介质,其中方法包括:接收Dockerfile创建指令,根据Dockerfile创建指令创建第一Dockerfile;将所述第一Dockerfile中的运行指令进行合并;根据运行指令合并后的第一Dockerfile创建第一容器镜像;根据所述第一容器镜像创建第一容器;控制进入所述第一容器的容器环境中;从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件;控制退出第一容器的容器环境;将所述第一Dockerfile中的基础镜像修改为scratch空镜像,将第一Dockerfile中的镜像操作指令替换为所述压缩文件,并增加配置相关信息,形成第二Dockerfile;根据所述第二Dockerfile创建第二容器镜像;该方法能够有效减小容器镜像的大小。

A construction method, device, equipment and storage medium of container image

【技术实现步骤摘要】
一种容器镜像的构建方法、装置、设备及存储介质
本专利技术涉及计算机
,尤其涉及一种容器镜像的构建方法、装置、设备及存储介质。
技术介绍
容器技术(LinuxContainer)是一种内核轻量级的操作系统层的虚拟化技术,相比传统的虚拟化(虚拟机)技术繁琐的移植和部署,容器技术具有极其轻量、秒级部署、易于移植(一次构建、到处运行)的特点。可以加速企业产品的应用自动化流程和应用部署运维、优化企业的IT基础设施的利用率和成本,还可使用基于容器的微服务来加速企业的应用架构现代化进程,全面助力企业IT的加速发展。容器镜像是由一系列的只读镜像层所构成,每一个镜像层都只包含上一个镜像层的增量部分。通过容器镜像创建容器,就是在原来的容器镜像层上面再创建一层可读写的容器层。用户在容器的使用过程中,对容器的所有操作实际是对容器层的操作,并不会对只读部分的镜像产生任何的影响。Dockerfile:一个包含用于组合镜像的命令的文本文档。Docker可通过读取Dockerfile中的指令来自动生成镜像:每条指令都会创建一个镜像层,继而会增加镜像的整体大小。Dockerfile通常包括以下信息:基础镜像信息、镜像操作指令和容器启动时执行指令。目前常用的Linux系统镜像有CentOS(镜像大小200M左右,例如CentOS版本7的大小为215M)、Ubuntu(镜像大小150M左右,例如Ubuntutrusty版本188M)和Debian(镜像大小100M左右,例如debianwheezy版本的大小为85M)。通过这些基础镜像构建时,Dockerfile的构成如下:表1在Dockerfile的“镜像操作指令”部分,由于镜像层是逐步叠加的,会导致即使相互抵消的操作指令也会导致增加容器镜像的大小。例如先执行一条指令进行创建一个大小为50M的文件,再执行一条指令将该文件进行删除。相当于没有任何操作,但是这两条指令会分别创建一个镜像层,导致增加至少50M空间的镜像大小。此外,基础镜像通常较大:100M-200M左右,导致最终创建出来的容器镜像大小至少会大于基础镜像的大小,即这种方式创建出来的容器镜像的大小至少在100M以上,会导致用户在管理容器时(例如创建容器、伸缩容器等)占用较大的带宽和较长的镜像传输时间。
技术实现思路
为解决采用现有技术构建的容器镜像占用空间大的问题,本专利技术提出一种容器镜像的构建方法、装置、设备及存储介质。一种容器镜像的构建方法,包括:接收Dockerfile创建指令,根据所述Dockerfile创建指令创建第一Dockerfile;接收合并指令,根据所述合并指令将所述第一Dockerfile中的运行指令进行合并;根据运行指令合并后的第一Dockerfile创建第一容器镜像;根据所述第一容器镜像创建第一容器;控制进入所述第一容器的容器环境中;从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件;控制退出所述第一容器的容器环境;修改所述第一Dockerfile:将所述第一Dockerfile中的基础镜像修改为scratch空镜像,将所述第一Dockerfile中的镜像操作指令替换为所述压缩文件,并增加配置相关信息,形成第二Dockerfile;根据所述第二Dockerfile创建第二容器镜像。进一步地,创建所述第一Dockerfile采用的基础镜像为CentOS,Ubuntu或Debian。进一步地,根据所述合并指令将所述第一Dockerfile中的运行指令进行合并,包括:将所述第一Dockerfile中的相邻的运行指令合并为一个。进一步地,根据所述第一容器镜像创建第一容器,包括:在所述第一容器镜像上添加可读写的容器层,形成所述第一容器。进一步地,从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件包括:获取应用程序的二进制文件所在的第一位置;获取应用程序的动态链接库对应的第二位置;将所述第一位置和第二位置下的文件进行复制和打包,形成压缩文件。进一步地,所述配置相关信息包括应用程序的暴露端口信息。一种容器镜像的构建装置,包括:创建模块,用于接收Dockerfile创建指令,根据所述Dockerfile创建指令创建第一Dockerfile;合并模块,用于接收合并指令,根据所述合并指令将所述第一Dockerfile中的运行指令进行合并;第一容器镜像创建模块,用于根据运行指令合并后的第一Dockerfile创建第一容器镜像;第一容器创建模块,用于根据所述第一容器镜像创建第一容器;环境控制模块,用于控制进入所述第一容器的容器环境中;文件获取模块,用于从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件;退出控制模块,用于控制退出所述第一容器的容器环境;修改模块,用于修改所述第一Dockerfile:将所述第一Dockerfile中的基础镜像修改为scratch空镜像,将所述第一Dockerfile中的镜像操作指令替换为所述压缩文件,并增加配置相关信息,形成第二Dockerfile;第二容器镜像创建模块,用于根据所述第二Dockerfile创建第二容器镜像。进一步地,所述文件获取模块还用于获取应用程序的二进制文件所在的第一位置,获取应用程序的动态链接库对应的第二位置,将所述第一位置和第二位置下的文件进行复制和打包,形成压缩文件。一种存储介质,所述存储介质存储有多条指令,所述指令可被处理器加载并执行以使所述处理器能够执行上述的容器镜像的构建方法。一种容器镜像的构建设备,包括处理器和与所述处理器连接的存储器,所述存储器存储有多条指令,所述指令可被所述处理器加载并执行,以使所述处理器能够执行上述的容器镜像的构建方法。本专利技术提供的容器镜像的构建方法、装置、设备及存储介质,至少包括如下有益效果:(1)通过该方法构建出来的容器镜像的大小显著降低,容量更小的镜像可以减少磁盘的使用量、节约镜像仓库的存储空间;(2)减少镜像的传输时间:包括将制作好的容器镜像上传到镜像仓库的时间会减少,以及用户从镜像仓库中拉取该容器镜像的时间也会减少;(3)由于镜像容量更小,传输更快、带宽占用少,所以用户用容器镜像来构建容器的时间也会减少,可以提高容器的部署速度(包括提高创建时间、版本更新时间);(4)由于创建出来的镜像包含的文件更少,攻击面减小,提高了镜像的安全性。附图说明图1为本专利技术提供的容器镜像的构建方法一种实施例的流程图。图2为本专利技术提供的容器镜像的构建装置一种实施例的结构示意图。图3为本专利技术提供的容器镜像的构建设备一种实施例的结构示意图。具体实施方案为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案本文档来自技高网
...

【技术保护点】
1.一种容器镜像的构建方法,其特征在于,包括:/n接收Dockerfile创建指令,根据所述Dockerfile创建指令创建第一Dockerfile;/n接收合并指令,根据所述合并指令将所述第一Dockerfile中的运行指令进行合并;/n根据运行指令合并后的第一Dockerfile创建第一容器镜像;/n根据所述第一容器镜像创建第一容器;/n控制进入所述第一容器的容器环境中;/n从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件;/n控制退出所述第一容器的容器环境;/n修改所述第一Dockerfile:将所述第一Dockerfile中的基础镜像修改为scratch空镜像,将所述第一Dockerfile中的镜像操作指令替换为所述压缩文件,并增加配置相关信息,形成第二Dockerfile;/n根据所述第二Dockerfile创建第二容器镜像。/n

【技术特征摘要】
1.一种容器镜像的构建方法,其特征在于,包括:
接收Dockerfile创建指令,根据所述Dockerfile创建指令创建第一Dockerfile;
接收合并指令,根据所述合并指令将所述第一Dockerfile中的运行指令进行合并;
根据运行指令合并后的第一Dockerfile创建第一容器镜像;
根据所述第一容器镜像创建第一容器;
控制进入所述第一容器的容器环境中;
从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件;
控制退出所述第一容器的容器环境;
修改所述第一Dockerfile:将所述第一Dockerfile中的基础镜像修改为scratch空镜像,将所述第一Dockerfile中的镜像操作指令替换为所述压缩文件,并增加配置相关信息,形成第二Dockerfile;
根据所述第二Dockerfile创建第二容器镜像。


2.根据权利要求1所述的容器镜像的构建方法,其特征在于,创建所述第一Dockerfile采用的基础镜像为CentOS,Ubuntu或Debian。


3.根据权利要求1所述的容器镜像的构建方法,其特征在于,根据所述合并指令将所述第一Dockerfile中的运行指令进行合并,包括:
将所述第一Dockerfile中的相邻的运行指令合并为一个。


4.根据权利要求1所述的容器镜像的构建方法,其特征在于,根据所述第一容器镜像创建第一容器,包括:
在所述第一容器镜像上添加可读写的容器层,形成所述第一容器。


5.根据权利要求1所述的容器镜像的构建方法,其特征在于,从所述第一容器的容器环境中获取配置文件和依赖文件,并形成压缩文件包括:
获取应用程序的二进制文件所在的第一位置;
获取应用程序的动态链接库对应的第二位置;
将所述第一位置和第二位置下的文件进行复制和打包,形成压缩文件。


6.根据权利要...

【专利技术属性】
技术研发人员:毕宏伟
申请(专利权)人:安超云软件有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1