告别龟速下载的折磨!Docker 换源终极攻略来了
155.5 亿市场:华为 12.1 亿、奇安信 7.9 亿、深信服 5.4 亿、启明星辰 5.4 亿、H3C 5 亿。我用 LazyLLM 做了一个打工人述职 Agent,朋友直呼打工人的福利,太完美了!彻底解决Docker镜像下载慢的问题。现在,告别Docker镜像下载慢的痛苦,享受飞速的开发体验吧!
戳下方名片,关注并星标!
回复“1024”获取2TB学习资源!
👉体系化学习:运维工程师打怪升级进阶之路 4.0
— 特色专栏 —
大家好,我是民工哥!
Docker 换源终极攻略!彻底解决Docker镜像下载慢的问题。

前言
你是否遇到过这样的场景:
$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
...
# 然后就是漫长的等待,网速慢得让人怀疑人生 😭
作为一名开发者,最痛苦的事情莫过于等待Docker镜像下载。特别是在国内网络环境下,从Docker Hub拉取镜像简直是一种折磨。
🎯 为什么需要换源?
网络环境限制
-
海外服务器访问慢:Docker Hub服务器在海外,国内访问速度受限
-
网络波动影响:经常出现连接超时、下载中断的情况
-
带宽资源浪费:重复下载失败的镜像层,浪费时间和流量
换源带来的好处
-
⚡ 下载速度提升10-50倍
-
🛡️ 连接稳定性大幅改善
-
💰 节省带宽和时间成本
-
🎯 提高开发效率
🖥️ 多平台配置指南
🐧 Linux系统配置
方法一:修改daemon.json文件(推荐)
创建或编辑配置文件
# 创建Docker配置目录(如果不存在)
sudo mkdir -p /etc/docker
# 编辑daemon.json文件
sudo vim /etc/docker/daemon.json
添加镜像源配置
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
重启Docker服务
# 重新加载配置
sudo systemctl daemon-reload
# 重启Docker服务
sudo systemctl restart docker
# 检查服务状态
sudo systemctl status docker
方法二:临时设置(适用于测试)
# 临时设置镜像源
docker --registry-mirror=https://registry.cn-hangzhou.aliyuncs.com pull nginx
🍎 macOS系统配置
Docker Desktop图形界面配置
-
打开Docker Desktop
-
进入设置:点击Docker图标 → Preferences
-
选择Docker Engine:在左侧菜单中选择"Docker Engine"
-
编辑配置:在JSON配置中添加:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
]
}
应用并重启:点击"Apply & Restart"
命令行配置方式
# 创建配置目录
mkdir -p ~/.docker
# 创建daemon.json文件
cat > ~/.docker/daemon.json << EOF
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
]
}
EOF
# 重启Docker Desktop
Windows系统配置
Docker Desktop配置
-
打开Docker Desktop
-
右键系统托盘图标:选择"Settings"
-
进入Docker Engine:在左侧选择"Docker Engine"
-
修改JSON配置:
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
],
"insecure-registries": [],
"debug": false,
"experimental": false
}
应用设置:点击"Apply & Restart"
PowerShell命令行配置
# 创建配置目录
New-Item -Path "$env:USERPROFILE\.docker" -ItemType Directory -Force
# 创建配置文件
@'
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
]
}
'@ | Out-File -FilePath "$env:USERPROFILE\.docker\daemon.json" -Encoding UTF8
✅ 验证配置是否生效
检查Docker信息
# 查看Docker系统信息
docker info
# 查找Registry Mirrors部分
docker info | grep -A 10 "Registry Mirrors"
期望输出:
Registry Mirrors:
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
测试镜像拉取速度
# 删除本地镜像(如果存在)
docker rmi nginx:latest
# 测试拉取速度
time docker pull nginx:latest
对比测试脚本
#!/bin/bash
# 创建测试脚本 test_docker_speed.sh
echo"=== Docker镜像拉取速度测试 ==="
# 测试镜像列表
images=("nginx:latest""redis:latest""mysql:8.0")
for image in"${images[@]}"; do
echo"\n测试镜像: $image"
docker rmi $image 2>/dev/null
echo"开始拉取..."
start_time=$(date +%s)
docker pull $image
end_time=$(date +%s)
duration=$((end_time - start_time))
echo"拉取完成,耗时: ${duration}秒"
done
🔧 高级配置技巧
配置文件详解
{
// 镜像源配置(核心)
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
],
// 不安全的镜像仓库(HTTP协议)
"insecure-registries": [
"192.168.1.100:5000"
],
// 日志配置
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
// 存储驱动配置
"storage-driver": "overlay2",
// DNS配置
"dns": ["8.8.8.8", "114.114.114.114"],
// 实验性功能
"experimental": false,
// 调试模式
"debug": false
}
多镜像源负载均衡
Docker会按照配置顺序尝试镜像源,如果第一个失败会自动尝试下一个:
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
]
}
企业内网配置
{
"registry-mirrors": [
"http://harbor.company.com", // 企业内部Harbor
"https://registry.cn-hangzhou.aliyuncs.com"
],
"insecure-registries": [
"harbor.company.com"
],
"proxies": {
"default": {
"httpProxy": "http://proxy.company.com:8080",
"httpsProxy": "http://proxy.company.com:8080",
"noProxy": "localhost,127.0.0.1,harbor.company.com"
}
}
}
🚨 常见问题与解决方案
问题1:配置后仍然很慢
可能原因:
-
配置文件格式错误
-
Docker服务未重启
-
镜像源本身有问题
解决方案:
# 1. 检查配置文件语法
sudo docker info 2>&1 | grep -i error
# 2. 验证JSON格式
cat /etc/docker/daemon.json | python -m json.tool
# 3. 重启Docker服务
sudo systemctl restart docker
# 4. 测试不同镜像源
curl -I https://registry.cn-hangzhou.aliyuncs.com/v2/
问题2:权限被拒绝
错误信息:
permission denied while trying to connect to the Docker daemon socket
解决方案:
# 将用户添加到docker组
sudo usermod -aG docker $USER
# 重新登录或执行
newgrp docker
# 或者使用sudo
sudo docker pull nginx
问题3:配置文件不生效
检查步骤:
# 1. 确认配置文件位置
ls -la /etc/docker/daemon.json
# 2. 检查文件权限
sudo chmod 644 /etc/docker/daemon.json
# 3. 验证JSON格式
sudo cat /etc/docker/daemon.json | jq .
# 4. 查看Docker日志
sudo journalctl -u docker.service --no-pager
问题4:镜像源连接失败
诊断命令:
# 测试网络连通性
ping registry.cn-hangzhou.aliyuncs.com
# 测试HTTPS连接
curl -v https://registry.cn-hangzhou.aliyuncs.com/v2/
# 检查DNS解析
nslookup registry.cn-hangzhou.aliyuncs.com
🎯 最佳实践建议
镜像源选择策略
-
个人开发:推荐阿里云或腾讯云
-
企业环境:建议搭建私有Harbor仓库
-
教育网络:优先选择中科大或清华镜像
-
海外服务器:可以直接使用Docker Hub
配置管理
# 创建配置备份
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup
# 使用版本控制管理配置
git init /etc/docker
git add daemon.json
git commit -m "Initial Docker daemon configuration"
监控和维护
# 定期检查镜像源状态
#!/bin/bash
mirrors=(
"https://registry.cn-hangzhou.aliyuncs.com"
"https://mirror.ccs.tencentyun.com"
"https://hub-mirror.c.163.com"
)
for mirror in "${mirrors[@]}"; do
echo "Testing $mirror"
curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" "$mirror/v2/"
done
🔮 进阶技巧
自动化配置脚本
#!/bin/bash
# docker_mirror_setup.sh - Docker镜像源自动配置脚本
set -e
echo"🚀 Docker镜像源自动配置脚本"
echo"================================"
# 检查Docker是否安装
if ! command -v docker &> /dev/null; then
echo"❌ Docker未安装,请先安装Docker"
exit 1
fi
# 备份现有配置
if [ -f "/etc/docker/daemon.json" ]; then
echo"📋 备份现有配置..."
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.backup.$(date +%Y%m%d_%H%M%S)
fi
# 创建配置目录
sudo mkdir -p /etc/docker
# 写入新配置
echo"⚙️ 配置镜像源..."
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://s4uv0fem.mirror.aliyuncs.com",
"https://docker.1ms.run",
"https://registry.dockermirror.com",
"https://docker.m.daocloud.io",
"https://docker.kubesre.xyz",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.1panel.live",
"https://docker.kejilion.pro",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://hub.littlediary.cn",
"https://proxy.1panel.live",
"https://docker.1panelproxy.com",
"https://image.cloudlayer.icu",
"https://docker.1panel.top",
"https://docker.anye.in",
"https://docker-0.unsee.tech",
"https://hub.rat.dev",
"https://hub3.nat.tf",
"https://docker.1ms.run",
"https://func.ink",
"https://a.ussh.net",
"https://docker.hlmirror.com",
"https://lispy.org",
"https://docker.yomansunter.com",
"https://docker.xuanyuan.me",
"https://docker.mybacc.com",
"https://dytt.online",
"https://docker.xiaogenban1993.com",
"https://dockerpull.cn",
"https://docker.zhai.cm",
"https://dockerhub.websoft9.com",
"https://dockerpull.pw",
"https://docker-mirror.aigc2d.com",
"https://docker.sunzishaokao.com",
"https://docker.melikeme.cn"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
# 重启Docker服务
echo"🔄 重启Docker服务..."
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置
echo"✅ 验证配置..."
if docker info | grep -q "Registry Mirrors"; then
echo"🎉 配置成功!镜像源已生效"
docker info | grep -A 5 "Registry Mirrors"
else
echo"❌ 配置失败,请检查配置文件"
exit 1
fi
echo"\n🚀 配置完成!现在可以享受飞速的镜像下载了!"
Docker Compose项目配置
# docker-compose.yml
version:'3.8'
services:
web:
image:nginx:latest
ports:
-"80:80"
# 使用镜像源后,这个镜像下载会很快
db:
image:mysql:8.0
environment:
MYSQL_ROOT_PASSWORD:password
# 大镜像也能快速下载
现在,告别Docker镜像下载慢的痛苦,享受飞速的开发体验吧!🚀
链接:https://blog.csdn.net/auok_coder/art
icle/details/151195117
👍 既然都看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~
公众号读者专属技术群
构建高质量的技术交流社群,欢迎从事后端开发、运维技术进群(备注岗位,已在技术交流群的请勿重复添加微信好友)。主要以技术交流、内推、行业探讨为主,请文明发言。广告人士勿入,切勿轻信私聊,防止被骗。
扫码加我好友,拉你进群


请卸载 Xshell,一款国产的终端工具功能强大,支持 Win、Mac、Linux,安全免费
再见 Ingress!Kubernetes 流量管理新利器来了!
155.5 亿市场:华为 12.1 亿、奇安信 7.9 亿、深信服 5.4 亿、启明星辰 5.4 亿、H3C 5 亿
Nginx 502 Bad Gateway:从 upstream 日志到 FastCGI 超时复盘
从零开始构建强大 AI 对话系统:ollama + deepseek + open-webui 部署教程
我用 LazyLLM 做了一个打工人述职 Agent,朋友直呼打工人的福利,太完美了!

PS:因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。点“在看”支持我们吧!
更多推荐
所有评论(0)