动态构建docker镜像减少离线文件体积的方法技术

技术编号:34495930 阅读:10 留言:0更新日期:2022-08-10 09:15
本发明专利技术涉及动态构建docker镜像减少离线文件体积的方法,包括S1、根据不同的运行环境构建与运行环境相适配的基础镜像;S2、编译打包应用程序;S3、传输需要升级和更新的应用程序;S4、应用服务器上若干需要升级和更新的应用程序共用一个基础镜像,通过离线构建的方式在客户的应用服务器上依赖共用的基础镜像、Dockfile构建脚本进行本地构建和生成镜像。本发明专利技术提供的方法用于减少全量安装包和单服务镜像的大小、节约网络传输带宽,在网络环境差的情况下,有利于单个服务的快速构建和升级。有利于单个服务的快速构建和升级。有利于单个服务的快速构建和升级。

【技术实现步骤摘要】
动态构建docker镜像减少离线文件体积的方法


[0001]本专利技术属于计算机软件开发运维领域,具体涉及一种动态构建docker镜像减少离线文件体积的方法。

技术介绍

[0002]由于公司服务模块比较多,架构基于微服务和容器云架构,所以整体镜像个数比较多,单个镜像大小在600M左右,总体压缩下来有20G,未压缩情况下40G左右,因此在网络带宽传输速度比较低的情况下,工作效率非常低下,有可能安装包一天都传输不完。原有对于整体的镜像打包是基于每个镜像在编译服务器上面直接生成,相当于每个镜像都包含了基础镜像,一个基础镜像大小在500M左右,比如一个平台部署40个服务,这40个服务中每个服务都需要配置一个基础镜像,相当于40个基础镜像的大小都包含在安装包中。需要把每个服务在编译服务器上生产对应的镜像文件,然后在传送至客户的应用服务器。
[0003]现有技术至少存在以下不足:1、在编译环境构建的单个镜像文件比较大,不方便传输。因为镜像包含太多的重复数据。重复数据就是打包到每一个服务镜像文件中的基础镜像,传统的基础镜像报系统、运行环境以及相对应的系统工具。
[0004]2、构建任务多的时候,服务器耗时比较长、资源比较多。要经过更新代码,编译,打包镜像,上传仓库,导出;3、直接镜像体积比较大,服务器带宽有限,同时更新镜像会造成下载速度非常缓慢;4、在无网络环境的时候,更新周期会比较长,主要问题在于传输体积大并且拷贝。

技术实现思路

[0005]有鉴于此,本专利技术的目的在于克服现有技术的不足,提供一种动态构建docker镜像减少离线文件体积的方法,以减小单个或者整体镜像的体积大小、优化镜像构建方案可以加快部署时间和减少网络资源传输。
[0006]为实现上述目的,本专利技术采用的技术方案为:动态构建docker镜像减少离线文件体积的方法,包括如下步骤:S1、根据不同的运行环境构建与运行环境相适配的基础镜像;根据运行环境将公共的资源、软件包、环境依赖类库放到同一个镜像中制作一份适配各种软件类型服务运行环境的基础镜像;S2、编译打包应用程序;把源文件从版本管理服务中拉取或更新到最新,通过相应的构建脚本编译打包成能够在运行环境中运行的应用程序;S3、传输需要升级和更新的应用程序;将编译打包后需要升级和更新的应用程序传输到客户的应用服务器上;
S4、由需要更新的应用服务器构建相应的镜像;应用服务器上若干需要升级和更新的应用程序共用一个基础镜像,通过离线构建的方式在客户的应用服务器上依赖共用的基础镜像、Dockfile构建脚本进行本地构建和生成镜像。
[0007]进一步的,采用本方法初次全量安装的步骤如下:步骤一、初次全量安装包含一个步骤S1中制作好的基础镜像、一键安装的脚本、一个以上的单服务的应用程序、Dockfile构建脚本以及编写形成的对应该应用程序服务镜像的Dockerfile文件;步骤二、将步骤一中的初次全量安装包传送至客户的应用服务器上;步骤三、通过执行一键安装的脚本将步骤S1中制作好的基础镜像加载到客户的应用服务器上;步骤四、在客户的应用服务器上,通过Dockerfile文件把各个单服务的应用程序通过共用已加载的基础镜像再构建成各自单服务的应用程序相对应的新的镜像;步骤五、最后把一个以上的各自单服务的应用程序相对应的新的镜像安装部署到客户的应用服务器上。
[0008]进一步的,在步骤四中,在加载完基础镜像之后,遍历各个单服务的应用程序,遍历之后执行各自单服务的应用程序所对应的Dockerfile文件,进行构建各自单服务的应用程序相对应的新的镜像。
[0009]进一步的,在某个服务开发了新的功能、发布补丁升级或者发布新的单个服务版本的时候,需要进行单个服务升级;单个服务升级时,只需要提供更新的应用程序,执行安装脚本,在客户的应用服务器本地通过Dockerfile构建脚本构建生成对应的单个服务的镜像。
[0010]进一步的,单个服务升级安装的步骤如下:第一步、在编译服务器完成代码的更新编译工作之后,将一个以上的编译打包好的单个服务的更新应用程序传送至客户的应用服务器上,存放到预定的位置;第二步、当前应用服务器上已有基础镜像,步骤一中已编写的该应用程序服务镜像的Dockerfile文件、Dockerfile构建脚本以及第一步中本次传送的单个服务的更新应用程序;在客户的应用服务器上,通过Dockerfile文件把接收到的第一步中各个单服务的更新应用程序通过共用已加载的基础镜像和Dockerfile构建脚本再构建成各自单服务的更新应用程序相对应的新的更新镜像;第三步、最后把一个以上的各自单服务的更新应用程序相对应的新的更新镜像安装部署到客户的应用服务器上进行单个服务升级。
[0011]进一步的,利用docker分层思想,应用服务器的应用程序在后期更新升级的过程中,只是更新相对发生变动的应用程序,在编译服务器完成代码的更新编译工作之后,只传送相对发生变动的应用程序至应用服务器上进行再构建生成镜像,并进行安装部署。
[0012]进一步的,应用服务器上使用构建脚本通过docker build命令批量构建各个应用程序目录的应用程序文件到 docker镜像仓库中,之后部署安装到客户的应用服务器上。
[0013]进一步的,在步骤S1中,制作的基础镜像中包含系统、软件运行环境、系统配置以
及便于调试的系统工具;其中,系统工具包括网络管理工具、带宽测试工具、应用程序调试工具、抓包工具和流量查看工具中的一种或者多种;不同程序语言编写的代码,运行环境是不相同的,基础镜像中需要配置有各种语言代码编写的应用程序所对应的运行环境,并进行运行环境的相关配置,以便满足各种应用程序能够在客户的应用服务器上依赖共用的基础镜像进行本地构建和生成镜像,同时应用程序能够在客户的应用服务器上正常运行。
[0014]进一步的,在步骤S2中,编译服务器上对于获取的源文件,需要根据程序语言的不同,通过自动化构建工具或者构建脚本编译打包成能够在运行环境中运行的应用程序。
[0015]进一步的,编译打包应用程序完成之后,根据各应用程序所使用的程序语言,编写与各应用程序相对应的Dockerfile文件;若某应用程序是初次安装,那需要将编译打包后的应用程序和对应的编写好的Dockerfile文件一并传送至客户的应用服务器上;若某应用程序已经在应用服务器上安装过,属于后续的单个服务升级,那只需要将编译打包后的需要更新的应用程序传送至客户的应用服务器上。
[0016]本专利技术采用以上技术方案,具体如下有益效果:1、原有整体的镜像打包是基于每个镜像在编译服务器上面直接生成,相当于每个镜像都包含了基础镜像,一个基础镜像大小在500M左右。假定一个平台部署了40个服务,原有的做法是每一个服务中都含有500M左右的基础镜像。这样导出的镜像文件比较大,包含太多的重复数据,不方便传输。这种直接镜像体积比较大,服务器带宽有限,同时更新镜像会造成下载速度非常缓慢。本专利技术公开的方法是根据不同的运行环境构建一份与运行环境相适配本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.动态构建docker镜像减少离线文件体积的方法,其特征在于:包括如下步骤:S1、根据不同的运行环境构建与运行环境相适配的基础镜像;根据运行环境将公共的资源、软件包、环境依赖类库放到同一个镜像中制作一份适配各种软件类型服务运行环境的基础镜像;S2、编译打包应用程序;把源文件从版本管理服务中拉取或更新到最新,通过相应的构建脚本编译打包成能够在运行环境中运行的应用程序;S3、传输需要升级和更新的应用程序;将编译打包后需要升级和更新的应用程序传输到客户的应用服务器上;S4、由需要更新的应用服务器构建相应的镜像;应用服务器上若干需要升级和更新的应用程序共用一个基础镜像,通过离线构建的方式在客户的应用服务器上依赖共用的基础镜像、Dockfile构建脚本进行本地构建和生成镜像。2.根据权利要求1所述的动态构建docker镜像减少离线文件体积的方法,其特征在于:采用本方法初次全量安装的步骤如下:步骤一、初次全量安装包含一个步骤S1中制作好的基础镜像、一键安装的脚本、一个以上的单服务的应用程序、Dockfile构建脚本以及编写形成的对应该应用程序服务镜像的Dockerfile文件;步骤二、将步骤一中的初次全量安装包传送至客户的应用服务器上;步骤三、通过执行一键安装的脚本将步骤S1中制作好的基础镜像加载到客户的应用服务器上;步骤四、在客户的应用服务器上,通过Dockerfile文件把各个单服务的应用程序通过共用已加载的基础镜像再构建成各自单服务的应用程序相对应的新的镜像;步骤五、最后把一个以上的各自单服务的应用程序相对应的新的镜像安装部署到客户的应用服务器上。3.根据权利要求2所述的动态构建docker镜像减少离线文件体积的方法,其特征在于:在步骤四中,在加载完基础镜像之后,遍历各个单服务的应用程序,遍历之后执行各自单服务的应用程序所对应的Dockerfile文件,进行构建各自单服务的应用程序相对应的新的镜像。4.根据权利要求3所述的动态构建docker镜像减少离线文件体积的方法,其特征在于:在某个服务开发了新的功能、发布补丁升级或者发布新的单个服务版本的时候,需要进行单个服务升级;单个服务升级时,只需要提供更新的应用程序,执行安装脚本,在客户的应用服务器本地通过Dockerfile构建脚本构建生成对应的单个服务的镜像。5.据权利要求4所述的动态构建docker镜像减少离线文件体积的方法,其特征在于:单个服务升级安装的步骤如下:第一步、在编译服务器完成代码的更新编译工作之后,将一个以上的编译打包好的单个服务的更新应用程序传送至客户的应用服务器上,存放到预定的位置;第二步、当前应用服务器上已有基础镜像,步骤一中已编写的该...

【专利技术属性】
技术研发人员:陆隽张晓雷金锐
申请(专利权)人:杭州阿启视科技有限公司
类型:发明
国别省市:

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

1