docker images prune
在 Docker 中清理未使用的鏡像(包括懸空鏡像和完全未被引用的鏡像),可以使用以下命令:
1. ?刪除所有懸空鏡像?(推薦常用)
docker image prune
-
?懸空鏡像 (dangling images)?? 是指沒有標簽且未被任何容器引用的鏡像(通常是構建過程中的臨時層)。
-
添加
-f
強制刪除(無需確認):docker image prune -f
2. ?刪除所有未被使用的鏡像?(謹慎!)
docker image prune -a
- ?**
-a
會刪除所有未被容器或標簽引用的鏡像**?(包括有名字但未被使用的鏡像)。 - 添加
-f
強制刪除:docker image prune -a -f
3. ?清理整個 Docker 系統?(停止的容器 + 懸空鏡像 + 網絡 + 構建緩存等)
docker system prune
-
添加
-a
會額外刪除未被使用的鏡像?(不僅僅是懸空鏡像):docker system prune -a
-
強制清理(跳過確認提示):
docker system prune -a -f
?? 注意事項:
-
?懸空鏡像 vs 未使用鏡像?:
docker image prune
→ 只刪除懸空鏡像?(無名鏡像)。docker image prune -a
→ 刪除所有未被引用的鏡像?(包括有名字但未被容器使用的鏡像)。
-
?數據無價!??
-
執行
prune -a
前確保鏡像真的不需要(例如,未來啟動容器可能會用到的鏡像也會被刪除)。 -
建議先手動檢查:
# 列出懸空鏡像 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
實現定時清理,例如:{"features": {"buildkit": true},"builder": {"gc": {"enabled": true,"defaultKeepStorage": "10GB"}} }
總結常用命令:
場景 | 命令 |
---|---|
?安全清理懸空鏡像? | docker image prune -f |
?徹底清理未使用的鏡像? | docker image prune -a -f (謹慎!) |
?全面清理 Docker 系統垃圾? | docker system prune -f (不包含未使用鏡像) |