daemon.json必须存在且格式合法,否则Docker静默忽略镜像加速配置;需用sudo tee创建、在线校验JSON、填入2–3个2026年实测有效的地址(如https://docker.xuanyuan.me),并重启docker服务验证。

daemon.json 不存在或格式非法,加速直接失效
Docker 启动时如果发现 /etc/docker/daemon.json 不存在、权限不对、JSON 格式错误(比如末尾多逗号、URL 少双引号、用单引号包裹、URL 以 / 结尾),它会静默跳过整个配置,不报错也不提示——你改了等于没改。
必须确保:
-
sudo mkdir -p /etc/docker先建目录,避免因路径不存在导致写入失败 - 用
sudo tee /etc/docker/daemon.json写入,避开 vim 编辑权限问题 - 内容严格为合法 JSON:字符串全用双引号,数组用方括号,末尾不能有逗号,
https://协议不能省略 - 写完立刻用在线校验器(如 https://www.php.cn/link/d64586aec81f3bd874e98fa5e8b0b5e4)验证
registry-mirrors 数组填什么地址才真正有效
不是所有标着“国内镜像”的 URL 都能用。网易 hub-mirror.c.163.com 已停更;阿里云地址必须带专属 ID(形如 https://xxx.mirror.aliyuncs.com),填错或漏 ID 直接 404;腾讯源 mirror.ccs.tencentyun.com 在云外访问不稳定。
2026 年 7 月实测仍公开可用、无需注册、全量同步的地址:
-
https://docker.xuanyuan.me(轩辕镜像,专线稳定) -
https://docker.1ms.run(毫秒镜像,低延迟) -
https://docker.m.daocloud.io(DaoCloud 新源,替代旧版)
建议填 2–3 个,Docker 按顺序尝试,太多反而拖慢首次拉取。
改完配置不重启 docker,一切白做
sudo systemctl daemon-reload 对 daemon.json 完全无效——它只重载 systemd unit 文件,不触发 dockerd 重新读取配置。
必须执行:
-
sudo systemctl restart docker(生产环境唯一推荐方式) - 调试时可临时用
sudo pkill dockerd && sudo dockerd,但别在正式环境这么干
Docker 只在启动时加载 daemon.json,运行中修改完全不生效。
验证是否真生效,别信“看起来成功了”
执行 sudo docker info | grep -A 1 "Registry Mirrors",输出为空?说明配置根本没被读到。
进一步确认:
- 看日志:
sudo journalctl -u docker --since "1 minute ago" | grep mirror,应出现类似Loaded registry mirrors: [https://docker.xuanyuan.me] - 拉镜像时观察域名:
docker pull nginx过程中用tcpdump -i any port 443 -w /tmp/pull.pcap抓包,确认请求发往你配的镜像地址,而非registry-1.docker.io
最常被忽略的点:配置文件存在、格式合法、地址可用、服务重启、日志确认——四个环节缺一不可,少一个就卡在“以为配好了”。


















