首页 / 专利库 / 电脑零配件 / 固件 / 软件 / 软件包 / 一种实现小体积基础镜像的方法

一种实现小体积基础镜像的方法

阅读:188发布:2020-05-08

专利汇可以提供一种实现小体积基础镜像的方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种实现小体积 基础 镜像的方法,属于Docker镜像制作技术领域,本发明主要包括如下步骤:首先要确认最小可用功能;然后制作最小裸系统:基于官方最小裸系统进行批量挂载,卸载;在裸系统内进行网络配置,系统配置优化, 软件 包安装与缓存清理;最后基于rootfs系统包导入制作docker镜像。降低中心化镜像仓库的存储和带宽成本,提高灵活性,减少冗余,降低资源浪费等。,下面是一种实现小体积基础镜像的方法专利的具体信息内容。

1.一种实现小体积基础镜像的方法,其特征在于,
主要包括如下步骤:
首先要确认最小可用功能;
然后制作最小裸系统:基于官方最小裸系统进行批量挂载,卸载;在裸系统内进行网络配置,系统配置优化,软件包安装与缓存清理;
最后基于rootfs系统包导入制作docker镜像。
2.根据权利要求1所述的方法,其特征在于,
在开始制作基础镜像之前,首先确认最小可用镜像需要支持的基础工具。
3.根据权利要求2所述的方法,其特征在于,
包括如下基础工具:
1)curl:curl命令是一个利用URL规则在命令行下工作的文件传输工具;
2)telnet:telnet命令用于登录远程主机,对远程主机进行管理;
3)ping:ping命令用来测试主机之间网络的连通性;
4)vi:vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器
4.根据权利要求2或3所述的方法,其特征在于,
制作最小裸系统的具体步骤为:
1)Docker基础镜像基于rootfs文件系统,提供运行的基础文件系统,使用官方提供的基本裸系统,从官网下载,x86下的rootfs压缩包;
2)将下载好的裸系统压缩包解压到临时工作目录ubuntu-rootfs/,将裸系统挂载到当前宿主机系统,之后利用chroot切换到裸系统,便可执行裸系统内的二进制文件,来进行第三方工具的安装;
挂载proc,sys,dev,dev/pts文件系统,先编写一个bash脚本ch-mount.sh来完成挂载和后面的卸载操作,下载ch-mount.sh至当前目录,执行如下操作sudo bashch-mount.sh-m ubuntu-rootfs/;
3)Chroot进入裸系统之后,首先需要配置裸系统的网络连接,修改/etc/apt/sources.list的内容;
然后去掉除以deb-src开头的所有库的注释,在chroot之前就在主机目录下把ubuntu-rootfs//etc/apt/sources.list的内容修改好;
4)网络配置完成之后,下一步就是安装已确认的基础工具,首先执行apt-get update更新资源列表,然后执行apt-get install–y—no-install-recommends vim-tiny curl telnet inetutils-ping,即可完成安装。
5.根据权利要求4所述的方法,其特征在于,
软件安装完成之后,还需要清理临时文件,以及软件资源列表/缓存,执行apt-get clean&&rm-rf/var/lib/apt/lists/*/tmp/*/var/tmp/*。
6.根据权利要求5所述的方法,其特征在于,
根据自己需要,可进一步配置一下串口,默认时区,sudo用户,hostname;配置完成之后执行exit退出chroot即完成基本系统的配置。
7.根据权利要求6所述的方法,其特征在于,
基于rootfs制作Docker镜像
整理好的系统使用tar命令打包为压缩包,再执行docker importtag>,将系统压缩包导入制作为Docker镜像即完成。
8.根据权利要求7所述的方法,其特征在于,
通过docker history–no-trunc查看镜像日志,镜像只有一个层级且内容为tar压缩包,镜像体积即所制作的裸系统文件压缩包的大小。

说明书全文

一种实现小体积基础镜像的方法

技术领域

[0001] 本发明涉及Docker镜像制作技术,尤其涉及一种实现小体积基础镜像的方法。

背景技术

[0002] Docker是基于Go语言实现的开源项目,是为开发人员设计的,以容器调度和资源分割为单位,通过封装软件运行的环境,用于构建、发布和运行应用的平台。Docker设计之初的目的是“Build、Ship And Run Any App、Anywhere”,其理念使程序实现了“一次封装,到处运行”。
[0003] Docker容器技术是一种类似OpenVZ,Zap和LXC的操作系统级虚拟化技术,用户可以创建和管理容器,高效快捷得使用多个虚拟环境.因而每一个工作负载都可以运行在独立的虚拟环境中,并且容器之间也可以获得较好的工作效率和隔离度.容器技术以共享内核资源的方式区别于传统虚拟机,实现轻量级的应用隔离。现如今,随着云计算和大数据规模的日益扩大,工业界对产品持续集成和高效发布的需求与日俱增。由于镜像包含了所有运行时依赖,从而导致镜像的体积往往很大,在本地存储和导出迁移的过程中会产生较大的磁盘和网络I/O开销,增大了部署运维成本,同时也限制了镜像的迁移和扩展。镜像应该只包含一种服务所需要的必要依赖环境,因此,为业务流程提供最小可用镜像显得尤为重要。
[0004] Docker的基础镜像通常包含操作系统完整的rootfs文件系统,其体积往往是庞大的,因此在Docker设计时,就充分利用Union FS的技术,将其设计为分层存储的架构。所以严格来说,镜像并非是像一个ISO那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。
[0005] 镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。因此,在构建镜像的时候,需要额外小心,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉。
[0006] 分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。
[0007] Docker镜像在构建的时候利用了aufs文件系统的挂载原理,对文件系统进行构建。首先,存在一个docker容器在启动时其内部进程可见的文件系统视,或者称为docker容器的根目录rootfs。目录下含有docker容器所需要的系统文件、工具、容器文件等。(只读属性)在docker实际应用中,镜像相当于只读层,而容器则相当去上图中的可写层。已构建的镜像会设置成只读模式,read-write写操作是在read-only上的一种增量操作,固不影响read-only层。
[0008] Docker制作镜像时首先定义Dockerfile文件,描述了镜像的基本信息,使用的基础镜像,以及制作镜像执行的具体步骤,以及用户执行入口(Endpoint)等。Dockerfile中的RUN指令用于在镜像中执行命令,这会创建新的镜像层。每个RUN指令创建一个新的镜像层。因此,当在RUN命令中执行的所有操作只影响这条命令对应的layer,不会影响前一层的layer,即使执行rm进行了文件删除,也只是记录在当前layer。因此,通过将多条RUN命令合并为一条命令,减少layer层数量,可显著减小镜像体积。

发明内容

[0009] 为了解决以上技术问题,本发明提出了一种实现小体积基础镜像的方法,通过制作一个最小可用基础镜像,提供给开发运维人员制作业务应用镜像使用,减小应用分发部署以及持久化存储的各项成本,减小企业运营成本开支,提高效率,同时为各个业务线研发运维人员提供一个标准化的制作最小应用镜像的最佳实践,将Docker效能最大化利用。
[0010] 本发明的技术方案是:
[0011] 一种实现小体积基础镜像的方法,主要包括如下步骤:
[0012] 首先要确认最小可用功能;
[0013] 然后制作最小裸系统:基于官方最小裸系统进行批量挂载,卸载;在裸系统内进行网络配置,系统配置优化,软件包安装与缓存清理;
[0014] 最后基于rootfs系统包导入制作docker镜像。
[0015] 进一步的,
[0016] 在开始制作基础镜像之前,首先确认最小可用镜像需要支持的基础工具,包括:
[0017] 1)curl:curl命令是一个利用URL规则在命令行下工作的文件传输工具;
[0018] 2)telnet:telnet命令用于登录远程主机,对远程主机进行管理;
[0019] 3)ping:ping命令用来测试主机之间网络的连通性;
[0020] 4)vi:vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器
[0021] 进一步的,
[0022] 制作最小裸系统的具体步骤为:
[0023] 1)Docker基础镜像基于rootfs文件系统,提供运行的基础文件系统,使用官方提供的基本裸系统,从官网下载,x86下的rootfs压缩包;
[0024] 2)将下载好的裸系统压缩包解压到临时工作目录ubuntu-rootfs/,将裸系统挂载到当前宿主机系统,之后利用chroot切换到裸系统,便可执行裸系统内的二进制文件,来进行第三方工具的安装;
[0025] 挂载proc,sys,dev,dev/pts文件系统,先编写一个bash脚本ch-mount.sh来完成挂载和后面的卸载操作,下载ch-mount.sh至当前目录,执行如下操作sudo bashch-mount.sh-m ubuntu-rootfs/;
[0026] 3)Chroot进入裸系统之后,首先需要配置裸系统的网络连接,修改/etc/apt/sources.list的内容;
[0027] 然后去掉除以deb-src开头的所有库的注释,在chroot之前就在主机目录下把ubuntu-rootfs//etc/apt/sources.list的内容修改好;
[0028] 4)网络配置完成之后,下一步就是安装已确认的基础工具,首先执行apt-get update更新资源列表,然后执行apt-get install–y—no-install-recommends vim-tiny curl telnet inetutils-ping,即可完成安装。
[0029] 再进一步的,
[0030] 软件安装完成之后,还需要清理临时文件,以及软件资源列表/缓存,执行apt-get clean&&rm-rf/var/lib/apt/lists/*/tmp/*/var/tmp/*。
[0031] 再进一步的,
[0032] 根据自己需要,可进一步配置一下串口,默认时区,sudo用户,hostname;配置完成之后执行exit退出chroot即完成基本系统的配置。
[0033] 再进一步的,
[0034] 基于rootfs制作Docker镜像
[0035] 将整理好的系统使用tar命令打包为压缩包,再执行docker import,将系统压缩包导入制作为Docker镜像即完成。
[0036] 通过docker history–no-trunc查看镜像日志,镜像只有一个层级且内容为tar压缩包,镜像体积即所制作的裸系统文件压缩包的大小。
[0037] 本发明的有益效果是
[0038] 通过使用本发明,可以掌握最小可用镜像的制作流程,并可以灵活定制自己所需的基础功能,无需增加多余的layer,尽可能的在实现最小体积的同时增加基础镜像的可用性,保证开发运维效率与运营成本的最大配置优化。

具体实施方式

[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 本发明的一种实现小体积基础镜像的方法,具体方案如下:
[0041] (一)确认最小可用功能:
[0042] 在开始制作基础镜像之前,首先确认最小可用镜像需要支持的基础功能。在这里将“最小可用”定义为能够满足基本业务运行需求,同时提供基本的排错能,便于开发运维人员线上排查问题等。
[0043] a)curl:curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以助一臂之力。
[0044] b)telnet:telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录。
[0045] c)ping:ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
[0046] d)vi:vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。
[0047] (二)制作最小裸系统
[0048] a)Docker基础镜像基于rootfs文件系统,提供运行的基础文件系统。以Ubuntu 18.04为例,使用官方提供的基本裸系统,可从官网下载,x86下的rootfs压缩包仅约29MB。
[0049] b)将下载好的裸系统压缩包解压到临时工作目录ubuntu-rootfs/,通过ls可以看到,裸系统内已经包含了完整的文件系统结构,如bin,boot,dev,proc,sbin等。接下来,需要将裸系统挂载到当前宿主机系统,之后利用chroot切换到裸系统,便可执行裸系统内的二进制文件,来进行第三方工具的安装。挂载proc,sys,dev,dev/pts等文件系统,可以编写一个bash脚本ch-mount.sh来完成挂载和后面的卸载操作,下载ch-mount.sh至当前目录,执行如下操作sudo bashch-mount.sh-m ubuntu-rootfs/
[0050] c)Chroot进入裸系统之后,首先需要配置裸系统的网络连接,修改/etc/apt/sources.list的内容。去掉除以deb-src开头的所有库的注释,这里可能需要用到vim编辑器,所以最好是在chroot之前就在主机目录下把ubuntu-rootfs//etc/apt/sources.list的内容修改好,因为一旦chroot后,裸根文件系统很可能没有安装vi编辑器。网络的dns在第一步中已经复制过来了。
[0051] d)网络配置完成之后,下一步就是安装之前已确认的基础工具,首先执行apt-get update更新资源列表,然后执行apt-get install–y—no-install-recommends vim-tiny curl telnet inetutils-ping,稍等片刻即可完成安装。
[0052] e)软件安装完成之后,还需要清理临时文件,以及软件资源列表/缓存等等,这些内容比较占用空间且并非必要文件,需要进行清理,执行apt-get clean&&rm-rf/var/lib/apt/lists/*/tmp/*/var/tmp/*
[0053] f)最后根据自己需要,可进一步配置一下串口,默认时区,sudo用户,hostname等等。配置完成之后执行exit退出chroot即完成基本系统的配置。
[0054] (三)基于rootfs制作Docker镜像
[0055] 将整理好的系统使用tar命令打包为压缩包,再执行docker import将系统压缩包导入制作为Docker镜像即大功告成。通过docker history–no-trunc查看镜像日志可以发现,该镜像只有一个层级且内容为tar压缩包,镜像体积即所制作的裸系统文件压缩包的大小,仅有79MB,而Docker官方镜像仓库(docker hub)中,拥有完整curl等工具包支持的CentOS基础镜像却有200多MB的体积![0056] 以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈