docker
docker images prune
在 Docker 中清理未使用的镜像(包括悬空镜像和完全未被引用的镜像),可以使用以下命令:
1. 删除所有悬空镜像(推荐常用)
bash
docker image prune
-
悬空镜像 (dangling images) 是指没有标签且未被任何容器引用的镜像(通常是构建过程中的临时层)。
-
添加
-f
强制删除(无需确认):bashdocker image prune -f
2. 删除所有未被使用的镜像(谨慎!)
bash
docker image prune -a
-
**
-a
会删除所有未被容器或标签引用的镜像**(包括有名字但未被使用的镜像)。 -
添加
-f
强制删除:bashdocker image prune -a -f
3. 清理整个 Docker 系统(停止的容器 + 悬空镜像 + 网络 + 构建缓存等)
bash
docker system prune
-
添加
-a
会额外删除未被使用的镜像(不仅仅是悬空镜像):bashdocker system prune -a
-
强制清理(跳过确认提示):
bashdocker system prune -a -f
⚠️ 注意事项:
-
悬空镜像 vs 未使用镜像:
docker image prune
→ 只删除悬空镜像(无名镜像)。docker image prune -a
→ 删除所有未被引用的镜像(包括有名字但未被容器使用的镜像)。
-
数据无价!
-
执行
prune -a
前确保镜像真的不需要(例如,未来启动容器可能会用到的镜像也会被删除)。 -
建议先手动检查:
bash# 列出悬空镜像 docker images -f dangling=true # 列出所有镜像(按占用空间排序) docker images --format "{{.ID}}\t{{.Repository}}\t{{.Size}}" | sort -k 3 -h
-
-
自动清理 :
可通过配置 Docker Daemon 的
docker-compose.yml
或修改/etc/docker/daemon.json
实现定时清理,例如:json{ "features": { "buildkit": true }, "builder": { "gc": { "enabled": true, "defaultKeepStorage": "10GB" } } }
总结常用命令:
场景 | 命令 |
---|---|
安全清理悬空镜像 | docker image prune -f |
彻底清理未使用的镜像 | docker image prune -a -f (谨慎!) |
全面清理 Docker 系统垃圾 | docker system prune -f (不包含未使用镜像) |