元数据
| id | docker-hub-pull-fail | 收录 | 2026-08-29 |
|---|---|---|---|
| 问题域 | 编码代理与终端 | 主题分组 | 网络与镜像 |
| 适用工具 | docker · 外部工具 | ||
症状
`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](docker-manifest-not-found.html);
- `no space left on device`(拉取/解压阶段)→ WSL 下常见真相是宿主盘满,见 [wsl-no-space-left](wsl-no-space-left.html);
- 拉一半断掉 / 反复 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)
来源与证据
素材来源:本站实测沉淀(2026-08-29)
验证证据:Evidence details kept locally (2026-08-29)