Dockerfile指令

Dockerfile指令

Docker 官方的 Dockerfile 指令。

https://docs.docker.com/reference/dockerfile/


Dockerfile 的注释方式是 # 号开头。

  • ADD

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

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

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

  • ENTERPONIT
    设置一个容器启动时运行的可执行文件(以及默认参数)。任何 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)。如果省略标签,那么就被视为最新(lastest),但是依旧建议一定要给标签设置为某个特定版本,以免出现任何意想不到的事情。 FROM 必须为 Dockerfile 的第一条指令。

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

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

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

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

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

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

posted @ 2024-09-09 14:14  takenika  阅读(23)  评论(0)    收藏  举报