Docker build ADD vs RUN curl

Docker build ADD vs RUN curl,curl,docker,dockerfile,Curl,Docker,Dockerfile,如果我运行dockerfile,其中有如下命令 RUN curl -o file.txt http://X.X.X.X/path/to/file/file.txt 构建工作正常,但是如果我使用 ADD http://X.X.X.X/path/to/file/file.txt file.txt 构建失败,它抱怨 Got HTTP status code >= 400: 503 Service Unavailable 关于ADD有什么我不明白的吗 编辑文件也可通过docker主机访问。在

如果我运行dockerfile,其中有如下命令

RUN curl -o file.txt http://X.X.X.X/path/to/file/file.txt
构建工作正常,但是如果我使用

ADD http://X.X.X.X/path/to/file/file.txt file.txt
构建失败,它抱怨

Got HTTP status code >= 400: 503 Service Unavailable
关于ADD有什么我不明白的吗

编辑文件也可通过docker主机访问。

在docker主机中执行

ADD
指令复制新文件、目录或远程文件URL 从
并将它们添加到路径处的映像文件系统中

在容器内执行

RUN
指令将在 显示当前图像并提交结果。由此产生的后果 图像将用于
Dockerfile
中的下一步

特别是命令
运行curl-o file.txthttp://X.X.X.X/path/to/file/file.txt
执行必须已安装在我们使用的映像中的curl。如果curl命令尚未安装(并且未出现在基本映像中),则整个
运行
命令将失败。 相反,即使没有在容器中安装
curl
(或类似物),也可以执行命令
ADD
url,因为它是在创建映像期间由主机执行的(它使用docker编写的Go库)


http://X.X.X.X/path/to/file/file.txt
是否可在docker容器外部访问

编辑:经问题作者确认:

我的docker主机位于防火墙后面,防火墙中设置了一个代理
/etc/default/docker
文件。所以当我想抓取一个文件时 对于我所在的网络,代理让它看向外部 网络


哦,我不知道,很高兴知道。是的,它可以通过docker主机上的curl访问。感谢fox91对原因的提示。我的docker主机位于防火墙后面,该防火墙在/etc/default/docker文件中设置了一个代理。所以,当我想抓取我所在网络内部的文件时,代理使其看起来像网络外部。ADD是使用docker主机环境执行的,这一事实对于诊断此问题非常重要。您能为ITI@prashant添加参考/文档吗?我已经用更完整和深入的解释更新了答案。嘿@ErikNguyen,您能确认我的答案吗?谢谢