最近因为需要装模型验证工具PRISM,就下载了docker。在windows上装docker时出现了问题,就在MAC上装的。具体怎么装的可以参考:https://blog.youkuaiyun.com/qq_35119422/article/details/81357626。我是从https://download.docker.com/mac/stable/Docker.dmg上下载的稳定版的。具体的安装不是此博客的重点,因为我所讲的是出错以后怎么解决的问题,选择性忽略掉安装的过程。
1. docker镜像出错问题
1.1前提:
我的设备是MAC OS Catalina 10.15(PS:以前是Mac OS Sierra,后来因为xcode的问题,升级到了Catalina)。
1.2 问题描述:
我在安装docker之后,开始安装prism,执行命令
docker pull mseve/prism
出现了错误:Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout。
于是我执行docker ps和docker images时都没有问题。在执行docker info时面临的问题也是Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout。
1.3 解决方案
我尝试的办法有两种,一是在配置文件里改镜像;二是在Daemon里改镜像。
1.3.1在配置文件里改镜像
第一步:通过dig @114.114.114.114 registry-1.docker.io
找到可用IP
;; 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
第二步:尝试修改/etc/hosts
强制docker.io
相关的域名解析到其它可用IP
vim /etc/hosts
插入一行
54.164.230.151 registry-1.docker.io
保存之后,再多次执行命令:docker pull mseve/prism。
我的结果:执行一次docker pull mseve/prism,继续报错;执行两次,继续报错。执行三次,不报错了,但是下载速度很慢。于是我尝试了下边第二种方法
1.3.2 在Daemon里改镜像
在Mac系统的桌面Docker中安装如下操作,Prefereces => Daemon => Basic => Registry mirrors => 输入 http://141e5461.m.daocloud.io => Apply & Restart,操作结束。
然后在运行docker pull mseve/prism,结果:正常运行。
2 结论
注:此方法是在Mac系统Catalina下尝试的结果,第一种方法没有第二种方法好。Unix和Windows未尝试。