1. ADD 复制文件, 格式如下
- ADD <src> ... <dest>
- ADD ["<src>", ... "<dest>"]
表示从src目录复制文件到容器的dest
2. ARG 设置构建参数, ARG指令用于设置构建参数,类似于ENV。和ARG不同的是,ARG设置的是构建时的环境变量,在容器运 行时是不会存在这些变量
示例:ARG user1=someuser
3. CMD 容器启动命令
CMD 指令用于为执行容器提供默认值。每个 Dockerfile 只有一个CMD命令,如果指定了多个CMD命令,那么只有最后一个 会 被执行,如果启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。
- CMD ["executable", "param1", "param2"] (推荐使用)
- CMD ["param1", "param2"] (为ENTRYPOINT指令提供预设参数)
- CMD command param1 param2 (在shell中执行)
4. COPY 复制文件
- ADD <src> ... <dest>
- ADD ["<src>", ... "<dest>"]
表示从src目录复制文件到容器的dest
5. ENTRYPOINT 入口点
- ENTRYPOINT ["executable", "param1", "param2"] (推荐使用)
- ENTRYPOINT command param1 param2 (在shell中执行)
ENTRYPOINT 和 CMD 指令的目的一样,都是指定Docker容器启动时执行的命令,可多次设置,但只有最后一个有效.
6. ENV 设置环境变量
- ENV <key> <value>
- ENV <key>=<value>...
示例: JAVA_HOME /path/to/java
7. EXPOSE 声明暴露的端口
# 声明暴露一个端口示例
- EXPOSE port1
# 相应的运行容器使用的命令
- docker run -p port1 image
# 也可以使用 -P 启动
- docker run -P image
# 也可是声明暴露多个端口
- EXPOSE port1 port2 port3
# 相应的运行容器使用的命令
- docker run -p port1 -p prot2 -p port3 image
# 也可以指定需要映射到宿主机上的端口号
- docker rum -p host_port1:port -p host_port2:port2 -p host_port3:port3 image
8. FROM 指定基础镜像
FROM指令必须指定,且需要写在其他指令的前面。FROM指令后的所有指令都依赖与该指令所指向的镜像
示例:
- FROM <image>
- FROM <image>:<tag>
- FROM <image>@<digest>
9. LABEL 为镜像添加元数据
LABEL 指令用于为镜像添加元数据
格式为: LABEL <key>=<value> <key>=<value> ......
10. MAINTAINER 指定维护者的信息
MAINTAINER 指令用于指定维护者信息,用于为 Dockerfile 署名
示例:
- MAINTAINER 周元<ascd@163.com>
11. RUN 执行命令
该指令支持两周格式
- RUN <command>
- RUN ["executable", "param1", "param2"]
run <command> 在shell终端中运行,在Linux中默认是/bin/sh -c,在Windows 中是cmd /s /c, 使用这种格式,就像直接在命令行中输入命令一样。
run ["executable", "param1", "param2"] 使用 exec 执行, 这种方式类似于函数调用。指定其他终端可以通过该方式操作,例如:run ["/bin/bash", "-c", -"echo hello"], 该方式必须使用双引号, 而不能使用单引号,因为该方式会被转化成一个JSON数组。
12. USER 设置用户
该指令用于设置启动镜像时的用户或者UUID, 写在该指令后的RUN, CMD以及ENTRYPOINT 指令都能将使用该用户执行命令
格式为:
- user 用户名
13. VOLUME 指定挂载点
该指令使容器的一个目录具有持久化存储的功能,该目录可被容器本身使用,也可共享给其他容器。当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。
示例:
- VOLUME /data
14. WORKDIR 指定工作目录
切换目录指令,类似于 cd 命令
示例:
- WORKDIR /path/to/workdir