Docker代理配置不适用于加载项Dockerfile

Docker代理配置不适用于加载项Dockerfile,docker,proxy,dockerfile,Docker,Proxy,Dockerfile,我尝试编写一个Dockerfile,将文件添加到图像中,如下所示: ADD https://repository.internal/file.zip /tmp/ repository.internal主机只能通过代理访问。我为代理配置提供了--config选项,但是ADD命令似乎没有使用代理,并且失败了 我知道代理配置是正确的,因为我添加了行 RUN curl https://repository.internal/file.zip 这很好用 是否有可能同时使用代理配置运行ADD命令?根据我

我尝试编写一个Dockerfile,将文件添加到图像中,如下所示:

ADD https://repository.internal/file.zip /tmp/
repository.internal
主机只能通过代理访问。我为代理配置提供了
--config
选项,但是
ADD
命令似乎没有使用代理,并且失败了

我知道代理配置是正确的,因为我添加了行

RUN curl https://repository.internal/file.zip
这很好用


是否有可能同时使用代理配置运行
ADD
命令?

根据我上面的评论,我认为这与Docker构建过程处理
ADD
run
命令的内部方式有关。。。我找不到支持这一点的文档-因此有更深入的内部知识的人可能会确认或拒绝,但在构建图像的层中执行
运行
命令是有意义的,其中执行
添加
命令并将其结果烘焙到图像中

无论以何种方式处理,您都可以通过以下方式转到
RUN
方法来实现所需:

FROM <your base image>

RUN curl https://repository.internal/file.zip >> /tmp/file.zip \
    && cd /tmp \ 
    && unzip file.zip \
    && rm file.zip

然后,这将使用一个映像将
curl
unzip
放入以收集和处理文件的提取,而无需将它们安装到最终的应用程序映像上。

我想这与Docker构建映像时执行的构建分层有关,而且ADD使用的方法与运行的方法略有不同。。。我找不到任何文档来支持这一点,但是在我看来,这是有意义的,因为运行时会对正在生成的映像执行某些操作,当添加执行某些操作时,会将结果放入映像中-可能Docker正在使用网络外的生成上下文,您需要执行该添加命令。您可以使用“RUN curl xxxx>/tmp/file.zip&&unzip/tmp/file.zip”吗?谢谢,是的,这很有意义。我现在正在使用您提出的
curl
方法作为解决方案,它运行良好。但这并不理想,因为curl可能在任何映像上都不可用,因此必须首先安装,才能解决此问题。不管怎么说,这是一件事,只是为了完整
unzip
不会删除zip,因此需要
rm
FROM <some useful base image> as collector

RUN apt-get install -y curl unzip
RUN mkdir /tmp/files && \
    && curl https://repository.internal/file.zip >> /tmp/files/file.zip \
    && cd /tmp/files \ 
    && unzip file.zip \
    && rm file.zip

FROM <your final desired base image>

COPY --from=collector /tmp/files /tmp