这是本课程的第三部分:镜像篇,共 8 篇。前四篇我分别为你介绍了如何对 Docker 镜像进行生命周期的管理,如何使用 Dockerfile 进行镜像的构建和分发以及 Docker 的构建系统和下一代构建系统——BuildKit。下面我们一起进入本篇的学习。
在前期的课程中,我们已经知道使用 Dockerfile 构建镜像,是当前最为普遍,也最为标准的方式。
随着业务容器化进度的推进,以及 Kubernetes 等云原生技术的普及,不可避免的技术之一便是构建镜像。
Dockerfile 的语法并不算多,之前的内容中也有所介绍。同样的需求,不同的人写出来的 Dockerfile 可能相差不多,但 Docker 有不少的“默认行为”,不同的 Dockerfile 构建镜像的效率和后期的维护性也相差甚远。
使用 Dockerfile
虽然本文的标题是 Dockerfile 的优化和最佳实践,但此处还是要再次重申下,请尽量使用 Dockerfile 描述镜像的构建过程。主要原因如下:
- 过程可追溯:根据之前课程的内容,想必大家也已经了解了 Dockerfile 是在描述镜像的构建过程,大家均可通过 Dockerfile 看到镜像构建时需要执行的步骤,或者其需要安装的依赖等。
- 变更可管理:Dockerfile 是个纯文本文件,配合 Git 做版本控制,可以很清晰的查找到每个版本之间的变更。
- 基于上述两个原因,使用 Dockerfile 来描述镜像的构建过程,从可维护性上来看,也是首选。
- 易于优化:最后一个主要原因,也是本