深入解析 Docker 配置文件:/etc/docker/daemon.json
在 Docker 的生态系统中,守护进程(Docker Daemon)的配置直接影响容器的运行效率、安全性和功能扩展。/etc/docker/daemon.json文件作为 Docker 守护进程的核心配置文件,允许用户自定义各种高级参数。
一、文件概述
文件位置:/etc/docker/daemon.json(默认不存在时需手动创建)
作用:定义 Docker 守护进程的启动参数和全局行为
格式要求:严格遵循 JSON 格式,注意逗号和括号的闭合
生效方式:修改后需重启 Docker 服务(systemctl restart docker)
二、核心配置项详解
1. 基础配置
{
"debug": true, // 启用调试模式(生产环境慎用)
"log-level": "info", // 日志级别:debug | info | warn | error | fatal
"log-driver": "json-file", // 默认日志驱动
"log-opts": { // 日志驱动参数
"max-size": "100m", // 单个日志文件最大体积
"max-file": "3" // 保留日志文件数量
}
}
2. 存储驱动优化
{
"storage-driver": "overlay2", // 推荐存储驱动(需内核支持)
"storage-opts": [
"dm.basesize=10G" // 限制镜像层基础大小
]
}
3. 资源管理
{
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65536,
"Soft": 65536
}
},
"default-runtime": "runc", // 默认容器运行时
"runtimes": {
"nvidia": { // GPU加速配置
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
4. 镜像仓库配置
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
],
"insecure-registries": [
"private-registry:5000"
]
}
5. 网络配置
{
"bip": "172.17.0.1/16", // 自定义桥接网络IP段
"fixed-cidr": "172.17.0.0/24", // 限制容器IP分配范围
"default-address-pools": [
{
"base": "10.10.0.0/16",
"size": 24
}
]
}
6. 安全增强
{
"tls": true, // 启用TLS加密通信
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server.pem",
"tlskey": "/etc/docker/server-key.pem",
"userland-proxy": false // 禁用用户态代理
}
三、典型配置示例
{
"bip": "172.18.1.1/24",
"default-runtime": "nvidia",
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com",
"https://hub-mirror.c.163.com",
"http://f1361db2.m.daocloud.io",
"https://16agrsie.mirror.aliyuncs.com"
],
"runtimes": {
"nvidia": {
"args": [],
"path": "nvidia-container-runtime"
}
}
}
四、配置优化建议
存储驱动选择
优先使用overlay2(推荐)或btrfs
避免在生产环境使用aufs
日志管理
生产环境建议使用集中化日志方案(如 ELK)
限制单个日志文件大小(建议 50-100MB)
镜像仓库加速
国内用户必配镜像加速器
定期清理无用镜像(docker image prune)
安全增强
启用 TLS 加密通信
限制 Docker 守护进程权限
定期更新 Docker 版本
资源监控
配置default-ulimits限制容器资源
结合 cAdvisor 监控容器使用情况
五、常见问题排查
配置文件语法错误
使用jsonlint工具验证格式
检查逗号是否多余或缺失
Docker 服务启动失败
查看系统日志:journalctl -u docker
尝试回滚配置文件
镜像拉取失败
检查镜像仓库网络连通性
验证insecure-registries配置