Predefined ARGS(预先定义好的ARG变量)

Docker有一组预先定义ARG变量,我们可以在Dockerfile中不声明ARG变量的情况下使用这些变量。

  • HTTP_PROXY

  • http_proxy

  • HTTPS_PROXY

  • https_proxy

  • FTP_PROXY

  • ftp_proxy

  • NO_PROXY

  • no_proxy

为了使用这些变量,我们可以通过命令行标志传递值。

--build-arg <varname>=<value>

默认情况下,这些预先定义的变量被排除在docker history的输出之外。排除它们可降低在HTTP_PROXY变量中意外泄露敏感身份验证信息的风险。

思考下面的例子:Dockerfile使用了--build-arg HTTP_PROXY=http://user:pass@proxy.lon.example.com

FROM ubuntu
RUN echo "Hello World"

在这种情况下,HTTP_PROXY变量的值在docker history中不可用,并且未缓存。如果想要更改位置,将代理服务器更改为http://user:pass@proxy.sfo.example.com,则后续的构建不会导致缓存丢失。

如果需要覆盖此行为,则可以在Dockerfile中添加ARG声明,如下所示:

FROM ubuntu
ARG HTTP_PROXY
RUN echo "Hello World"

当构建这个Dockerfile时,HTTP_PROXY会保留在docker history中,修改该变量的值会导致缓存失效。

Last updated