问题及分析

很多初学docker的小伙伴在安装好docker desktop之后,尝试使用docker pull hello-world拉取镜像时,会报错。

docker pull hello-world
Use tag latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

这种情况主要原因是国内暂时无法访问 https://registry-1.docker.io,需要更换为国内的镜像源。主要有以下两种方式。

1.直接指定镜像源

在拉取时直接指定镜像源的地址,方式如下:

docker pull docker.m.daocloud.io/library/hello-world  # docker.m.daocloud.io为可用的国内镜像源

hello-world为需要拉取的镜像名称,这里要注意,不能遗漏library。

2.修改docker-desktop中的settings

上面的做法是临时指定一次镜像源,实际中我们经常需要拉取多次不同的镜像,可以通过修改docker-desktop软件中的settings设置多个可用的镜像源,具体位置如下图:
在这里插入图片描述
增加registry-mirrors属性,文本具体内容如下:

"registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live",
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]

注意逗号分隔的规则。
另外,一些文章中提取的中科大、腾讯、网易、阿里的镜像源似乎已经不可用,上述4个镜像源目前是可用的,也可以搜索最新可用的镜像源。

修改完上述文件后,点击下面的“Apply & Restart”,要等重启后再去拉取,就可以成功了。如果还是之前的错误,可以考虑重新启动系统。成功的结果如下图所示。
在这里插入图片描述
备注:本文中解决问题主要针对的是windows平台下安装的docker-desktop,对linux可能无效。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐