IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Docker ARG vs ENV

    冷石发表于 2022-08-29 09:01:22
    love 0

    构建 Docker 镜像的的时候有两种环境变量 ARG 和 ENV, 一种是在运行 build 命令时通过 --build-arg 参数设置的 build-time variables 以及通过在 dockerfile 里面设置 ENV 指令配置的环境变量。

    前言

    构建 Docker 镜像的的时候有两种环境变量 ARG 和 ENV, 一种是在运行 build 命令时通过 --build-arg 参数设置的 build-time variables 以及通过在 dockerfile 里面设置 ENV 指令配置的环境变量,本文说明它们之间的区别。

    ARG

    Dockerfile 里面的 ARG 指令定义了一个变量,在运行 docker build 命令时使用 --build-arg <varname> = <value> 参数将其传递给构建器。

    1
    ARG <name>[=<default value>]

    这种变量只存在于镜像构建的时候,一旦镜像构建完成就失效了,不要使用构建时变量来传递诸如 github 密钥,用户凭据等机密数据,构建时变量值可以使用 docker history 命令查看。

    ENV

    Dockerfile 里面的 ENV 指令将环境变量 设置为值 ,这个变量将在构建阶段中所有后续指令的环境中使用。

    1
    2
    ENV <key> <value>
    ENV <key>=<value> ...

    使用 ENV 设置的环境变量将一直存在于构建镜像时以及镜像容器运行时,可以使用 docker inspect 查看设置打的变量。也可以使用 docker run --env <key> = <value> 来更改它们。

    结语

    如果只是需要构建镜像时的环境变量,使用 ARG,如果这个变量在容器运行时也有用到就需要用 ENV,注意使用 ENV 指令定义的环境变量会覆盖同名的 ARG 指令定义的变量。



沪ICP备19023445号-2号
友情链接