唯一稳定生效的方式是直接修改/etc/docker/daemon.json添加registry-mirrors数组并重启docker服务;需确保文件存在、json格式合法、镜像地址有效且为https协议,最后执行sudo systemctl restart docker验证。

直接改 /etc/docker/daemon.json,加 registry-mirrors 数组,然后重启 docker 服务——这是唯一稳定、生效、可复现的方式。其他临时命令或 GUI 操作只适合验证,不能替代配置文件。
daemon.json 文件必须存在且格式严格
Linux 上 Docker 不会自动创建 /etc/docker/daemon.json,如果文件不存在,Docker 启动时会忽略镜像源配置,也不报错,导致“明明写了却没加速”。
常见错误现象:
- 执行
docker info | grep -A 1 "Registry Mirrors"输出为空 - 拉取镜像仍显示
registry-1.docker.io地址,速度无变化
正确做法:
- 先确保目录存在:
sudo mkdir -p /etc/docker - 用
sudo tee /etc/docker/daemon.json写入,避免权限问题 - JSON 必须合法:末尾不能有多余逗号,URL 不能以
/结尾,字符串必须双引号包裹 - 推荐用 https://www.php.cn/link/eca3738a60ea31de49a6ce118e914765 校验内容
registry-mirrors 数组里填什么地址
不是所有“国内镜像站”都同步 Docker Hub 全量镜像,有些已停更(如网易 hub-mirror.c.163.com),有些仅限特定用户(如阿里云地址需登录后获取专属链接)。
2026 年 4 月实测仍可用的公开地址(无需注册):
-
https://docker.xuanyuan.me(轩辕镜像,专线稳定) -
https://docker.1ms.run(毫秒镜像,低延迟) -
https://mirror.ccs.tencentyun.com(腾讯云,全量同步) -
https://docker.m.daocloud.io(DaoCloud 新源,替代旧版)
建议填 2–3 个,Docker 会按顺序尝试,第一个不可用时自动 fallback:
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.1ms.run",
"https://mirror.ccs.tencentyun.com"
]
}
改完必须重启 docker 服务,且 reload 不够
sudo systemctl daemon-reload 只重载 unit 文件,对 daemon.json 无效。Docker 守护进程在启动时才读取该文件,运行中修改不生效。
必须执行:
-
sudo systemctl restart docker(最稳妥) - 或
sudo pkill dockerd && sudo dockerd(调试时手动启停,但生产环境慎用)
验证是否生效:
-
sudo docker info | grep -A 1 "Registry Mirrors"应输出你配置的地址 -
sudo journalctl -u docker --since "1 minute ago" | grep mirror可看到加载日志
CentOS/RHEL 系统额外注意 overlay2 和内核兼容性
即使 daemon.json 正确、服务重启成功,某些 CentOS 7.9 或 Rocky Linux 8 环境仍可能 fallback 到 devicemapper 存储驱动,导致镜像拉取失败或卡在 “Waiting” 状态。
检查当前驱动:
-
sudo docker info | grep "Storage Driver"—— 应为overlay2 - 若为
devicemapper,需确认内核支持:lsmod | grep overlay有输出才安全
若不支持,registry-mirrors 配置虽生效,但部分镜像层下载会静默失败,表现为:
-
docker pull nginx卡在Downloading且无进度 -
docker images查不到刚拉的镜像
此时应升级内核或切换到 overlay2 支持的系统版本,而非反复调镜像源。










