问题
[root@localhost ~]# docker pull nginx
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout
分析
我们使用docker命令去公共仓库拉取镜像的时候,出现这条报错,根据错误提示我们分析出:连接公共仓库的地址出现问题,由于我们使用的静态IP DNS也配置没有问题,所以可能是地址的问题。
这里提出的解决方案是换个可用地址
解决方案
首先 我们先安装一组DNS的工具包 bind-utils
bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具。主要:dig,host,nslookup,nsupdate。使用这些工具可以进行域名解析和DNS调试工作
我们使用的就是dig
dig是一个DNS查询工具.dig向DNS服务器发出请求,然后输出DNS服务器的返回结果。系统管理员可以使用dig来测试DNS服务器。dig会根据/etc/resolv.conf文件中列出的服务器,依次进行尝试。不加参数执行dig时,dig将执行一个.查询,即根查询
格式 dig [ global-queryopt... ] [ query... ]
dig @114.114.114.114 registry-1.docker.io
我们通过dig找到这个域名的其他IP
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> @114.114.114.114 registry-1.docker.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60572
;; flags: qr rd ra; QUERY: 1, ANSWER: 8, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;registry-1.docker.io. IN A
;; ANSWER SECTION:
registry-1.docker.io. 32 IN A 54.88.231.116
registry-1.docker.io. 32 IN A 34.199.77.19
registry-1.docker.io. 32 IN A 100.24.246.89
registry-1.docker.io. 32 IN A 34.201.236.93
registry-1.docker.io. 32 IN A 34.197.189.129
registry-1.docker.io. 32 IN A 54.210.105.17
registry-1.docker.io. 32 IN A 34.199.40.84
registry-1.docker.io. 32 IN A 34.201.196.144
;; Query time: 20 msec
;; SERVER: 114.114.114.114#53(114.114.114.114)
;; WHEN: 日 4月 28 17:47:49 CST 2019
;; MSG SIZE rcvd: 177
可以看到 我们得到了几个IP地址
然后在域名解析文件下挨个IP尝试
vim /etc/hosts
100.24.246.89 registry-1.docker.io
#我尝试到了这个IP才好用的
结果
[root@localhost ~]# docker pull centos:7
7: Pulling from library/centos
8ba884070f61: Pull complete
Digest: sha256:8d487d68857f5bc9595793279b33d082b03713341ddec91054382641d14db861
Status: Downloaded newer image for centos:7
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 27a188018e18 11 days ago 109MB
centos 7 9f38484d220f 6 weeks ago 202MB
解决问题!
网友评论