FROM
基础镜像,FROM 命令必须是 Dockerfile 的首个命令
也就是继承哪个镜像
LABEL
为镜像生成元数据标签信息
原有指令 MAINTAINER 已经放弃使用,用 LABEL maintainer="你的邮箱" 替代
USER
指定运行容器时的用户名或 UID,后续 RUN 也会使用指定用户
VOLUME
定义匿名卷,容器运行时应该尽量保持容器存储层不发生写操作,为了防止运行时用户忘记将动态文件保存的目录挂载为卷,可以事先指定某些目录挂载为匿名卷。这样就不会向容器存储层写入大量数据
WORKDIR
用于设置 CMD 指明的命令的运行目录
为后续的 RUN、CMD、ENTRYPOINT、ADD 指令配置工作目录。可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。使用 docker exec -it 进入容器后,默认也会进入到 WORKDIR 指定的目录
容器启动时的⼯作⽬录
ENV
指定容器启动时的环境变量(注意,只有在容器启动时,启动脚本能读取到,如果希望其他用户登录到容器也生效的话,需要写入 .bashrc)
设置镜像内的环境变量
COPY
COPY 命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统
EXPOSE
指定端口转发
CMD
设置容器创建是执行的默认命令
支持三种格式,默认会被 docker run 指定的参数覆盖。每个容器只能执行一条 CMD 命令。执行的命令和参数当指定多个时,只有最后一个起效
- CMD [“executable”, “参数1”,“参数2”]:使用 exec 方式执行,推荐
- CMD command 参数1 参数2:shell 方式执行
- CMD [“参数1”,“参数2”]:提供给 ENTRYPOINT 做默认参数
启动容器时执行的shell命令
ENTRYPOINT
指定容器的“入口”
支持两种格式,默认不会被 docker run 指定的参数覆盖。可以指定 --entrypoint 参数去覆盖。每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效
- ENTRYPOINT [“executable”, “参数1”,“参数2”]:使用 exec 方式执行
- 推荐 - ENTRYPOINT command 参数1 参数2:shell 方式执行
指定容器启动脚本
HEALTHCHECK
Docker 1.12版本后引入的判断容器运行状态是否正常
ADD
ARG
构建环境的环境变量