在dockerfile中运行curl失败,但可以从命令行运行

在dockerfile中运行curl失败,但可以从命令行运行,docker,curl,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 T

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

在使用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主机名,那么在生成过程中运行的容器将不知道该主机名。

Aha如果我指定它工作的IP地址。我多次尝试重新启动docker守护进程,但都没有帮助。mynexus不在/etc/hosts文件中,然后您可以在这里查看:并将{“dns”:[“yourDnsServerIp”]}添加到/etc/docker/daemon.json文件中,然后重新启动docker守护进程以应用更改。使用
-fL
运行curl为我修复了它。可能存在的重复