验证daemon.json语法正确是配置生效前提,需用jq校验(sudo apt install jq后执行cat /etc/docker/daemon.json | jq .),或手动排查引号、逗号、注释等json严格格式问题。
验证 daemon.json 语法是否正确,是配置生效前最关键的一步。json 格式极其严格,一个多余的逗号、漏掉的引号、中文标点或末尾换行符都可能导致 docker 守护进程启动失败,甚至直接退出。
用 jq 工具校验(推荐)
这是最可靠、最常用的方法:
- 先确保系统已安装
jq:Ubuntu/Debian 执行sudo apt install -y jq;CentOS/RHEL 执行sudo yum install -y jq或sudo dnf install -y jq - 运行校验命令:
sudo cat /etc/docker/daemon.json | jq . - 如果输出格式化后的 JSON 内容,说明语法合法;若报错(如
parse error、expected ',' or '}'),则按提示定位行号和列号修复
手动检查常见错误点
即使没装 jq,也可快速排查高频问题:
- 必须全英文双引号:不能用中文引号(“”)、单引号(')或直角引号(「」)
-
数组末项不加逗号:例如
"registry-mirrors": ["https://a.com", "https://b.com",]最后一个地址后的逗号是非法的 -
对象之间必须用逗号分隔:比如
"registry-mirrors": [...], "log-driver": "json-file"中,两个字段之间缺逗号就会报错 -
不能有注释:JSON 不支持
//或/* */,任何注释都会导致解析失败 -
路径和协议要完整:镜像地址必须带
https://前缀,不能写成docker.m.daocloud.io
通过 Docker 启动日志辅助判断
如果语法错误未被提前发现,重启服务时会暴露问题:
- 执行
sudo systemctl restart docker - 立即查看状态:
sudo systemctl status docker,若显示failed或active (exited),说明配置加载失败 - 进一步查错:
sudo journalctl -u docker --since "1 minute ago" | grep -i "json\|error\|failed",通常会明确指出哪一行哪个字符出错
Windows 和 macOS 的特殊注意
文件位置不同,但校验逻辑一致:
- Windows(Docker Desktop):配置文件在
C:\ProgramData\docker\config\daemon.json,需用管理员权限打开 PowerShell 校验 - macOS(Docker Desktop):实际配置由桌面应用管理,修改
~/.docker/daemon.json可能不生效;建议通过 Docker Desktop 图形界面设置镜像源,或使用 CLI 命令docker context inspect default --format '{{.Endpoints.docker.DaemonOptions}}'查看当前生效配置











