怎么调整Docker里面的Image大小

55次阅读
没有评论

共计 1430 个字符,预计需要花费 4 分钟才能阅读完成。

这篇文章主要介绍了怎么调整 Docker 里面的 Image 大小,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

Docker 给开发者带来的最直接好处是,可以打包他们的应用,将所有应用都捆绑在一个封套中,然后发布到任何流行的 Linux 机器上。并且,Docker 能实现虚拟化,各种应用之间不需要任何接口。也就是,我们常说的“开箱即用”,无需大量安装或者配置相关的软件、硬件等。

而 Docker Image 就是 Docker 镜像。Docker 镜像是一个只读的模板。比如一个镜像可以包含 Ubuntu 系统以及安装在 Ubuntu 上的 Apache Web 服务器和你自己的应用。镜像是用来创建容器的。Docker 提供了一个简单的方式用以创建新的镜像或者更新现存的镜像,甚至你可以下载其他地方提供的镜像。
由于 Docker 使用一个统一文件系统,Docker 镜像其实就是一堆文件的集合,并不是像 VM 那样的是一个操作系统。镜像可以简单到只有一个程序文件,比如如果你写了一个简单的 hello world 程序放到一个空的镜像中,那么整个镜像的大小,就是你编译后的二进制文件的大小。

Docker Image 小是很有好处的,可以不用不浪费自己的 SSD 空间,来处理数十亿字节的 Docker 数据。

有时候,因企业业务规模化发展,Docker Image 变得非常大。技术开发人员不得不想办法,调整 Image 大小。如何不断优化应用,最终让 Image 大小减少到原来的一半?
第一步,Image 分层。使用 Ubuntu 作为基础镜像,搭建一个 Java 运行环境。如果你有相关应用,还要整合第三方的结果检查工具。比如:安装 Mono,通过 NPM 安装 TSLint 和 ESLint,以便于我们获得更大的镜像处理能力。

第二步,核查 BUG。之前,Image 的大小为 1GB 大。然而,在一次常规的拉取中,技术人员希望下载的数据量与源数据大小大相同,因为基本 Image (Ubuntu、Java、…) 还要保持稳定。但我的控制台显示,出现了异样:

貌似有数据被多次下载。因为这是最后一层,所以这些都是真正的分发文件。检查 Dockerfile 后发现,所有目录都是经过编辑的。在传统的部署设置中,安全的操作方式是,Docker 必须添加一个新的映镜像层,并且包含所有分发文件以及所有权信息。
在实际的 Docker 构建之前,通过调整所有权信息,很容易摆脱 chown 调用,从而让最终的 Image 节省了 300MB。

第三步,继续删减字节。文件产生的大小是 670 MB,这只是开始,还有一定的删减空间。当 OpenJDK 被用于 Java 运行时,它附带了一些开发和 GUI 工具。把没有用的 OpenJRE 替换掉,可以立即节省将近 100 MB 的内存。然后运行 StyleCop,并从 Mono 中的 .NET PDB 文件中阅读信息。Mono 已经被安装在 mono-complete 包中,通过强依赖关系,例如通过一个完整的 MonoDevelop,来实现更多兆字节的删减。不管是 ESLint,还是 TSLint,都只是在 NodeJS 运行时才能启动。

最终,我们把所有应用分别添加到 Docker Image 中,图像大小由 1GB 减少到 480MB。

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“怎么调整 Docker 里面的 Image 大小”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1430字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)