dockerfile深入学习之FROM

FROM 主要作用于初始化新的构建阶段以及为后续指令执行提供基础镜像

语法形式:

FROM <image>[:<tag>] [AS <name>]

FROM <image>[@<digest>] [AS <name>]

注:

  1、在所有指令中,ARG是唯一一个可以放在FROM指令之前的指令

  2、在一个dockerfile文件中, FROM可以出现多次以创建多个图像或者通过FROM使用一个stage作为另一个stage的依赖镜像,每个FROM都会清除以前指令创建的任何状态

  3、通过添加AS name可以为新的构建阶段命名,该名称可以在后续的FROM和COPY中通过 --from=<name|index>的方式引用

  4、tag以及digest可任选一个,如果忽略掉,build默认采用最新的标记

FROM和ARG

FROM支持做生意通过ARG指令定义的变量

  ARG  CODE_VERSION=latest

  FROM base:${CODE_VERSION}

  CMD  /code/run-app

  FROM extras:${CODE_VERSION}

  CMD  /code/run-extras

在FROM之前声明的ARG不在构建阶段,所以它不能在FROM之后的任何指令中使用。要使用在第一个FROM之前声明的ARG的默认值,请在构建阶段内使用没有值的ARG指令

  ARG VERSION=latest

  FROM busybox:$VERSION

  ARG VERSION //此处使用未赋值的VERSION,可以将VERSION变量值传递给后面的指令使用

  RUN echo $VERSION > image_version //此处VERSION变量值为latest

posted on 2018-01-04 14:17  残天  阅读(1421)  评论(0)    收藏  举报

导航