在dockerfile中运行curl失败但在命令行中运行

时间:2018-05-24 12:09:56

标签: docker curl

使用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卷曲该文件?

1 个答案:

答案 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 主机名,那么您遇到此问题的另一个原因可能是在构建期间运行容器。