Error response from daemon: Get https://registry-1.docker.io/v2/: read tcp

7,666 阅读2分钟

docker build -t 构建项目报错

1、排查问题

(1、一开始以为是代理问题:

read tcp 127.0.0.1:38860->127.0.0.1:7890: read: connection reset by peer.
分析问题:首先看到连接中断,这一步大概就是网络问题,连接被重置,导致访问不到资源
再看前面的报错信息:读取tcp的时候走了7890这个代理,我先查了docker的信息

image.png
显然docker中是存在代理的,那么就要查看代理在哪个地方
vi ~/.docker/config.json 这是全局代理,打开看看

image.png
显然这里做了全局代理。
很简单,把代码注释了,再进行重启docker,这时候我还期待了下,很明显我没意识到真正的问题在哪。
继续打包,依然还是这个问题。

(2、还是认为代理问题:

感觉全局代理没有生效,查看docker信息还是出现代理信息。 那就接着查还有哪些地方和代理由关系。
vi /lib/systemd/system/docker.service
查到这里
[Service] Environment="HTTP_PROXY=http://192.168.3.122:8016" Environment="HTTPS_PROXY=http://192.168.3.122:8016" Environment="NO_PROXY=0.0.0.0/8,10.0.0.0/8,100.64.0.0/10,127.0.0.0/8,169.254.0.0/16,172.16.0.0/12,192.0.0.0/24,192.0.2.0/24,192.88.99.0/24,192.168.0.0/16,198.18.0.0/15,198.51.100.0/24,203.0.113.0/24,224.0.0.0/4,233.252.0.0/24,240.0.0.0/4,255.255.255.255/32,localhost,.aliyuncs.com,docker.xiaoshuogeng.com:5000"
我的配置类里面并没有这些东西,所以直接就排除了。

(3、认为是访问的问题,也有可能和代理无关:

Get https://registry-1.docker.io/v2/
这个有点眼熟,docker信息中有打印,是一个注册用的地址
接下来找到哪里配置这个信息:vim /etc/docker/daemon.json
打开里面什么都没有,查看了下这里是配置docker拉取镜像信息的,也就是可能重复拉取时,默认的docker拉取不到了

2、解决问题

找到了问题,那就开始解决,看看这里面都可以配置哪些地址
看到别人这么配置:

    "registry-mirrors": ["http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.mirrors.ustc.edu.cn"
        ]
} 

那么继续重启docker。
这次成功启动!

3、总结

出现这次的问题是Dockerfile配置使用pnpm去build
最后打包成功但是启动docker还是报错pnpm找不到
没有再往下深入了,这次使用npm打包。