pykend
pykend
发布于 5个月前

Docker获取镜像报错 docker: Error response from daemon

在使用docker获取镜像时,出现了镜像获取报错的问题,找到了解决的方法记一下。

一、问题

➜  ~ docker search sameersbn
Error response from daemon: Get https://index.docker.io/v1/search?q=sameersbn&n=25: dial tcp: lookup index.docker.io on 192.168.65.1:53: read udp 192.168.65.2:45190->192.168.65.1:53: i/o timeout

➜  ~ docker pull sameersbn
Using default 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)
➜  ~

二、处理

第一步:通过dig @114.114.114.114 registry-1.docker.io找到可用IP

➜  ~ dig @114.114.114.114 registry-1.docker.io

; <<>> DiG 9.8.3-P1 <<>> @114.114.114.114 registry-1.docker.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47220
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 4, ADDITIONAL: 9

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;registry-1.docker.io.        IN    A

;; ANSWER SECTION:
registry-1.docker.io.    3600    IN    A    54.164.230.151
registry-1.docker.io.    3600    IN    A    35.169.231.249
registry-1.docker.io.    3600    IN    A    34.205.207.96
registry-1.docker.io.    3600    IN    A    34.200.28.105
registry-1.docker.io.    3600    IN    A    52.204.202.231
registry-1.docker.io.    3600    IN    A    54.152.209.167
registry-1.docker.io.    3600    IN    A    52.22.181.254
registry-1.docker.io.    3600    IN    A    52.54.216.153

;; AUTHORITY SECTION:
docker.io.        61985    IN    NS    ns-1827.awsdns-36.co.uk.
docker.io.        61985    IN    NS    ns-1168.awsdns-18.org.
docker.io.        61985    IN    NS    ns-513.awsdns-00.net.
docker.io.        61985    IN    NS    ns-421.awsdns-52.com.

;; ADDITIONAL SECTION:
ns-421.awsdns-52.com.    148245    IN    A    205.251.193.165
ns-421.awsdns-52.com.    149402    IN    AAAA    2600:9000:5301:a500::1
ns-513.awsdns-00.net.    149549    IN    A    205.251.194.1
ns-513.awsdns-00.net.    149549    IN    AAAA    2600:9000:5302:100::1
ns-1168.awsdns-18.org.    148917    IN    A    205.251.196.144
ns-1168.awsdns-18.org.    148917    IN    AAAA    2600:9000:5304:9000::1
ns-1827.awsdns-36.co.uk. 148040    IN    A    205.251.199.35
ns-1827.awsdns-36.co.uk. 148040    IN    AAAA    2600:9000:5307:2300::1

;; Query time: 60 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: Mon Aug 20 22:36:29 2018
;; MSG SIZE  rcvd: 493

第二步:尝试修改/etc/hosts强制docker.io相关的域名解析到其它可用IP

54.164.230.151  registry-1.docker.io

保存之后重试:

➜  ~ docker search sameersbn

我们可看到,已经可以获取数据了。

三、使用docker国内镜像

使用 DaoCloud 提供的镜像

Docker For Mac

右键点击桌面顶栏的 docker 图标,选择 Preferences ,在 Daemon 标签(Docker 17.03 之前版本为 Advanced 标签)下的 Registry mirrors 列表中加入下面的镜像地址:

http://141e5461.m.daocloud.io

点击 Apply & Restart 按钮使设置生效。

Docker Toolbox 等配置方法请参考帮助文档。