daemon.json语法错误是docker启动失败的最常见原因;需用jq校验json合法性,修正末尾逗号、单引号、注释及不可见字符,并通过备份、printf写入和重启验证确保配置安全。
配置语法错误是 daemon.json 导致 docker 启动失败的最常见原因。只要 json 格式不合法,dockerd 就会在加载阶段直接退出,不会继续启动流程。
用 jq 快速验证 JSON 语法
在修改完 daemon.json 后,不要直接重启服务,先执行校验:
-
安装 jq(如未安装):
sudo apt install -y jq(Ubuntu/Debian)或sudo yum install -y jq(CentOS/RHEL) -
运行校验命令:
jq -e . /etc/docker/daemon.json > /dev/null && echo "OK" || echo "Invalid JSON" - 返回
OK表示语法合规;若报错,jq 会明确指出哪一行、哪个字符出问题,比如parse error: Invalid numeric literal或expected ',' or '}'
高频语法陷阱与修正方式
这些错误看似微小,但 Docker 对 JSON 要求严格,不容妥协:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
-
末尾逗号(trailing comma):JSON 不允许对象或数组最后一项后加逗号,例如:
"insecure-registries": ["http://192.168.1.100:5000"],→ 应删掉末尾的, -
单引号代替双引号:JSON 规范只认双引号,
'log-driver': 'json-file'是非法的,必须写成"log-driver": "json-file" -
行内注释残留:JSON 不支持任何注释,
// enable debug或/* ... */会导致解析失败,务必全部删除 - 不可见字符污染:用 VS Code、Notepad++ 等编辑器打开文件,检查右下角是否为 UTF-8 无 BOM;避免从网页复制内容带入零宽空格或 smart quote
安全编辑与快速恢复建议
避免在生产环境反复试错,推荐以下操作习惯:
- 编辑前先备份:
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak - 用
printf写入纯净内容(绕过编辑器风险):printf '{"log-driver":"json-file","log-level":"warn"}\n' | sudo tee /etc/docker/daemon.json - 确认无误后再重启:
sudo systemctl daemon-reload && sudo systemctl restart docker - 验证是否生效:
docker info 2>/dev/null | grep -E "(Log|Insecure)"










