Dockerfile 是 Docker 中用于定义镜像自动化构建流程的配置文件,在 Dockerfile 中,包含了构建镜像过程中需要执行的命令和其他操作。通过 Dockerfile 我们可以更加清晰、明确的给定 Docker 镜像的制作过程,而由于其仅是简单、小体积的文件,在网络等其他介质中传递的速度极快,能够更快的帮助我们实现容器迁移和集群部署。

通常来说,我们对 Dockerfile 的定义就是针对一个名为 Dockerfile 的文件,其虽然没有扩展名,但本质就是一个文本文件,所以我们可以通过常见的文本编辑器或者 IDE 创建和编辑它。

Dockerfile 的内容很简单,主要以两种形式呈现,一种是注释行,另一种是指令行。

Comment
INSTRUCTION arguments

在 Dockerfile 中,拥有一套独立的指令语法,其用于给出镜像构建过程中所要执行的过程。Dockerfile 里的指令行,就是由指令与其相应的参数所组成。

环境搭建与镜像构建

如果具体来说 Dockerfile 的作用和其实际运转的机制,我们可以用一个我们开发中的常见流程来比较。

在一个完整的开发、测试、部署过程中,程序运行环境的定义通常是由开发人员来进行的,因为他们更加熟悉程序运转的各个细节,更适合搭建适合程序的运行环境。

在这样的前提下,为了方便测试和运维搭建相同的程序运行环境,常用的做法是由开发人员编写一套环境搭建手册,帮助测试人员和运维人员了解环境搭建的流程。

而 Dockerfile 就很像这样一个环境搭建手册,因为其中包含的就是一个构建容器的过程。

而比环境搭建手册更好的是,Dockerfile 在容器体系下能够完成自动构建,既不需要测试和运维人员深入理解环境中各个软件的具体细节,也不需要人工执行每一个搭建流程。