Dockerfile 全部指令及描述如下表:

指令 描述 语法
ARG 创建镜像过程中使用的变量,执行 docker build 时通过 build-arg 来为变量赋值,镜像编译成功后 ARG 指定变量就不存在 ARG[=]
FROM 所创建镜像的基础镜像,Dockerfile 的第一条指令必须是 FROM FROM[AS ] 或者 FROM:[AS] 或者 FROM@[AS]
LABEL 所创建镜像的元数据标签,元数据标签可以辅助过滤出特定的镜像 LABEL==…
EXPOSE 镜像内部所监听的端口,EXPOSE 指令只起到声明作用,不会自动映射端口 EXPOSE [/…]
ENV 环境变量,在镜像生成的过程中会被 RUN 指令使用,而且在镜像启动过程中也会存在 ENV=…
ENTRYPOINT 镜像默认入口命令,会在启动容器时作为根命令执行,Dockerfile 只能有一个 ENTRYPOINT 指令 如果需要利用 exec 执行则这样编写 ENTRYPOINT[“executable”,“param1”,“param2”],如果需要在 shell 中执行,则需要这样编写 ENTRYPOINT command param11 param2
VOLUME 挂载数据卷 VOLUME["/data"]
USER 容器运行时的用户名或ID USER daemon
WORKDIR 工作目录 WORKDIR /path/to/workdir
ONBUILD 创建子镜像时自动执行的操作指令 ONBUILD[INSTRUCTION]
STOPSIGNAL 容器退出信号 STOPSIGNAL signal
HEALTHCHECK 容器检查健康的方式 HEALTHCHECK[OPTIONS]CMD command
SHELL 指定shell类型 SHELL [“executable”,“parameters”]
RUN 运行指令 RUN
CMD 容器启动时执行的命令 CMD[“executable”,“param1”,“param2”]
ADD 添加内容到镜像 ADD
COPY 复制内容到镜像 COPY

二、创建镜像

编写 Dockerfile 文件之后,可以通过 docker [image] build 命令来创建镜像,语法命令如下:

docker build [OPTIONS] path | url | -

执行该命令后,docker 将会读取指定目录及其子目录下的 Dockerfile 文件,并将指定目录下所有数据作为上下文发送给 Docker 服务。Docker 服务在校验完 Dockerfile 文件格式后,将逐条执行文件中的命令,遇到 ADD、COPY、RUN 命令将会生成一层镜像。所有命令执行成功后,Docker 会返回镜像的唯一ID。

小提示1:
我们只需要将创建镜像所需要的文件放入 Dockerfile 中,不要将其他无关文件放入,因为上下文过大会导致创建镜像速度放缓,甚至失败。

小提示2:
如果使用的 Dockerfile 文件不再上下文路径中,可以使用 -f 参数来指定 Dockerfile 文件的路径。

小提示3:
如果要指定镜像标签,可以使用 -t 参数。

扩展:
更多 docker build 命令参数可查阅 docker 官网