Dockerfile文件中的13个CMD

【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

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

VOLUME

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

WORKDIR

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

你可能感兴趣的:(Docker)