这篇文章主要介绍了怎么调整Docker里面的Image大小,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
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。
感谢你能够认真阅读完这篇文章,希望小编分享的“怎么调整Docker里面的Image大小”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。