编码代理与终端 · 收录于 2026-08-29 · 适用 1 工具 ✓ 实测验证

docker pull 报 ERROR: Get "https://registry-1.docker.io/v2/" ... connection reset by peer / 拉取镜像失败

已验证 2026-08-29docker pull 连接被重置——备份 daemon.json 后写入实测可用的 registry-mirrors 加速器并重启 docker。

快速修复

# 一键:备份原配置 + 写入当前实测可用的加速器 + 重启 docker
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak-$(date +%Y%m%d) && sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://docker.m.daocloud.io"
  ]
}
EOF
sudo service docker restart && docker pull hello-world

你会遇到什么

校园网/家宽(无代理)下 docker pull 报 ERROR: Get "https://registry-1.docker.io/v2/": ... connection reset by peer,或镜像拉不下来。你按网上老教程配加速器,结果更糟(no such host)——因为网上流传的加速器列表大部分已经死了,不能照抄。

本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。

为什么会这样

Docker Hub 官方 registry(registry-1.docker.io)对国内网络没有稳定加速,直连经常被网络层断掉(connection reset / timeout 同族)。

而加速器是第三方服务,会死会换:2026-08-29 实测 9 个常见加速器,只有 1panel.live(200)、daocloud(401)、xuanyuan(401)、1ms(401)、rat.dev(302)可用,dockerproxy.cn / sjtug / dockerpull.org / ustc 全部已死(000)。

「网上旧列表」和「配置过时镜像站」是失败的第二大来源(DNS no such host)。

实测环境:校园网无代理,Docker 29.1.3,2026-08-29。

docker pull 的下载链路是「CLI → registry-1.docker.io → 各层 blob 的 CDN 重定向」:国内出口对 registry 主域名不稳定时,连接在传输层就被重置/超时,报错跟命令无关。

镜像加速器本质是「第三方代理 registry」:它的可用性取决于运营者,会死、会换域名、会限流——所以「网上旧列表 + 配置过时镜像站」是第二类失败源(DNS no such host)。

确定性推论:先分层——curl -I https://registry-1.docker.io/v2/ 判断直连;探活加速器时 401/302 不等于死(可能是需要认证的正常响应),000 或 DNS no such host 才是真死;

配置后必须 docker info 确认 Registry Mirrors 已生效,配完不验证等于没配。

一步步来

1. 确认失败形态 — 必做

  • connection reset by peer / i/o timeout 直连 registry → 网络层被断;
  • no such host / DNS 解析失败 → 配置的加速器域名已死。

2. 写入实测可用的加速器 — 必做

sudo tee /etc/docker/daemon.json >/dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://docker.m.daocloud.io"
  ]
}
EOF

先备份原配置(上面快速修复命令已含备份)。加速器会变,配好后过段时间失效就再实测一轮(curl -o /dev/null -s -w '%{http_code}' https://镜像域名/v2/,401/200/302 算可用,000 算死)。

3. 重启并验证 — 必做

sudo service docker restart
docker pull hello-world

Download complete / Pull complete 即成功(实测:更新配置后 pull 成功,退出码 0)。

4. 拉取/解压阶段报错(docker ≥ 23.0) — 必做

有些镜像站能连但拉取解压失败,可启用 containerd 原生镜像存储:daemon.json 加 "features": { "containerd-snapshotter": true } 后重启(源自补充文章,本机未复现该分支,未实测)。

5. 长期/企业方案 — 必做

自建 registry、走 HTTP 代理拉取后离线导入;CI 用能访问 Hub 的海外构建机。

怎么确认修好了

docker pull hello-world && docker run --rm hello-world

能正常拉取并运行即成功。实测:直连 registry-1.docker.io:443 curl 12 秒 Connection timed out(exit 28);更新 daemon.json(1panel.live + daocloud)后 docker pull hello-world 成功。

其它环境的表现

环境说明
Docker Desktop (Windows)引擎配置在 ~/.docker/daemon.json(同 registry-mirrors 字段),或在 Docker Engine 设置里填 registry-mirrors(无需改 /etc/docker/daemon.json);改完 docker desktop stop 重启生效。2026-08-30 实测 4 个可用镜像(daocloud/1ms/1panel/xuanyuan)+ hello-world 拉取成功
校园网/家宽(无代理)直连必断,配实测可用的镜像加速器
公司内网可能有内部 registry,优先问运维;否则同上
VPN/代理环境下走代理仍 pull 失败:daemon 不读 shell 的 http_proxy,代理要配在 systemd drop-in 或 Docker Desktop 的 proxy 设置里才生效;该分支本机未实测(moby#48406,机制核对,与无代理直连失败互补)
老教程加速器dockerproxy.cn / sjtug / dockerpull.org / ustc 已死(实测 000),别照抄

症状

docker pull 失败的常见形态:

# 形态 1:直连 Docker Hub 被断(网络层)
Error response from daemon: Get "https://registry-1.docker.io/v2/": ... connection reset by peer
# 或:卡在 "Using default tag: latest" 无进度 / timeout

# 形态 2:配置的镜像加速器已死(DNS 层)
Error response from daemon: failed to resolve reference "docker.io/library/xxx:latest":
failed to do request: Head "https://<镜像站>/v2/...": dial tcp: lookup <镜像站> ...: no such host

同族但根因不同(别在本页死磕网络):

  • manifest for xxx not found / manifest unknown → 镜像或标签不存在,见 docker-manifest-not-found;
  • no space left on device(拉取/解压阶段)→ WSL 下常见真相是宿主盘满,见 wsl-no-space-left;
  • 拉一半断掉 / 反复 timeout:网络抖动,直接重跑 docker pull 即可——已下载的层按 digest 复用、自动跳过,不用清缓存也不用 rmi。

原因

Docker Hub 官方 registry 对国内网络没有稳定加速,直连经常被网络层断掉;而第三方加速器会死会换,网上旧列表大部分已失效(2026-08-29 实测 9 个候选,仅 5 个可用)。

解法

  1. 备份 /etc/docker/daemon.json,写入当前实测可用的加速器(如 1panel.live / daocloud)。
  2. sudo service docker restart,docker pull hello-world 验证。
  3. 拉取/解压阶段报错(docker ≥ 23.0):daemon.json 加 "features": { "containerd-snapshotter": true }(源自补充文章,未实测)。
  4. 长期/企业:自建 registry 或代理拉取后离线导入。
验证证据
  • 本地实测(2026-08-29,校园网无代理,Docker 29.1.3):
  • 直连 registry-1.docker.io:443:curl 12 秒 Connection timed out(exit 28),与文章 connection reset by peer 同族(网络层被断);
  • 原 daemon.json 里配的旧加速器(中科大 ustc):getent hosts DNS no such host——复现形态 2 的失败链(配置过时镜像站);
  • 9 个候选加速器连通性实测:1panel.live=200、daocloud=401、xuanyuan=401、1ms=401、rat.dev=302 可用;dockerproxy.cn / sjtug / dockerpull.org / ustc 全部 000 已死——证明「网上旧列表不可照抄」;
  • 更新 daemon.json(1panel.live + daocloud)→ sudo service docker restart → docker pull hello-world 成功(Download complete / Pull complete,退出码 0);
  • 原配置备份保留在 /etc/docker/daemon.json.bak-20260829。
  • 实测复现日志(2026-08-29)

相关 canonical

按「前置 → 本页 → 同根 / 变体族」读:

适用工具 (1)

本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。

docker · 外部工具

来源与证据

收录 验证 ✓ 实测验证适用 1 工具
方案含本地实测或来源可复核的解法;未实测项已在文中如实标注。

← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡