使用Ubuntu 16.04和docker 18.03.1-ce
在Dockerfile中我有:
RUN curl -k -o app.jar -kfSL https://mynexus:9006/repository/legacy/1.0.2/app.jar
但是当我用以下内容构建时:
sudo docker build -t myimage .
我明白了:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0curl: (6) Could not resolve host: mynexus
The command '/bin/sh -c curl -k -o app.jar -kfSL https://mynexus:9006/repository/legacy/1.0.2/app.jar' returned a non-zero code: 6
如果我从终端运行完全相同的命令行,它可以正常工作:
$ curl -k -o app.jar -kfSL https://mynexus:9006/repository/legacy/1.0.2/app.jar
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3613k 100 3613k 0 0 1413k 0 0:00:02 0:00:02 --:--:-- 1413k
为什么我可以从命令行而不是从DockerFile卷曲该文件?
答案 0 :(得分:0)
使用curl命令从构建运行最后一个提交的映像时,您可以看到curl错误消息:
docker run -it --rm lastCommitedImageHash curl -k -o app.jar -kfSL https://mynexus:9006/repository/legacy/1.0.2/app.jar
上周我遇到了同样的问题 - curl直接从主机工作,但在从Dockerfile构建期间运行时却没有。
重启Docker守护程序对我有帮助。
我还没有找到该州的原因。它在机器上也是Kubernetes的主人,上周我做了Kubernetes集群升级,可能这就是问题的根源。
如果您只在主机上的 / etc / hosts 文件中定义 mynexus 主机名,那么您遇到此问题的另一个原因可能是在构建期间运行容器。