Dockerfile简介
Dockerfile是根据特定的语法格式撰写出来的一个普通的文本文件,Dockerfile文件中包含了一系列的指令,使用docker build命令依次执行在Dockerfile中定义的一系列指令,可以生成一个定制化的新镜像。
Docker镜像的结构
Docker镜像的分层结构是其轻量级和高效性的关键所在,而这一切的背后都离不开联合文件系统(UnionFS)的支持。UnionFS允许多个文件系统“联合”在一起,对外提供一种单一文件系统的假象。这种设计使得上层文件系统的改动可以被有效地隔离,而不会影响到底层文件系统。这对于Docker容器来说至关重要,因为它允许容器在运行时对文件系统的修改只存在于当前容器内,而不会影响到其他容器或宿主机。
在Docker中,镜像是由多层文件系统叠加构成的。每一层都是一个只读的文件系统,只有最顶层是可读写的。当Docker容器启动时,Docker会创建一个新的可写层作为最顶层,所有的写操作都会在这一层进行。这种设计极大地减少了磁盘空间的使用,因为多个容器可以共享相同的只读层。

Dockerfile的常用指令
Dockerfile文件的内容主要有几个部分组成,包括基础镜像,创建者信息,镜像操作指令,容器启动指令等。
指令 | 描述 |
FROM | Dockerfile的第一条指令,指明构建自定义镜像的基础镜像。 |
RUN | 构建镜像时,执行RUN后的指令。 |
ADD | 拷贝本机或远程文件至镜像内。 |
COPY | 拷贝本机文件至镜像内。 |
USER | 指定容器启动的用户。 |
ENTRYPOINT | 容器的启动命令。 |
CMD | 指定容器的启动命令或为ENTRYPOINT提供默认启动参数。 |
ENV | 指定容器运行时的环境变量。 |
ARG | 定义外部变量,构建镜像时可以通过ARG传递构建参数。 |
EXPOSE | 指定容器监听的端口。 |
WORKDIR | 为紧随其后的指令设置工作目录。 |
镜像的构建
Dockerfile文件的名称默认为Dockerfile。

Docker镜像构建命令为:docker build −t 镜像名称:版本 Dockerfile目录。 −t参数指定了镜像的名称与版本号。
