RUN curl 在 dockerfile 中失败,但从命令行工作



使用 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命令从构建中运行最后一个提交的映像时,可以看到 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主机名,然后在构建期间对于正在运行的容器是未知的。

最新更新