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 官网