彻底解决docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled 报错
L3238107011 2024-10-16 16:07:01 阅读 65
报错
1. docker: 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).
See 'docker run --help'.
2.Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp ip: connect: connection refused
吐槽一下:我这是在配置超级账本(hyperledger fabric)的时候出现的错误,我配置了大概5次吧,每次都是配置一上午的时间,所以总的来算花了大概整整3天的时间配置好的,其实每次都是这个问题出错,我没有解决,从网上查找方法根本就解决不了好吧,我不知道那些个大佬们是怎么解决的,反正我是看来好多的文章都是解决不了的,最后经过经历过相同问题的大佬指点,终于配好了
网上普遍的方法:
1换源:
1.修改<code>/etc/docker/daemon.json文件
vi /etc/docker/daemon.json
2.导入镜像:(无论用上阿里云还是清华的镜像源都仍然ERROR)
{
"registry-mirrors": [
"https://0dj0t5fb.mirror.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn",
"https://6kx4zyno.mirror.aliyuncs.com",
"https://registry.docker-cn.com"
]
}
3.重启:
systemctl daemon-reload
systemctl restart docker
2. 修改DNS服务配置
1.如果DNS服务器出现问题,也可能导致拉取镜像报错。可以通过查看/etc/resolv.conf文件来检查DNS服务器设置:
cat /etc/resolv.conf
2.如果显示nameserver后面没有IP地址,或者显示的IP地址有问题,可以尝试修改该文件。例如,可以将nameserver 192.168.100.2注释掉,新增nameserver 114.114.114.114和nameserver 8.8.8.8:
#nameserver 192.168.100.2
nameserver 114.114.114.114
nameserver 8.8.8.8
3.还有一个手动拉取的:(仍然是报错)
docker pull 仓库名/镜像名:版本号
docker pull docker.mirrors.ustc.edu.cn/library/mysql
最后真的是折磨的受不了了,之前安装都是看的文章,突发奇想看看B站上有没有手把手教学的,你别说,这个人的还真挺好:
【从0开始快速安装Hyperledger Fabric】 https://www.bilibili.com/video/BV1g3411h71Z/?share_source=copy_web&vd_source=091687f403c0c0bd4d4e4c69de304943
但是还是不出意外,都是到./network.sh up报错,我真服了
原因:
其实上面的报错不是因为hyperledger fabric难装,而是从一开始docker就没配好,教程都只是讲解安装docker,在ubuntu上一般docker都会给一个代理,不然连不上网,也就导致一些文件下载不下来,毕竟这是人家国外的,这种问题真的是配环境的一大痛点。难绷了家人
解决方法:给docker配置一个代理:
说明一下:仅限于有自己的服务器,可以去阿里上买一个,或者可以科学上网
1. 在 /etc/systemd/system
目录下创建 docker.service.d
目录
sudo mkdir -p /etc/systemd/system/docker.service.d
2. 在该目录下创建 http-proxy.conf
文件
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
3. 选用你最喜欢的编辑器,编辑该文件并添加下面的内容,这里使用 vi/vim
进行编辑。
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
4.根据自身需要添加下面的内容并替换为实际的配置,一般只需要加 HTTP_PROXY
和 HTTPS_PROXY
:
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
【注】<code>HTTP_PROXY 用于代理访问 http
请求,HTTPS_PROXY
用于代理访问 https
请求,如果想某个 IP
或域名
不走代理则配置到 NO_PROXY
中。
5. 这里就需要打开你的clash for windows了:
1.在General,端口号一般都是7890,也可以自己修改
2.这里把Allow LAN打开,鼠标放上会显示你的IP地址,我这里有两个是虚拟机网卡,因为是笔记本所以这里的WLAN2是无线网卡,第一个是本地连接IP,我刚开始使用的是本地连接但是不行,所以使用WLAN2代理,最笨的方法:每个都试一遍
3.然后把TUN MODE打开,System Proxy打开,最后把Start with woindows打开,将配置文件内容的IP和port换成自己的即可,保存配置文件
6.刷新更改并重新启动 <code>Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
恭喜,Docker Daemon
代理配置完成!这就可以运行./network.sh up了,接下来迎接你的将是一路畅通!
上一篇: linux 上conda环境迁移时找不到python解释器
下一篇: 【Linux】————进程控制
本文标签
彻底解决docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled 报错
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。