构建期间下载软件包时,应使用 Docker 预定义的代理构建输入,不要把临时路由保存到 Dockerfile 的 ENV 中。POSIX 调用可以提供:

HTTP_PROXY=http://203.0.113.10:8080 \
HTTPS_PROXY=http://203.0.113.10:8080 \
docker build --build-arg HTTP_PROXY --build-arg HTTPS_PROXY .

替换文档中的端点。在 --build-arg 名称后省略值,会从本次调用的环境中取得这些值。预定义输入不要求匹配的 ARG 声明。

Docker 默认会在构建缓存处理和 docker history 中排除这些代理参数。若在 Dockerfile 中显式引用它们,行为会改变;不要因为另一个构建参数示例这样写,就额外添加声明。

进程仍会收到这些值。即使某个 history 视图隐藏了认证 URL,它仍可能通过打印的环境、日志、复制的配置或后续镜像操作泄露。Dockerfile 的 ENV 会让路由成为最终镜像环境的一部分,使仅用于构建的代理变成每个容器的依赖。

命令需要敏感材料时,BuildKit secret mount 提供构建时机密接口。把凭据限制在该操作内;不要打印挂载内容,也不要把它复制进镜像层。

这些构建输入既不会配置守护进程更早进行的仓库拉取,也不会配置无法访问的远程 builder 的主机路由。之后应检查目标最终镜像和应用配置中是否存在持久代理值,不要以为临时输入处理已经移除了所有副本。

相关文章