Linux Docker配置避坑指南(下篇):存储、权限、资源与日志治理实战
·
上篇讲了安装、配置和网络。下篇我们把生产环境中最容易“出事故”的四块讲透:
磁盘暴涨、权限错乱、资源失控、日志爆盘。
一、磁盘为什么总是被 Docker 吃满?
很多同学第一次看到 Docker 占几百 GB 都会懵。先看整体占用:
docker system df
典型元凶有 3 个:
- 停止容器长期未清理
- 悬空镜像越积越多
- 容器 json 日志无限增长
查看日志文件体积:
sudo du -sh /var/lib/docker/containers/*/*-json.log
清理建议(按风险从低到高):
docker container prune -f
docker image prune -a -f
docker volume prune -f
# 慎用:会删未使用镜像/容器/网络/卷
docker system prune -a --volumes -f
二、存储驱动选错,性能直接掉档
如果你还在用 devicemapper,启动慢、IO 高是常态。
大多数现代 Linux 环境建议用 overlay2。
检查当前驱动:
docker info | grep "Storage Driver"
切换前请先备份数据。注意:切换驱动通常意味着镜像和容器需要重建或迁移。
推荐配置:
{
"storage-driver": "overlay2"
}
三、权限问题:为什么不用 sudo 就报错?
报错类似:
permission denied while trying to connect to the Docker daemon socket
处理步骤:
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
如果仍不生效,重新登录会话。
安全提醒:
docker组权限接近 root,生产环境请控制成员范围。
四、挂载目录后文件全是 root,怎么解?
场景:容器内写文件,宿主机普通用户无权限改。
推荐在运行时指定 UID/GID:
docker run -u $(id -u):$(id -g) -v /home/user/data:/data ubuntu touch /data/test.txt
如果是团队项目,建议在 Dockerfile 中创建业务用户并固定身份运行。
五、资源失控:一个容器拖垮整台机
Docker 默认不限制容器资源,必须显式加限制。
# 内存限制
docker run -m 512m --memory-swap 1g nginx
# CPU限制
docker run --cpus="1.5" nginx
在 docker-compose 中也要加资源约束(尤其是生产环境),避免单点容器内存泄漏导致主机雪崩。
六、日志治理:不做轮转,迟早爆盘
最实用方案是全局限制日志大小:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3",
"compress": "true"
}
}
常用查看命令:
# 看最后100行
docker logs --tail 100 <container>
# 实时追踪
docker logs -f <container>
# 按时间段
docker logs --since "2026-03-01T10:00:00" --until "2026-03-01T12:00:00" <container>
七、生产可用 daemon.json 参考模板
{
"registry-mirrors": [
"https://docker.rainbond.cc",
"https://docker.1ms.run",
"https://docker.m.daocloud.io"
],
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3",
"compress": "true"
},
"live-restore": true,
"userland-proxy": false,
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"dns": ["223.5.5.5", "8.8.8.8"]
}
配置修改后别忘了:
sudo dockerd --validate --config-file=/etc/docker/daemon.json
sudo systemctl daemon-reload
sudo systemctl restart docker
八、总结
- 磁盘问题先看
docker system df - 生产优先
overlay2 - 权限问题本质是 socket 与用户组
- 所有生产容器必须加 CPU/内存限制
- 日志轮转一定要在全局配置里做
- 清理策略要常态化(配 cron)
更多详细内容
- 个人博客:https://itinstall.dev
- 公众号:IT安装手册
更多推荐





所有评论(0)