【问题标题】:How to setup proxy for dockerfile ADD command如何为 dockerfile ADD 命令设置代理
【发布时间】:2020-11-25 14:19:43
【问题描述】:

我正在尝试将文件下载到 docker 映像中。但是我的机器在代理后面。 我无法为 ADD 命令设置代理参数。 我已经尝试在 dockerfile 中设置 env。

ENV HTTP_PROXY http://proxy:3128
ENV HTTPS_PROXY https://proxy:3128

我也尝试使用类似参数运行 docker build

docker build --build-arg HTTP_PROXY=http://proxy:3128 --build-arg HTTPS_PROXY=https://proxy:3128 ...

但这没有帮助。 Google-ing 也没有给出正确答案,所以我打开了这个帖子。

【问题讨论】:

  • ADD 命令用于从主机复制文件,您的网络代理如何参与?或者您正在从 url 下载带有 ADD 的文件? - 在这种情况下,您可以使用 RUN 并使用代理或其他方式执行 WGET。
  • ADD 命令也可以为远程 url 下载文件。
  • 是的,我在 doc 中看到了,但如果您使用一些控制台下载工具 - 您可以手动指定代理作为解决方法

标签: docker proxy dockerfile


【解决方案1】:

所以,除了将所需文件放入本地工件之外,我没有找到任何其他选择。 看来,这不是一个好的答案。但我没有另一个。 (

【讨论】:

  • 看我的回答;如果它解决了您的问题,请接受它作为答案。
【解决方案2】:

Docker 下载ADD 指令中指定的文件,并使用为 Docker 守护程序本身配置的代理。我通过实验而不是通过阅读 Docker 代码发现了这一点。如果您有兴趣或提出问题询问 Docker 开发人员here,您可以这样做。这是有道理的,因为ADD 运行在 Docker 主机上,而RUN 运行在容器中。

--build-arg 是在构建期间传递给容器的参数,这意味着您传递的代理变量在容器的上下文中可用。您可以通过执行RUN env | grep -i proxy 来打印代理信息,甚至在传递--build-arg 时从RUN 指令中的代理后面访问URL 来验证这一点。

要解决ADD 指令的代理问题,请通过在服务的Environment 属性中提供代理信息来配置Docker 服务本身。详细说明见Control Docker with systemd页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多