六种减小Docker镜像大小的方法

本文介绍了六种减小Docker镜像大小的方法:使用Alpine Linux,安装最少的依赖,清理apt缓存,避免中间依赖的安装与卸载分离,利用多阶段编译,以及选择slim版本的镜像。通过这些方法,可以有效降低Docker镜像的体积,提高资源利用率。
摘要由CSDN通过智能技术生成

我从2017年做Vulhub开始,一直在和一个麻烦的问题做斗争:在编写Dockerfile的时候,如何减小docker build生成的镜像大小?这篇文章就给大家总结一下我自己使用过的六种减小镜像大小的方法。

1. 使用Alpine Linux

Alpine Linux是一个基于BusyBox和Musl Libc的Linux发行版,其最大的优势就是小。一个纯的基础Alpine Docker镜像在压缩后仅有2.67MB。

不少Docker官方镜像都有Alpine版本,比如PHP:

比较之下就可以发现,alpine版本镜像大小是普通版本的1/5左右。

但是在Docker Hub中,大部分镜像是没有Alpine版本的,比如Mysql和PHP-Apache,如果我们需要基于这些环境开发,就不得不自己编写Alpine版本,或者找一些第三方镜像。

另外,Alpine的另一个缺点是,其使用了Musl Libc作为传统的glibc的替代,编译软件的时候可能会遇到一些不可预知的问题,这一点会导致我们耗费不少不必要的时间。

2. 只安装最少的依赖

apt-get、yum、apk等软件包管理器是我们编译镜像时必然需要用到的工具,纯净的Docker基础镜像通常会缺少wget、curl、git、gcc等工具,需要我们手工来安装。

我们以apt为例,apt-get在安装软件的时候,可以指定一个选项:--no-install-recommends,指定这个参数后,有一些非必须的依赖将不会被一起安装。比如,我们安装wget时,如果增加这个选项,待安装的包将从6个减少为3个:

这在一定程度上缩小了镜像的大小,但这样做带来的副作用就是,可能导致目标软件缺少一些功能。

比如,此时的wget将无法验证服务器证书的真伪,导致命令出错:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值