彻底解决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.2nameserver 114.114.114.114nameserver 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了,接下来迎接你的将是一路畅通!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。