项目场景:
我希望配置/etc/docker/daemon.json
来对docker的拉取源进行设置
问题描述
原有的格式没有加逗号
{
"registry-mirrors": [
"https://pee6w651.mirror.aliyuncs.com",
"https://0dj0t5fb.mirror.aliyuncs.com",
"https://6kx4zyno.mirror.aliyuncs.com"
]
"dns": ["8.8.8.8", "8.8.4.4"]
}
解决方案:
需要按照格式来写,加上逗号
{
"registry-mirrors": [
"https://pee6w651.mirror.aliyuncs.com",
"https://0dj0t5fb.mirror.aliyuncs.com",
"https://6kx4zyno.mirror.aliyuncs.com"
],
"dns": ["8.8.8.8", "8.8.4.4"]
}
最后不要忘记重启docker
sudo systemctl restart docker
贴士
可以使用 jq 工具来验证 JSON 格式
cat /etc/docker/daemon.json | jq .
JSON常识
在书写和使用JSON时,遵循以下规范能够提高其可读性、维护性和兼容性:
1. 基本格式
- JSON对象必须包含在花括号
{}
中。 - JSON数组必须包含在方括号
[]
中。 - 键值对的键和值用冒号
:
分隔。 - 键名必须用双引号括起来,例如
"key"
。 - 值可以是字符串、数字、布尔值、数组、对象或
null
。
2. 编码规范
- 字符编码必须是 UTF-8。
- 避免在JSON中直接使用特殊字符,使用Unicode转义表示(如
\uXXXX
)。
3. 空白和格式化
- 使用2个或4个空格缩进(不要使用Tab)。
- 每个键值对占一行,便于阅读。
- 在数组中,每个元素建议占一行,特别是数组元素为对象时。
4. 键的规范
- 键名应使用小写字母,并且用驼峰命名法或下划线分隔。例如:
- 驼峰:
"firstName"
- 下划线:
"first_name"
- 驼峰:
- 键名应尽量简洁但具有描述性。
5. 值的规范
- 字符串值必须用双引号括起来。
- 数字值不需要引号,可以是整数或浮点数。
- 布尔值只能为
true
或false
。 - 避免使用未定义或自定义数据类型,只使用以下值类型:
- 字符串(
"string"
) - 数字(
123
或123.45
) - 布尔值(
true
/false
) - 数组(
[]
) - 对象(
{}
) - 空值(
null
)
- 字符串(
6. 注释
- JSON不支持注释,避免在JSON中直接添加注释。
- 若需要记录说明,可在文件外部文档或使用特殊键(如
_comment
)记录说明,但不推荐。
7. 逗号
- 最后一个元素后不允许有多余的逗号。例如:
{ "name": "John", "age": 30 }
8. 示例格式
{
"user": {
"id": 12345,
"name": "Alice",
"email": "alice@example.com",
"isActive": true,
"roles": ["admin", "editor"],
"profile": {
"age": 30,
"city": "New York"
}
}
}
9. 校验工具
- 在生产环境使用前,始终验证JSON格式的正确性。推荐工具:
- JSONLint
- IDE中的JSON插件或扩展。
10. 国际化和可扩展性
- 如果涉及多语言或版本控制,设计键名时考虑国际化(i18n)或未来扩展,例如添加语言代码前缀或版本号。