Docker 日志疯狂吃满磁盘?手把手教你安全清理与预防(附一键脚本)
前言
在使用Docker部署服务时,很多开发者都会遇到一个“隐形杀手”——容器日志把服务器磁盘空间吃满,导致服务异常甚至宕机。
默认情况下,Docker的日志驱动是 json-file,且没有大小和数量限制。对于高并发或打印大量Debug日志的服务,运行几天后,单个日志文件可能达到几个G甚至几十个G。
本文将带你从排查、清理到预防,彻底解决Docker日志占满磁盘的问题。
一、 定位问题:如何找到“罪魁祸首”?
在清理之前,我们先找出究竟是哪个容器的日志占用了大量空间。
进入Docker的默认日志目录(通常为 /var/lib/docker/containers),使用 du 命令排序查看:
# 查看所有容器日志大小并按大小排序(降序) sudo du -d1 -h /var/lib/docker/containers/ | sort -hr*输出示例:*
4.2G /var/lib/docker/containers/a1b2c3d4e5f6... 512M /var/lib/docker/containers/f6e5d4c3b2a1...拿到这串长ID后,我们可以通过 docker ps 找到对应的容器名。
二、 精准打击:查看与清理单个容器日志
1. 查看容器日志的绝对路径
如果你想知道某个具体容器的日志存放在服务器的哪个文件里,可以使用 inspect 命令提取 LogPath:
docker inspect --format='{ {.LogPath}}' <container