# Docker 镜像拉取失败:一键修复指南 ## 🚀 快速诊断(先执行这个) ```bash bash << 'EOF' echo "========== Docker 诊断报告 ==========" echo "" echo ">>> 1. 检查 Docker 是否运行" systemctl is-active docker &>/dev/null && echo "✓ Docker 运行中" || echo "✗ Docker 未运行" echo "" echo ">>> 2. 当前镜像加速器配置" docker info 2>/dev/null | grep -A 10 "Registry Mirrors" || echo "未配置或 Docker 未启动" echo "" echo ">>> 3. 测试 DNS 解析" nslookup docker.mirrors.ustc.edu.cn >/dev/null 2>&1 && echo "✓ 中科大镜像 DNS 正常" || echo "✗ DNS 解析失败" echo "" echo ">>> 4. 测试网络连通性 (10秒超时)" curl -m 10 -s -o /dev/null -w "%{http_code}" https://docker.mirrors.ustc.edu.cn/v2/ | grep -q "200\|401" && echo "✓ 中科大镜像可连接" || echo "✗ 连接超时或失败" echo "" echo ">>> 5. 网卡 MTU 设置" ip link show | grep mtu | head -3 echo "" echo ">>> 6. 当前 daemon.json 内容" cat /etc/docker/daemon.json 2>/dev/null || echo "文件不存在" echo "" echo "========== 诊断结束 ==========" EOF方案一:自动配置阿里云加速器(推荐)
⚠️ 需要先获取你的专属地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
# 运行后按提示输入你的阿里云加速器地址 bash << 'EOF' read -p "请输入阿里云加速器地址 (如 https://12345.mirror.aliyuncs.com): " ALIYUN_MIRROR if [[ ! $ALIYUN_MIRROR =~ ^https://.*\.mirror\.aliyuncs\.com$ ]]; then echo "❌ 地址格式错误,应为 https://xxx.mirror.aliyuncs.com" exit 1 fi sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json > /dev/null <<CONFIG { "ipv6": false, "registry-mirrors": [ "${ALIYUN_MIRROR}", "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } CONFIG echo "✓ 配置已写入" sudo systemctl daemon-reload && sudo systemctl restart docker echo "✓ Docker 已重启" echo "" echo "验证配置:" docker info | grep -A 5 "Registry Mirrors" EOF方案二:免配置直接拉取(最快绕过)
如果方案一配置后仍失败,直接复制以下命令,无需任何修改:
# DaoCloud 镜像(国内速度快,推荐) docker pull m.daocloud.io/docker.io/minio/minio:RELEASE.2023-09-30T07-02-29Z && \ docker tag m.daocloud.io/docker.io/minio/minio:RELEASE.2023-09-30T07-02-29Z minio/minio:RELEASE.2023-09-30T07-02-29Z && \ docker rmi m.daocloud.io/docker.io/minio/minio:RELEASE.2023-09-30T07-02-29Z && \ echo "✓ 拉取成功,已重命名为 minio/minio:RELEASE.2023-09-30T07-02-29Z"bash
复制
# 华为云镜像(备选) docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/minio/minio:RELEASE.2023-09-30T07-02-29Z && \ docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/minio/minio:RELEASE.2023-09-30T07-02-29Z minio/minio:RELEASE.2023-09-30T07-02-29Z && \ docker rmi swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/minio/minio:RELEASE.2023-09-30T07-02-29Z && \ echo "✓ 拉取成功,已重命名为 minio/minio:RELEASE.2023-09-30T07-02-29Z"方案三:修复 MTU 问题(云服务器必试)
腾讯云、阿里云、华为云常见故障,一键自动修复:
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF' { "mtu": 1450, "ipv6": false, "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] } EOF sudo systemctl daemon-reload && sudo systemctl restart docker && echo "✓ MTU 已设置为 1450,Docker 已重启"方案四:修复 DNS 问题
# 自动更换为阿里云 DNS sudo tee /etc/resolv.conf > /dev/null <<'EOF' nameserver 223.5.5.5 nameserver 223.6.6.6 nameserver 8.8.8.8 EOF echo "✓ DNS 已更换,建议同时检查 /etc/systemd/resolved.conf 防止被覆盖"方案五:离线下载(100%成功)
在能上网的机器执行:
bash
复制
docker pull minio/minio:RELEASE.2023-09-30T07-02-29Z && \ docker save minio/minio:RELEASE.2023-09-30T07-02-29Z | gzip > minio.tar.gz && \ ls -lh minio.tar.gz && \ echo "✓ 导出完成,文件大小如上,请下载到目标服务器"在目标服务器执行:
# 上传 minio.tar.gz 后执行: gunzip -c minio.tar.gz | docker load && \ docker images | grep minio && \ echo "✓ 镜像导入成功"批量导出多个镜像(离线场景)
在能上网的机器执行:
bash << 'EOF' IMAGES=( "minio/minio:RELEASE.2023-09-30T07-02-29Z" "nginx:alpine" "redis:7-alpine" "mysql:8.0" ) for img in "${IMAGES[@]}"; do echo ">>> 正在处理: $img" docker pull $img # 生成文件名:将 / 和 : 替换为 _ filename=$(echo "$img" | tr '/:' '_') docker save "$img" | gzip > "${filename}.tar.gz" echo "✓ 已保存: ${filename}.tar.gz ($(du -h ${filename}.tar.gz | cut -f1))" echo "" done echo "所有镜像导出完成,文件列表:" ls -lh *.tar.gz EOF在目标服务器批量导入:
# 上传所有 .tar.gz 文件后执行: for f in *.tar.gz; do echo ">>> 导入: $f" gunzip -c "$f" | docker load done docker images一键清理和重置(最后手段)
如果配置混乱,一键恢复到默认状态:
sudo systemctl stop docker && \ sudo rm -f /etc/docker/daemon.json && \ sudo systemctl start docker && \ echo "✓ Docker 已重置为默认配置"流程图
复制
拉取失败? │ ▼ 执行【快速诊断脚本】 │ ├─► Docker 未运行? → systemctl start docker │ ├─► 无镜像配置? → 执行【方案一】配置阿里云 │ ├─► 有配置但仍失败? → 执行【方案二】直接下载 │ ├─► 云服务器? → 执行【方案三】修改 MTU │ ├─► DNS 解析失败? → 执行【方案四】修复 DNS │ └─► 全部无效? → 执行【方案五】离线下载 ◄── 100%成功