清理 Docker 缓存主要就是清理 无用镜像、容器、网络、构建缓存、卷数据。下面给你一套从安全到彻底的标准做法,适合日常维护和服务器瘦身。
✅ 一、先看看占用了多少空间(建议先看)
docker system df
会显示:
- Images(镜像)
- Containers(容器)
- Volumes(数据卷)
- Build Cache(构建缓存)
示例:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 15 3 5.2GB 3.8GB
Containers 8 1 1.1GB 900MB
Local Volumes 5 2 4GB 2.5GB
Build Cache 22 0 1.3GB 1.3GB
重点看 RECLAIMABLE,就是能回收的空间。
✅ 二、一键安全清理(推荐)
这是最常用、最安全的命令:
docker system prune
作用:
✔ 删除:
- 停止的容器
- 未使用的网络
- 悬空镜像(<none>)
- 构建缓存
❌ 不会删:
- 正在用的容器
- 正在用的镜像
- 数据卷
加 -f 可免确认:
docker system prune -f
✅ 三、连“没用到的镜像”也一起删(释放更多空间)
如果你确定不用旧镜像了:
docker system prune -a
⚠️ 会删除:
- 所有未被容器使用的镜像(包括有 tag 的)
服务器上跑项目时要谨慎。
✅ 四、单独清理构建缓存(Build Cache)
如果你经常 build:
docker builder prune
强制清理:
docker builder prune -f
全部删:
docker builder prune -a
✅ 五、清理无用 Volume(最容易占空间)
很多人磁盘爆满就是因为 volume 没清。
查看:
docker volume ls
清理没被使用的:
docker volume prune
免确认:
docker volume prune -f
⚠️ 注意: Volume 里可能是数据库数据,删前确认没在用。
✅ 六、分别清理(精细控制)
1️⃣ 删除停止的容器
docker container prune
2️⃣ 删除无用镜像
docker image prune
全部未使用:
docker image prune -a
3️⃣ 删除无用网络
docker network prune
✅ 七、终极清理(最狠,慎用)
适合测试机 / 开发机:
docker system prune -a --volumes
等价于:
✔ 删容器 ✔ 删镜像 ✔ 删缓存 ✔ 删卷
💣 基本清空 Docker 环境。
✅ 八、推荐日常维护组合(实战)
💡 开发机(安全版)
docker system prune -f
docker builder prune -f
💡 服务器(稳妥)
docker system df
docker system prune
💡 CI / 构建机(狠一点)
docker system prune -af --volumes
✅ 九、磁盘还是满?排查位置
Docker 默认数据目录:
/var/lib/docker
查看占用:
du -sh /var/lib/docker/*
mac / docker desktop:
~/Library/Containers/com.docker.docker
✅ 十、防止以后再爆盘(推荐)
1️⃣ 定期自动清理(crontab)
比如每周一次:
0 3 * * 0 docker system prune -af
2️⃣ Build 时减少缓存
Dockerfile 优化:
RUN apt-get update && \
apt-get install -y xxx && \
rm -rf /var/lib/apt/lists/*
3️⃣ 使用多阶段构建
FROM node:18 AS build
RUN npm run build
FROM nginx
COPY --from=build /app/dist /usr/share/nginx/html
体积直接减半。
📌 总结(直接记这几个)
最常用 3 个:
docker system df # 看空间
docker system prune -f # 安全清理
docker system prune -af # 深度清理