Appearance
Container 镜像拉取问题排查手册
最后更新: 2026-02-07 摘要: 解决国内环境下 Docker 镜像拉取卡顿、超时或失败的常见方法汇总。
1. 现象描述
docker pull进度条长时间不动。- 提示
error pulling image configuration: download failed。 - 提示
Get "https://registry-1.docker.io/...": dial tcp ...: i/o timeout。
2. 解决方案 (按推荐顺序)
方案 A: 使用第三方镜像加速源 (当前推荐)
国内云厂商(阿里/腾讯/网易)的加速器经常失效,目前推荐使用第三方维护的代理镜像源。
常用代理源列表 (2026):
docker.1panel.live(1Panel 维护)docker.m.daocloud.io(DaoCloud)dockerproxy.comdocker.nju.edu.cn(南京大学 - 仅限部分教育网)
使用方法 1: 修改 daemon.json (全局生效) 修改 /etc/docker/daemon.json:
json
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.m.daocloud.io"
]
}重启 Docker:
bash
sudo systemctl daemon-reload
sudo systemctl restart docker使用方法 2: 修改 docker-compose.yml (推荐) 直接 stere image 字段前加上镜像源地址。这样更明确,且不受宿主机配置影响。
yaml
services:
trilium:
# 原: zadam/trilium:latest
image: docker.1panel.live/zadam/trilium:latest
nextcloud:
# 原: nextcloud:28
image: docker.1panel.live/library/nextcloud:28方案 B: 手动拉取并重命名 (临时救急)
如果不想修改配置文件,可以手动拉取后再 tag 回原名(可选)。
bash
# 1. 从代理源拉取
docker pull docker.1panel.live/zadam/trilium:latest
# 2. (可选) 重命名为官方名称
docker tag docker.1panel.live/zadam/trilium:latest zadam/trilium:latest
# 3. (可选) 删除代理名称
docker rmi docker.1panel.live/zadam/trilium:latest方案 C: 配置 HTTP 代理 (终极方案)
如果有可用的 HTTP 代理服务器,可以让 Docker 守护进程走代理。
1. 创建配置目录
bash
sudo mkdir -p /etc/systemd/system/docker.service.d2. 创建代理配置文件 编辑 /etc/systemd/system/docker.service.d/http-proxy.conf:
ini
[Service]
Environment="HTTP_PROXY=http://192.168.1.5:7890"
Environment="HTTPS_PROXY=http://192.168.1.5:7890"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"3. 重启 Docker
bash
sudo systemctl daemon-reload
sudo systemctl restart docker4. 验证
bash
sudo systemctl show --property=Environment docker3. 常见问题
- Q: 为什么阿里云加速器不行了?
- A: 由于网络管制和 Docker Hub 策略调整,官方和云厂商的公开加速器经常处于不可用状态。
- Q:
docker-compose里的image修改后,还需要改回来吗?- A: 不需要。代理源通常会同步官方镜像,长期使用也没问题。只要能拉下来就行。
