云计算核心技术Docker教程:Dockerfile文件FROM命令详解
Dockerfile文件FROM指令初始化新的构建阶段并为后续指令设置“基本镜像”。因此,有效的 Dockerfile 必须以 FROM 指令开头。镜像可以是任何有效镜像。
语法格式
FROM [--platform=platform] image [AS name]
FROM [--platform=platform] image[:tag] [AS name]
FROM [--platform=platform] image[@digest] [AS name]
FROM指令详细说明
ARG 是唯一一个可能出现在 FROM 前边的指令;
FROM 可以在单个 Dockerfile 镜像中多次出现以创建多个镜像,或者使用一个构建阶段作为另一个构建阶段的依赖项。只需在每条新 FROM 指令之前记下提交输出的最后一个镜像ID。每条 FROM 指令都清除先前的指令创建的任何状态;
可选的名称可以通过添加给与一个新的构建阶段 AS name 的 FROM 指令。该名称可用于后续 FROM 和 COPY --from= 指示,以引用此阶段构建的镜像;
该tag或digest值是可选的。如果您忽略其中任何一个latest,那么缺省情况下构建器将采用标签。如果构建器找不到该tag值,则返回错误。
FROM指令支持由ARG 第一指令之前的任何指令声明的变量FROM。
ARG CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD /code/run-app
FROM extras:${CODE_VERSION}
CMD /code/run-extras
ARG在a之前的声明FROM位于构建阶段之外,因此不能在a之后的任何指令中使用它FROM。要ARG在第一次FROM使用声明之前使用默认值,请在ARG构建阶段使用没有值的指令:
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version