直接修改 /etc/docker/daemon.json 是生产环境 docker 性能优化最有效方式,需配置 data-root、registry-mirrors、insecure-registries、日志限制及禁用 live-restore、iptables、userland-proxy 等非必要功能。
直接改 /etc/docker/daemon.json 是生产环境 docker 性能优化最有效、最可控的方式。它不依赖容器启动参数,也不用每个镜像都加限制,一次配置全局生效。
调整存储路径,避免系统盘被撑爆
默认数据目录 /var/lib/docker 在系统盘,小容量云主机或旧服务器极易因镜像和层积累导致磁盘写满。生产环境应明确指定大容量、高 I/O 的独立挂载点。
- 确认目标路径已挂载且有足够空间(如
/data/docker) - 停止 Docker:
sudo systemctl stop docker - 迁移现有数据:
sudo rsync -avz /var/lib/docker/ /data/docker/ - 在
daemon.json中添加:"data-root": "/data/docker" - 重启服务并验证:
sudo docker info | grep "Docker Root Dir"
配置镜像加速与私有仓库信任
拉镜像慢、推镜像失败是高频卡点,根源常在 registry 访问链路。两项配置必须并存:
-
"registry-mirrors":填国内可用的镜像源地址,例如阿里云、中科大、网易,多个用数组形式写全 -
"insecure-registries":内网 HTTP 私有仓库(如 Harbor 5000 端口)必须显式加入,否则 push/pull 直接拒绝 - 注意:两个字段互不影响,
registry-mirrors只作用于公开镜像拉取,insecure-registries专用于私有仓库通信
限制日志大小,防止磁盘静默耗尽
默认 json-file 日志不限大小、不轮转,一个长周期业务容器几天就能生成几十 GB 日志。生产环境必须设防:
- 启用日志驱动:
"log-driver": "json-file"(保持默认即可) - 强制限制单个日志文件大小:
"log-opts": { "max-size": "10m", "max-file": "3" } - 效果:每个容器最多保留 3 个 10MB 日志文件,超出自动覆盖,避免突发日志洪峰打爆磁盘
禁用非必要功能,降低守护进程开销
部分默认开启的功能在纯容器调度场景下无意义,反而增加内存占用和启动延迟:
-
"live-restore": true:仅在需要滚动升级 Docker 引擎且不能中断容器时启用;普通生产环境建议关掉 -
"iptables": false:若使用 CNI(如 Calico、Cilium)接管网络,应关闭 Docker 自动操作 iptables,避免规则冲突 -
"userland-proxy": false:禁用用户态端口转发代理,提升 hostPort 性能,尤其适用于高并发 API 容器











