FROM
FROM <image> [AS <name>]
或者
FROM <image>[:<tag>] [AS <name>]
或者
FROM <image>[@<digest>] [AS <name>]
FROM 指令初始化一个新的构建阶段以及设置基础镜像到随后的指令。因此,一个合法的 Dockerfile必须以一个FROM指令开头。镜像可以是任何合法的镜像——从公共仓库里面拉取一个镜像尤其容易。
ARG是唯一一个可以在FROM之前运行的Dockerfile指令。FROM可以出现多次在单个Dockerfile中去创建多个镜像或者使用一个构建的过程作为另外一个构建过程的依赖。只需在每个新的FROM命令提交前记录上一次输出的镜像ID。每次的FROM都会清除先前指令的任何状态。- 在使用FROM指令是可以选择性地用
AS name给新构建命名。这个名字可以附加在FROM和COPY --from=<name|index>的指令后面来引用这个阶段的镜像。 tag和digest的值是可选的。如果你省略他们,构建器会默认假设一个 latesttag。构建器会返回一个错误如果它找不到tag的值。
理解 ARG 和 FROM 如何互相影响
FROM 指令支持在第一个 FROM 前通过一些 AGE 指令声明变量。
ARG CODE_VERSION=latest
FROM base:${CODE_VERSION}
CMD /code/run-app
FROM extras:${CODE_VERSION}
CMD /code/run-extras
ARG 在 FROM 之前声明是在构建阶段之外,所以在FROM后,它不能被任何指令使用。为了可以使用使用在第一个FROM之前定义的ARG,可以在构建阶段里卖弄声明一个没有值的ARG:
ARG VERSION=latest
FROM busybox:$VERSION
ARG VERSION
RUN echo $VERSION > image_version

本文深入解析Dockerfile中的FROM指令,介绍其不同用法及如何指定镜像、标签和摘要。同时,探讨了如何利用FROM指令进行多阶段构建,并解释了ARG指令与FROM指令之间的交互作用。
560

被折叠的 条评论
为什么被折叠?



