一、为什么使用更小的基础镜像
首先,要了解这个问题的来源,为什么纠结这种事呢。当然原因在于,容器镜像虽然方便高效,但它有一个最大的问题就是,比较占用空间了。就算你随便把一个 Java 服务构建成镜像,镜像 Image 大小至少都在 100-200M 左右。这个大小当然还好,但我们做项目基本都是使用 CI/CD 自动构建,至少每天或每次 commit 都要触发一次开发/测试环境的全自动构建流程,一个项目一堆镜像服务,长年累月下来,这个空间占用量还是很恐怖的。而且基本上 Docker 的相关教程,一定会讲如何构建空间更小的镜像。使用 Docker 的你,一定也有特别注意到这一点吧。尽量使用适当的方式,构建更小的镜像,这肯定是需要的了。所以问题就来了,基本上很多建议,甚至是 Docker 官方的建议中,都会有一个点,就是使用更小的基础镜像。而在小的基础镜像中,最多的被提及的就是 alpine 了。
二、关于 alpine 镜像alpine 是一个非常特别的 Linux 发行版本,它本来是用于嵌入式系统中的,大小才 5M 左右,对于嵌入式系统,非常合适。本来并非用于 Linux 服务领域,但随着容器的流行,这个才 5M 大小的 Linux 在 Docker 中流行起来了,因为太小了,非常节省空间。这里就对比下同样属于 Linux 镜像 Ubuntu 与 alpine 的大小。