【ADD】

从构建环境的上下文或远程 URL 复制文件至镜像。如果是从一个本地路径添加一个归 档文件,那么它会被自动解压。由于 ADD 指令涵盖的功能相当广泛,一般最好还是使用 相对简单的 COPY 指令来复制构建环境上下文的文件和目录,并用 RUN 指令配合 curl 或 wget 来下载远程资源(这样还可以在同一个指令中处理和删除下载文件)。

【CMD】

当容器启动时执行指定的指令。如果还定义了 ENTRYPOINT ,该指令将被解释为 ENTRYPOINT 的参数(在这种情况下,请确保使用的是 exec 格式)。CMD 指令也会被 docker run命令中镜像名称后面的所有参数覆盖。假如定义了多个CMD指令,那么只有 最后一个生效,前面出现过的 CMD 指令全部无效(包括出现在基础镜像中的那些)。

【COPY】

用于从构建环境的上下文复制文件至镜像。它有两种形式,COPYsrc dest以及COPY ["src", "dest"],两者皆从上下文中的 src 复制文件或目录至容器内的 dest。如果路 径中有空格的话,那么必须使用 JSON 数组的格式。通配符可以用来指定多个文件或 目录。请注意,你不能指定上下文以外的 src 路径(例如../another_dir/myfile是不管用 的)。

【ENTRYPOINT】

设置一个于容器启动时运行的可执行文件(以及默认参数)。任何 CMD 指令或 docker run 命令中镜像名称之后的参数,将作为参数传给这个可执行文件。ENTRYPOINT 指令通 常用于提供“启动”脚本,目的是在解析参数之前,对变量和服务进行初始化。

【ENV】

设置镜像内的环境变量。这些变量可以被随后的指令引用。例如:

          ENV MY_VERSION 1.3

          RUN apt-get install -y mypackage=$MY_VERSION

在镜像中这些变量仍然可用。

【EXPOSE】

向 Docker 表示该容器将会有一个进程监听所指定的端口。提供这个信息的目的是用 于连接容器或在执行docker run命令时通过-P参数把端口发布开来; EXPOSE 指令本身并不会对网络有实质性的改变。

【FROM】

设置 Dockerfile 使用的基础镜像;随后的指令皆执行于这个镜像之上。基础镜像以“镜 像:标签”(IMAGE:TAG)的格式表示(例如 debian:wheezy)。如果省略标签,那么就被 视为最新(latest),但我强烈建议你一定要给标签设置为某个特定版本,以免出现任 何意想不到的事情。FROM 必须为 Dockerfile 的第一条指令。

【MAINTAINER】

把镜像中的“作者”元数据设定为指定的字符串。可以通过docker inspect -f {{.Author}} IMAGE这个命令来查看该信息。这个指令通常用于设置镜像维护者的姓名 和联系方式。

【ONBUILD】

指定当镜像被用作另一个镜像的基础镜像时将会执行的指令。对于处理一些将要添加到 子镜像的数据,这个指令将会非常有用(例如,把代码从一个已选定的目录中复制出 来,并在执行构建脚本时使用它)。

【RUN】在容器内执行指定的指令,并把结果保存下来。

【USER】

设置任何后续的 RUN、CMD 或 ENTRYPOINT 指令执行时所用的用户(用户名或 UID)。请 注意,UID 在主机和容器中是相同的,但用户名则可能被分配到不同的 UID,导致设置 权限时变得复杂。

【VOLUME】

指定为数据卷的文件或目录。如果该文件或目录已经在镜像中存在,那么当容器启动 时,它就会被复制至这个卷。如果提供了多个参数,那么就会被解释成多个数据卷。出 于对可移植性和安全性的考虑,你不能在 Dockerfile 中指定数据卷将会使用的主机目 录。

【WORKDIR】

对任何后续的 RUN、CMD、ENTRYPOINT、ADD 或 COPY 指令设置工作目录。这个指令可多次使用。支持使用相对路径,按上次定义的 WORKDIR 解析。