Docker 在 Mac 上佔用太多磁碟空間:Docker.raw 一次說清楚
在 Mac 上,Docker 是在虛擬機器裡執行的,所有映像檔、容器、卷宗和建置快取,都存在那台虛擬機器的磁碟上:一個很大的檔案。
簡單說:Docker Desktop 的磁碟是 ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw。不要刪除它,而是在它裡面釋放空間:用 docker system df 看看裡面有什麼,再用 docker … prune 指令移除。
為什麼 Docker.raw 看起來這麼大?
它是稀疏檔案(sparse file):Finder 顯示的是它最多可以長到的大小(也就是 Docker Desktop 中設定的上限),而不是實際用量。要看實際的數字:
du -h ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
Docker 的空間被什麼佔走了?
docker system df
docker system df -v
第一個指令會顯示映像檔、容器、本機卷宗和建置快取,以及各自可以回收多少空間。第二個指令會一項一項列出來。
哪些指令可以安全釋放空間?
docker builder prune:沒有任何建置在使用的建置快取。之後的第一次建置會比較慢。docker image prune:懸置映像檔(dangling,重新建置後留下、沒有標籤的殘留)。加上-a會移除所有沒有容器在用的映像檔;需要時會再下載。docker container prune:已停止的容器。寫在容器裡、卷宗以外的任何東西都會遺失。docker volume prune:未使用的卷宗。注意:卷宗裡存的是資料庫和其他資料。在較新的版本中,除非加上-a,否則它只會移除匿名卷宗。docker system prune會一次做完前三項;加上-a和--volumes則會清得更徹底。
清理之後 Docker.raw 會變小嗎?
通常會:因為這是稀疏檔案,在裡面釋放的空間會還給 macOS,有時要等幾分鐘。用上面的 du 指令再檢查一次。如果沒有變小,請結束 Docker Desktop 再重新打開。
可以限制 Docker 最多用多少空間嗎?
可以。在 Docker Desktop 中打開 Settings › Resources › Advanced,調低磁碟用量上限。如果調得比目前存放的資料還低,可能需要重設 Docker 的資料。
該刪除 Docker.raw 嗎?
只有在你願意失去 Docker 裡的一切時才刪:所有映像檔、容器和卷宗。Docker Desktop 下次啟動時會建立一個空的。Docker Desktop 裡的 Troubleshoot › Clean / Purge data 能做到同樣的事,而且更乾淨。
OrbStack、Colima 和 Podman 的磁碟放在哪裡?
- OrbStack:在
~/.orbstack底下(或在它設定中選的資料夾)。同樣的docker指令也能對它使用。 - Colima:Lima 虛擬機器的磁碟在
~/.colima底下。colima delete會移除整台虛擬機器。 - Podman:machine 磁碟在
~/.local/share/containers/podman/machine底下;podman system prune可以釋放裡面的空間。