最直接有效的方式是用 jq 工具验证 daemon.json 语法,执行 sudo jq . /etc/docker/daemon.json;若输出美化 JSON 则合法,否则报错提示具体行列及错误类型,如控制字符未转义、缺少逗号或使用中文引号等。
最直接有效的方式是用 jq 工具验证语法。它能立刻指出错误位置和类型,比手动排查快得多。
用 jq 检查 daemon.json 是否合法
在终端执行:
sudo jq . /etc/docker/daemon.json如果输出美化后的 JSON 内容,说明语法正确;如果报错,会明确提示哪一行、哪个字符出问题,例如:
- parse error: Invalid string: control characters from U+0000 through U+001F must be escaped → 字符串里混入了不可见控制符(比如从网页复制时带的隐藏符号)
- parse error: Expected separator between values at line 3, column 15 → 第 3 行第 15 列附近少了逗号或多了逗号
- parse error: Invalid literal at line 1, column 2 → 开头就不是合法 JSON(比如用了中文引号、开头是注释)
没装 jq?先安装再验证
Debian/Ubuntu 系统:
sudo apt-get install -y jqCentOS/RHEL/Rocky 系统:
sudo yum install -y jq或者用更轻量的替代方式(不依赖 jq):
效果类似,也能报错定位,但提示信息不如 jq 清晰。
常见错误一眼识别法
不用工具也能快速扫一遍:
- 所有键名和字符串值必须用英文双引号 "",不能用单引号或中文引号
- 数组最后一个元素后面不能有逗号(JSON 不允许 trailing comma)
- 花括号 {} 和方括号 [] 必须成对出现、嵌套正确
- 不能有注释(// 或 /* */),JSON 标准不支持
验证通过后别忘了重启服务
jq 没报错只是第一步,还需让 Docker 重新加载配置:
sudo systemctl daemon-reload && sudo systemctl restart docker重启失败?再运行一次 sudo jq . /etc/docker/daemon.json —— 很可能刚保存时又引入了新错误。


















