1. 首先,查看所有本地鏡像:
docker images
這會列出你本地所有的鏡像,包括它們的 REPOSITORY(倉庫名)、TAG(標簽) 和 IMAGE ID(鏡像ID)。
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 20.04 a2e18977a1ca 2 weeks ago 72.8MB
nginx latest 605c77e624dd 3 months ago 141MB
hello-world latest feb5d9fea6a5 12 months ago 13.3kB
2. 根據名稱和標簽刪除:
這是最推薦的方式,因為它精確無誤。
# 格式: docker rmi [REPOSITORY]:[TAG]
docker rmi hello-world:latest
3. 根據鏡像ID刪除:
你也可以使用鏡像ID的前幾位或完整ID來刪除。使用ID的好處是,即使同一個鏡像有多個標簽,也可以一次性刪除。
# 格式: docker rmi [IMAGE_ID]
docker rmi feb5d9fea6a5
注意: 如果該鏡像正在被一個或多個容器(即使是停止的容器)使用,你將無法直接刪除它,并會收到類似 "image is being used by container..." 的錯誤。你需要先刪除相關的容器(使用 docker rm [CONTAINER_ID])。
方法二:刪除所有未被使用的鏡像(推薦)
這是一個非常實用的命令,可以安全地刪除所有沒有被任何容器引用的鏡像。這通常能釋放大量空間。
docker image prune
執(zhí)行后,Docker 會列出所有將要被刪除的懸空鏡像(dangling images,即沒有標簽的鏡像),并詢問你是否確認刪除。輸入 y 并回車即可。
更激進的清理:刪除所有未被容器使用的鏡像
如果你想刪除所有當前沒有被任何正在運行或已停止的容器使用的鏡像(不僅僅是懸空鏡像),可以添加 -a 或 --all 參數。
docker image prune -a
警告: 這個命令會刪除很多鏡像,請在確認不再需要這些鏡像時使用。它會詢問你是否繼續(xù),輸入 y 確認。
方法三:一鍵清理所有無用資源(終極方案)
如果你想一次性清理所有未被使用的 Docker 資源,包括:
- 停止的容器 (Stopped containers)
- 未被使用的網絡 (Unused networks)
- 懸空的鏡像 (Dangling images)
- 未被容器使用的構建緩存 (Build cache)
可以使用下面這個“核彈級”命令:
docker system prune
更激進的系統(tǒng)清理:
和 image prune 類似,你可以添加 -a 參數來刪除所有未被使用的鏡像,而不僅僅是懸空鏡像。
docker system prune -a
強烈警告: 這是一個非常強大的清理命令,會刪除大量數據。請務必在確認這些資源都不再需要時才執(zhí)行。它同樣會在執(zhí)行前要求你確認。
總結與建議
| 命令 | 作用 | 安全性 | 推薦場景 |
|---|---|---|---|
docker rmi [鏡像名/ID] |
刪除指定的一個或多個鏡像 | 高(精確控制) | 只刪除一兩個確定不用的鏡像。 |
docker image prune |
刪除所有懸空鏡像(無標簽) | 高(通常是構建過程中產生的垃圾) | 日常維護,定期清理構建殘留。 |
docker image prune -a |
刪除所有未被容器使用的鏡像 | 中(可能誤刪未來有用的鏡像) | 磁盤空間緊張,且確認可以重新拉取鏡像。 |
docker system prune |
刪除所有未被使用的容器、網絡、懸空鏡像和構建緩存 | 中(會刪除停止的容器) | 徹底清理環(huán)境,釋放大量空間。 |
docker system prune -a |
刪除所有未被使用的容器、網絡、所有未被使用的鏡像和構建緩存 | 低(最激進的清理) | 準備放棄當前項目環(huán)境,或在測試環(huán)境中使用。 |
給初學者的建議:
-
日常清理:從
docker image prune開始,這是最安全有效的日常維護命令。 -
空間嚴重不足:如果
docker image prune釋放的空間不夠,可以嘗試docker system prune。 -
刪除特定鏡像:如果你知道某個鏡像肯定沒用了,直接用
docker rmi刪除它。