构建映像时出现错误"获取https://registry-1.docker.io/v2/:net/http:请求已取消"

Kul*_*ngi 15 docker docker-image

我在构建图像时遇到以下错误

Step 1/10 : FROM ubuntu:14.04
Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Run Code Online (Sandbox Code Playgroud)

小智 45

在 Mac OS X 上,我通过不使用实验性虚拟化框架解决了这个问题。

Preferences -> Experimental Features


bwi*_*ibo 28

在尝试使用Win10上的Docker构建或绘制图像时,我遇到了同样的问题.更改Docker vEthernet(DockerNAT)网络适​​配器的DNS 以便8.8.8.8为我修复它,如此GitHub问题中所述.

要更改DNS,请转到Docker(TrayIcon) - > 设置 - > 网络并设置固定的DNS服务器 ip = 8.8.8.8.

在Windows网络适配器的配置中更改DNS服务器也有效.

重启后,Docker可以再次拉动和构建图像.

版本信息:

Windows 10 x64 Enterprise Version 1709

$ docker version
Client:
 Version:       17.12.0-ce
 API version:   1.35
 Go version:    go1.9.2
 Git commit:    c97c6d6
 Built: Wed Dec 27 20:05:22 2017
 OS/Arch:       windows/amd64

Server:
 Engine:
  Version:      17.12.0-ce
  API version:  1.35 (minimum version 1.12)
  Go version:   go1.9.2
  Git commit:   c97c6d6
  Built:        Wed Dec 27 20:12:29 2017
  OS/Arch:      linux/amd64
  Experimental: true
Run Code Online (Sandbox Code Playgroud)


mec*_*ner 25

我遇到了同样的问题,以下修复对我有用https : //github.com/moby/moby/issues/22635#issuecomment-260063252

就我而言,我已将以下 2nameserver行添加到/etc/resolv.conf文件中。

前:

nameserver 127.0.0.53
Run Code Online (Sandbox Code Playgroud)

后:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.53
Run Code Online (Sandbox Code Playgroud)


小智 23

我遇到了同样的错误,并通过以下方式解决了

docker logout registry-1.docker.io
Run Code Online (Sandbox Code Playgroud)

  • 我在 VPN 连接中安装了 docker,发现问题与 VPN 设置有关,但仅执行这一行命令就可以解决问题! (3认同)

moh*_*08p 12

我认为问题在于你是代理的后面,在这种情况下你需要在Docker systemd服务文件中编写手动配置.这将覆盖默认docker.service文件.

如果您使用Docker for Windows,则只需在"vEthernet(DockerNAT)"网络适配器上将默认DNS设置为8.8.8.8.但是,请记住,这不是最佳做法,因为您将从办公室网络中暴露出来.

在linux环境中,您可以在HTTP_PROXY或HTTPS_PROXY后面添加环境变量,因为您分别使用端口80或443.如下图所示/etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"
Run Code Online (Sandbox Code Playgroud)

至于HTTTP_PROXY中 /etc/systemd/system/docker.service.d/https-proxy.conf

[Service]
Environment="HTTPS_PROXY=https://proxy.example.com:443/"
Run Code Online (Sandbox Code Playgroud)

然后在deamon重新加载后重新启动docker,

 $ sudo systemctl daemon-reload
 $ sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

希望这有效.

参考:https://docs.docker.com/engine/admin/systemd/#httphttps-proxy

  • 不,我不支持任何代理。 (2认同)
  • (你可以用你的环境修改问题)酷然后试试这个.. sudo nano /etc/resolv.conf #add这些行在顶部和上面一个用于家用路由器... nameserver 8.8.8.8 nameserver 8.8.4.4然后重启docker . (2认同)

小智 6

我遇到了同样的问题,30 分钟后才发现我在 VPN 网络上工作,阻止了其他站点。我关闭了 VPN,它奏效了 :) 这绝对是网络问题。当它说“未通过身份验证”时,我想也许我需要一些登录凭据。


小智 6

我在执行 Ansible AWX 安装时遇到了这个问题。

我有自己的私有 DNS :192.168.0.254 & 192.168.0.253 但收到同样的错误。

将我的 DNS 改回 8.8.8.8 和 8.8.4.4 后问题得到解决。


Gro*_*Src 6

当您选中“实验功能”选项卡下的“使用新的虚拟化框架”框时,在 Big Sur 11.3.1、Intel 上会发生此错误。取消选中该框并重新启动 Docker 为我解决了这个问题。