一文教你彻底解决Docker日志膨胀
作者:写bug写bug
最近,我发现一台服务器的磁盘空间即将耗尽。经过排查,发现某个 Docker 容器在一年内生成了14 GB 的日志文件。为避免类似问题,本文将指导你如何快速检查、清理 Docker 日志,并设置日志大小限制以防止未来日志失控。
重启容器(如服务器重启或手动执行 systemctl restart docker
)不会清除日志,日志文件会持续累积。
重建容器(删除并重新创建容器)才会重置日志。
检查 Docker 日志大小
默认日志路径:
/var/lib/docker/containers/<容器ID>/<容器ID>-json.log
使用以下命令按大小排序查看所有日志文件:
find /var/lib/docker/containers/ -name "*-json.log" | xargs du -h | sort -hr
示例输出:
5.9G /var/lib/docker/containers/d2e92.../d2e92...-json.log
4.9G /var/lib/docker/containers/ec7a4.../ec7a4...-json.log
根据容器 ID 查找容器名称
使用docker inspect
命令:
docker inspect --format='{{.Name}}' <容器ID>
示例输出:
/php-fpm-valente
(注意:输出结果会以斜杠开头,实际容器名为php-fpm-valente
)
清理 Docker 日志
清理单个日志文件:``` truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
清理所有日志文件(谨慎使用):``` truncate -s 0 /var/lib/docker/containers//-json.log
设置日志大小限制
1.编辑 Docker 守护进程配置文件/etc/docker/daemon.json
(若不存在则新建):
sudo nano /etc/docker/daemon.json
2.添加以下内容(限制单个日志文件为 10MB,保留最多 3 个归档文件):
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
3.重启 Docker 服务以生效:
sudo systemctl restart docker
**注意**:此配置仅对新创建的容器生效...
验证配置
使用以下命令检查容器的日志配置:
docker inspect <容器名称> | grep -A 4 LogConfig
示例输出:
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "3",
"max-size": "10m"
}
}
总结
- 定期检查日志大小,避免磁盘空间耗尽。
- 通过
daemon.json
配置日志轮转,限制日志文件大小。 - 清理日志时优先使用
truncate
,避免直接删除文件导致容器异常。
遵循以上实践,可有效管理 Docker 日志,提升服务器资源利用率和稳定性。
到此这篇关于一文教你彻底解决Docker日志膨胀的文章就介绍到这了,更多相关Docker解决日志膨胀内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!