ENV <key> <value> ENV <key>=<value> ...
该ENV指令将环境变量<key>设置为value。此值将存在于所有“后代” Dockerfile命令的环境中,并且也可以内联替换。
该ENV指令有两种形式。第一种形式ENV <key> <value>会将一个变量设置为一个值。第一个空格之后的整个字符串将被视为<value>-,包括空格和引号之类的字符。
第二种形式ENV <key>=<value> ...允许一次设置多个变量。请注意,第二种形式在语法中使用等号(=),而第一种形式则不使用等号(=)。与命令行解析一样,引号和反斜杠可用于在值中包含空格。
例如:
ENV myName="John Doe" myDog=Rex\ The\ Dog \ myCat=fluffy
和
ENV myName John Doe ENV myDog Rex The Dog ENV myCat fluffy
将在最终容器中产生相同的净结果,但是首选第一种形式,因为它产生单个缓存层。
ENV从结果映像运行容器时,使用设置的环境变量将保留。您可以使用docker inspect查看值,并使用更改它们docker run --env <key>=<value>。
如果您不想保留设置,请ARG改用。ARG仅在构建期间设置环境。例如,设置
ENV DEBIAN_FRONTEND noninteractive
apt-get当用户通过交互上下文进入容器时,可能会使用户对基于Debian的图像感到困惑docker exec -it the-container bash。
而是使用:
ARG DEBIAN_FRONTEND noninteractive
您也可以仅通过以下方式为单个命令设置一个值:
RUN <key>=<value> <command>