语法
语法 1
ENV <key> <value>
语法 2
ENV <key>=<value> ...
作用 & 描述
ENV 指令将设置 形式的环境变量。此值将在所有后续 Dockerfile 命令的环境中,并且可以在许多内联和替换;
ENV 指令有两种形式。第一种形式,ENV 将单个变量设置为一个值。第一个空格后面的整个字符串将被视为-包括空格和引号等字符串;
第二种形式 ENV = … 允许一次设置多个变量。请注意,第二种形式在语法中使用等号(=),而第一种形式则不然。与命令行解析一样,引号和反斜杠可用于在值内包含空格;
定义的环境变量在后续 Dockerfile 中可以使用 $key 的形式使用该环境变量;
ENV 从生成的镜像运行容器时,使用的环境变量将保持不变。可以使用 docker inspect 查看值,并可以使用 docker run --env = 进行更改。
示例
示例 1
ENV myName="John Doe" myDog=Rex\ The\ Dog \
myCat=fluffy
示例 2
ENV myName John Doe
ENV myDog Rex The Dog
ENV myCat fluffy
示例 1 和 示例 2 将在最终镜像中产生相同纯净的结果,但第一种形式是首选,因为它产生单个缓存层。
注意
注意 1
环境持久性可能会导致意外的副作用。例如,设置 ENV DEBIAN_FRONTEND noninteractive 可能会使基于 Debian 的镜像上的 apt-get 用户感到困惑。要为单个命令设置值,请使用 RUN =