介绍
DockerFile 是一个用来构建镜像的文本文件,文件内容包含了一条条构建镜像所需要的指令和说明 (源于菜鸟教程介绍)
Dockerfiel 指令
- ADD
从构建环境的上下文或远程URL 复制文件至镜像。如果是从一个本地路径加一个归档文件,那么它会自动解压。一般最好使用简单的COPY 命令来复制构建环境上下文和目录
- CMD
当容器 启动时执行指定的指令。如果还定义了ENTRYPOINT,该指令将被解释为ENTRYPOINT的参数.CMD 指令也会被docker run 命令中镜像名称后面的所有参数覆盖。例如 定义多个CMD命令 ,那么只有最后一个生效,前面出现的所有CMD指令无效
- COPY
用于从构建 环境的上下文复制文件至镜像。它有两种形式,COPY src dest 以及COPY ["src","dest"],两者皆是从上下文中的src复制文件或目录到容器的dest.如果路径中有空格的话,那么必须使用json数组的格式。通配符可以用来指定多个文件或目录
- ENTRPOINT
设置一个于容器,启动时运行的可执行文件(以及默认参数).任何CMD指令或docker run 命令中 镜像名称之后的参数,将作为参数传给这个可以执行文件。ENTRYPOINT指令通常用于提供 “启动” 脚本,目的是在解析参数之前,对变量和服务进行初始化
- ENV
设置镜像内的环境变量.这些变量可以被随后的指令引用
- EXPOSE
向Docker 表示该容器将会有一个进程监听所指定的端口.提供这个信息的目的是用于连接容器,本身不对网络有实质性的改变
- FROM
设置Dockerfile 使用的基础镜像;随后的指令皆执行在这个镜像之上
- MAINTAINER
把镜像的作者 元数据设定为指定的字符串.可以通过docker inspect -f {{.Author}} IMAGE 这个命令查看该信息.这个指令通常用于设置镜像的维护者的姓名和联系方式.
- ONBUILD
指定当镜像被用作另一个镜像的基础镜像时将会执行的指令.对于处理一些将要添加到子镜像的数据
- RUN
在容器内执行指定的指令,并把结果保存下来
- USER
`` 设置任何 后续的RUN,CMD,或 ENTRYPOINT 指令执行时所用的用户,请注意,UID 在主机和容器中是相同的,但用户名则可能被分配到不同的UID,导致设置权限时变的复杂 - VOLUME
指定未数据卷的文件或目录.如果该文件或目录已经在镜像中存在,那么当容器启动时,它就会被复制至这个卷,如果提供多个参数,那么就会被解释成多个数据卷
- WORKDIR
对任何后续的RUN ,CMD,ENTRYPOINT,ADD,COPY指定设置工作目录,这个指令可多次使用