Docker 底层镜像之选择困难症
Scratch
scratch
是一个空镜像,只能用于构建其他镜像,比如你要运行一个包含所有依赖的二进制文件,如 Golang
程序,可以直接使用 scratch
作为基础镜像
Busybox
scratch
是个空镜像,如果希望镜像里可以包含一些常用的 Linux
工具,busybox
镜像是个不错选择,镜像本身只有 763KB
,非常便于构建小镜像
BusyBox
是一个集成了一百多个最常用 Linux
命令和工具(如 cat
、echo
、grep
、mount
、telnet
等)的精简工具箱,它只需要几百KB
的大小,很方便进行各种快速验证,被誉为 Linux 系统的瑞士军刀
BusyBox
可运行于多款 POSIX
环境的操作系统中,如 Linux
(包括 Android
)、Hurd
、FreeBSD
等
Alpine
Alpine
采用了 musl libc
和 busybox
以减小系统的体积和运行时资源消耗,但功能上比 busybox
又完善的多,Alpine
还提供了自己的包管理工具 apk
,可以通过 packages
网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件
Alpine Docker
镜像也继承了 Alpine Linux
发行版的这些优势。相比于其他 Docker
镜像,它的容量非常小,仅仅只有 5 MB
左右(对比 Ubuntu
系列镜像接近 200
MB),且拥有非常友好的包管理机制