清理 Docker 资源
1. 一键全自动清理(推荐)
如果你不想一个一个检查,可以使用 Docker 提供的“核武器”指令。它会删除所有悬空(dangling)的资源(即没有被任何容器使用的镜像、已停止的容器等)。
docker system prune- 进阶版: 如果你想把所有未使用的镜像(而不只是无标签的悬空镜像)和卷也删掉,可以加上 -a 和 --volumes 参数:
docker system prune -a --volumes注意: 这会删除所有未运行容器关联的镜像,执行前请确保你不需要重启那些处于停止状态的容器。
2. 分类精准打击
如果你希望有针对性地清理,可以参考下表:
| 对象 | 命令 | 说明 |
| 容器 (Containers) | docker container prune | 删除所有已停止的容器 |
| 镜像 (Images) | docker image prune | 删除悬空的镜像(<none>:<none>) |
| 数据卷 (Volumes) | docker volume prune | 重点: 删除未被挂载的匿名卷(最占空间) |
| 网络 (Networks) | docker network prune | 删除未被使用的自定义网络 |
3. 深度清理:排查大文件
有时候即便执行了上述命令,磁盘占用依然很高,这通常由以下两个原因导致:
A. 日志文件过大
Docker 默认不限制日志大小,容器运行久了,日志可能高达几十 GB。
- 查看日志大小:
ls -lh /var/lib/docker/containers/*/*-json.log - 临时清理:
truncate -s 0 /var/lib/docker/containers/*/*-json.log ``` *(这会清空日志内容但不删除文件)* #### B. 未使用的 Build Cache (构建缓存) 如果你经常在 VPS 上构建镜像,构建缓存会占用大量空间: ```bash docker builder prune
4. 预防措施:限制日志大小
为了防止以后日志再次撑爆磁盘,建议在 /etc/docker/daemon.json 中配置日志上限:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}配置完成后,重启 Docker 服务:systemctl restart docker。
💡 实用小技巧
在清理之前,你可以先执行以下命令查看 Docker 到底占用了多少空间:
docker system df这会列出镜像、容器、卷的磁盘占用详情,让你做到心中有数。