早上起来发现 VPS 连不上了,或者网站 502 Bad Gateway,多半是磁盘爆了。主机选 站长经常遇到这种事,90% 的情况是 Docker 日志没管好,把系统盘塞满了。别急着重装系统,也别直接 `rm -rf`,这很容易把正在运行的服务搞挂。先冷静下来,按下面的步骤排查和清理。

VPS磁盘空间被Docker日志占满怎么办
第一步是确认是不是 Docker 惹的祸。登录服务器(如果还能登进去的话),先看整体磁盘情况:
df -h
如果 `/var/lib/docker` 所在的分区使用率 90% 以上,基本锁定了目标。接下来要找出具体是哪个容器的日志在疯长。Docker 默认的日志驱动是 `json-file`,如果不加限制,某些高并发或报错的应用(如 Nextcloud、某些 AI Agent 代理服务)一天能跑出几个 G 的日志。
运行下面这条命令,列出所有容器日志文件的大小:
find /var/lib/docker/containers/ -name "*.log" -exec ls -lh {} \;
或者用更直观的脚本查看当前目录下各文件夹的大小:
du -sh /var/lib/docker/containers/* | sort -hr | head -n 5
看到几十 GB 甚至更大的 `.log` 文件,就是罪魁祸首。
安全清理Docker日志文件
找到了大文件,千万不要直接用 `rm` 删除。Docker 进程还在占用这个文件句柄,`rm` 后磁盘空间往往不会释放,甚至可能导致容器写入异常。
最稳妥的方法是 `truncate`,清空文件内容但保留文件 inode:
truncate -s 0 /var/lib/docker/containers/xxxx/xxxx-json.log
执行完再运行 `df -h`,空间应该马上就回来了。这只是救急,过几天日志还会涨回来。想把没用的东西一起清理,可以用:
docker system prune -a
注意这会删除停止的容器和未使用的镜像,操作前确认一下。
利用AI Agent生成运维清理方案
手动清理一次容易,但如果服务器上跑了好几个 AI Agent 或者自动化工作流,日志爆盘是早晚的事。这时候可以利用本地部署的 LLM(如 Ollama 运行的 DeepSeek、Llama3)或者 API 接入的 AI,帮我们分析日志并生成配置策略。
假设你服务器上装了 Ollama,可以把刚才的磁盘分析结果喂给 AI,让它写一个针对性的清理脚本或配置。比如在终端执行:
echo "我的VPS磁盘被Docker日志占满,以下是容器日志大小列表:$(du -sh /var/lib/docker/containers/* | sort -hr)。请帮我生成一个Docker daemon.json配置,限制所有容器单个日志文件最大100m,保留3个文件,并给出重启命令。" | ollama run qwen2.5
AI Agent 会根据你提供的信息,直接吐出可用的 JSON 配置块和命令。这比去翻官方文档要快得多,而且 AI 能根据你的具体输出(比如发现某个特定容器日志特别大)建议是否需要单独调整该容器的 `logging` 配置。
这种“人机协作”运维模式,特别适合不擅长记复杂配置参数的用户。让 AI 写配置,你负责复制粘贴和执行,既安全又高效。
配置Docker全局日志轮转
无论手动清理还是 AI 辅助,最终目的都是为了长治久安。配置 Docker 的全局日志轮转是必选项。
编辑或创建 `/etc/docker/daemon.json`:
vim /etc/docker/daemon.json
写入以下内容:
json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
这段配置的意思是:每个容器的日志文件最大 100MB,最多保留 3 个旧日志文件(即总日志占用不超过 300MB)。
保存后,重载配置并重启 Docker:
systemctl daemon-reload
systemctl restart docker
注意:重启 Docker 会导致所有容器短暂中断,建议在业务低峰期操作。重启后,新建的容器会生效这个限制,正在运行的容器需要重建(`docker up -d –force-recreate`)才会完全应用新配置。
老鸟叮嘱
1.不要删日志文件后不重启服务:虽然 `truncate` 能释放空间,但某些应用内部可能还在持有旧的文件流,极端情况下建议重启该容器。
2.监控比清理重要:装个 `netdata` 或者简单的定时任务脚本,每天检查磁盘使用率,超过 80% 就发邮件或钉钉告警,别等服务挂了才发现。
3.AI 生成的代码先看后跑:AI Agent 给出的 JSON 配置一般没问题,但如果涉及到删除系统文件的脚本(比如 `rm -rf`),务必人工确认路径,防止 AI 产生幻觉删错库。
4.区分应用日志和容器日志:有些应用把日志写在容器内部的卷里(Volume),而不是 stdout,这种清理 Docker 日志没用,得进容器里或者去挂载目录清理。
FAQ
Docker 日志清理后容器会停止吗?
使用 `truncate -s 0` 清空日志不会停止容器,容器会继续向该文件写入数据。如果修改了 `daemon.json` 并重启 Docker 服务,所有容器会停止并重新启动。
为什么删除了日志文件,磁盘空间还是满的?
Linux 系统中,只要进程还在打开该文件,删除文件只是删除了目录项,磁盘空间不会释放。必须使用 `truncate` 清空内容,或者重启对应的进程。
如何限制特定容器的日志大小?
在 `docker-compose.yml` 中添加 logging 配置:
yaml
services:
app:
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "3"
VPS 磁盘空间不足会导致 AI Agent 部署失败吗?
会。大部分 AI 模型(如 Ollama 拉取模型)或者 Docker 镜像解压都需要足够的临时空间。如果根分区(/)满了,不仅部署失败,系统连基本的 SSH 会话都可能无法建立。
清理日志和配置轮转是 VPS 运维的基本功,配合 AI Agent 辅助生成配置,能大幅降低出错概率。磁盘空间管理好了,跑在 VPS 上的 AI 应用和自动化工作流才能稳如泰山。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/10153.html 商家投稿邮箱:zhujixuanblog@qq.com
