在 CentOS 里,overlay(尤其是 overlayfs,常用于 Docker、Podman、Kubernetes)本身是文件系统,不是传统意义上的“缓存”。你问的“清理缓存”通常分几种情况,我按常见场景给你说明:
如果你只是想释放 Linux 的文件系统缓存(包括 overlay 挂载的内容):
# 查看当前缓存
free -h
# 清理页缓存
sync; echo 1 > /proc/sys/vm/drop_caches
# 清理 dentries + inodes
sync; echo 2 > /proc/sys/vm/drop_caches
# 全部清理(最彻底)
sync; echo 3 > /proc/sys/vm/drop_caches
✅ 这是安全的,不会影响正在运行的服务(只是释放内存)
CentOS + Docker 时,overlay 通常指 /var/lib/docker/overlay2
du -sh /var/lib/docker/overlay2
docker system prune
只删无用数据:
docker system prune -a
(会删除未使用的镜像、容器、网络、构建缓存)
docker builder prune
podman system prune
podman system prune -a
如果你是手动挂载的 overlay:
mount | grep overlay
umount /your/overlay/mount
然后再清理:
rm -rf /upper /work
⚠️ 不要直接 rm overlay 挂载点里的文件,可能导致数据不一致
crictl rm -fa
crictl images -prune
或:
nerdctl system prune
mount | grep overlay
df -T | grep overlay
| 场景 | 命令 |
|---|---|
| 释放内存缓存 | echo 3 > /proc/sys/vm/drop_caches |
| Docker | docker system prune -a |
| Podman | podman system prune -a |
| Kubernetes | crictl images -prune |
如果你能告诉我:
/var/lib/docker/overlay2 还是自定义)我可以给你更精确的清理命令。