Docker 底层镜像之选择困难症

Scratch

scratch 是一个空镜像,只能用于构建其他镜像,比如你要运行一个包含所有依赖的二进制文件,如 Golang 程序,可以直接使用 scratch 作为基础镜像

Busybox

scratch 是个空镜像,如果希望镜像里可以包含一些常用的 Linux 工具,busybox 镜像是个不错选择,镜像本身只有 763KB,非常便于构建小镜像

BusyBox 是一个集成了一百多个最常用 Linux 命令和工具(如 catechogrepmounttelnet 等)的精简工具箱,它只需要几百KB 的大小,很方便进行各种快速验证,被誉为 Linux 系统的瑞士军刀

BusyBox 可运行于多款 POSIX 环境的操作系统中,如 Linux(包括 Android)、HurdFreeBSD

Alpine

Alpine 采用了 musl libcbusybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,Alpine 还提供了自己的包管理工具 apk,可以通过 packages网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件

Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200MB),且拥有非常友好的包管理机制