Docker build ADD vs RUN curl
如果我运行dockerfile,其中有如下命令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主机访问。在
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,您能确认我的答案吗?谢谢