You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker拉取ghcr.io镜像遇tcp connection reset by peer错误求助

解决GHCR镜像拉取时的"connection reset by peer"错误

问题概述

执行sudo docker pull ghcr.io/nokia/srlinux时触发TCP连接重置错误,docker.io等其他容器仓库可正常拉取镜像,排除代理问题。相关错误及排查输出如下:

Docker拉取错误日志

$ sudo docker pull ghcr.io/nokia/srlinux
Using default tag: latest
Error response from daemon: Get "https://ghrc.io/v2/": read tcp 10.10.213.22:53496->103.224.212.220:443: read: connection reset by peer

Curl测试输出

$ curl -v https://ghcr.io/nokia/srlinux
Trying 20.207.73.86:443...
Connected to ghcr.io (20.207.73.86) port 443 (#0)
ALPN, offering h2
ALPN, offering http/1.1
CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
TLSv1.0 (OUT), TLS header, Certificate Status (22):
TLSv1.3 (OUT), TLS handshake, Client hello (1):
OpenSSL SSL_connect: Connection reset by peer in connection to ghcr.io:443
Closing connection 0
TLSv1.0 (OUT), TLS header, Unknown (21):
TLSv1.3 (OUT), TLS alert, decode error (562):
curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to ghcr.io:443

OpenSSL测试输出

$ openssl s_client -connect ghcr.io:443
CONNECTED(00000003)
write:errno=104
no peer certificate available
No client certificate CA names sent
SSL handshake has read 0 bytes and written 309 bytes
Verification: OK
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)

解决方案

1. 更换GHCR的IP节点访问

GHCR部署在多个IP节点上,部分节点可能被网络拦截:

  • 执行nslookup ghcr.io获取所有可用IP,例如:
    nslookup ghcr.io
    Server:         8.8.8.8
    Address:        8.8.8.8#53
    
    Non-authoritative answer:
    ghcr.io	canonical name = ghcr.io.github.com.
    ghcr.io.github.com	canonical name = github.map.fastly.net.
    Name:	github.map.fastly.net
    Address: 20.207.73.86
    Name:	github.map.fastly.net
    Address: 20.207.73.119
    
  • 尝试用不同IP测试连接:
    curl -v --resolve ghcr.io:443:20.207.73.119 https://ghcr.io/nokia/srlinux
    
  • 若某个IP能正常连接,将其添加到/etc/hosts文件:
    echo "20.207.73.119 ghcr.io" | sudo tee -a /etc/hosts
    
    之后重新执行docker pull命令。

2. 强制使用兼容的TLS版本

部分环境默认TLS版本可能不被GHCR支持:

  • 尝试指定TLS 1.3连接测试:
    curl -v --tlsv1.3 https://ghcr.io/nokia/srlinux
    
  • 若测试成功,修改Docker守护进程配置:
    创建或编辑/etc/docker/daemon.json:
    {
      "tls-min-version": "TLSv1.2"
    }
    
    重启Docker服务:
    sudo systemctl restart docker
    
    再尝试拉取镜像。

3. 检查网络拦截规则

  • 临时关闭本地防火墙测试(测试后务必重新开启):
    sudo ufw disable
    
  • 联系网络管理员确认是否有安全组/防火墙规则拦截了GHCR所属的Azure IP段(如20.207.73.0/24)。

4. 验证GHCR访问权限

部分公开镜像仍需登录GHCR才能拉取:

sudo docker login ghcr.io

使用GitHub账号完成登录后,再次执行拉取命令。

5. 切换网络环境测试

尝试切换到手机热点或其他网络,排除当前网络的区域性限制问题。

内容的提问来源于stack exchange,提问作者ramasubramanians

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 06:41:32