如何解决docker pull中的i/o超时错误

das*_*das 12 dns docker dockerfile docker-compose docker-machine

尝试命令时:

docker pull alpine
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

错误拉动映像配置:获取https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/e2/e21c333399e0aeedfd70e8827c9fba3f8e9b170ef8a48a29945eb7702bf6aa5f/data?Expires=1514733515&Signature=VxGVBTpdVnoFQYVSYjf-xOAYENczOPcAp7BZsxEZI6EyoiRgvKsOmxFkb7MgCMau~yVa59uHJcdq5KmCWKD6G3Cnsr2V2CdXrEIZ~P-Kt- 74m8LKsjbTzw2yw~ABuLOs5c7OI9-2LFB5XOrFjgBaDUKPGDpyWsLMLz7QAh-vNrM_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q:拨打tcp 218.2444o 超时:/i

docker --version17.09.1-ce, build 19e2cf6。该docker-compose --version1.17.1, build 6d101fb。从 OSX El Capitan 尝试这些命令。

有人建议将 DNS 服务器更改为公共 DNS 也可以解决这个问题。

Ven*_*ryx 15

对我来说解决这个问题的原因很简单:

  1. 完全关闭 Docker Desktop。(右键单击托盘图标,按Quit Docker Desktop,然后等待图标消失并显示“WSL 已关闭”消息)
  2. 再次启动 Docker Desktop。

  • 请注意,虽然答案本身很清楚,但右键单击 -> 重新启动 docker 桌面不会有帮助! (2认同)

Moh*_*din 10

正如评论中所讨论的,您尝试 ping 主机 dseasb33srnrn.cloudfront.net 但它没有响应(它响应我的 ping),这意味着问题出在您的系统 DNS 设置中,而不是在Docker

请检查/etc/resolv.conf中的 DNS 设置,如果您不确定该怎么做,只需将此文本粘贴到该文件中(并删除任何其他名称服务器):

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

这应该可行,尽管它不是最佳方法,但当您尝试时,我将编辑我的答案以添加最优雅的方法。


san*_*eti -1

检查无配置,

使用 Google dns 在 /etc/resolve.conf 中添加名称服务器

名称服务器 8.8.8.8

名称服务器 8.8.4.4