1. 先問 Docker 自己的統計
永遠從這裡開始。它會把映像檔、容器、磁碟區與建置快取分開列出,並告訴你各有多少可以回收。
docker system df -v
Docker Desktop 把所有東西放在一個檔案裡。每次建置它都會變大,刪除映像檔也不會讓它變小。以下說明原因,以及真正能拿回空間的做法。
免費下載與掃描。 清理功能需要授權:每台電腦一次性付費,Mac 或 Windows 皆可。

在 Mac 上,Docker Desktop 把所有東西都放在一台 Linux 虛擬機裡,而這台虛擬機的整顆磁碟就是一個稀疏檔案:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
請查看它在磁碟上的實際大小 — 而不是邏輯大小,那永遠是你允許 Docker 使用的上限:
du -h -d0 ~/Library/Containers/com.docker.docker/Data/vms/0/data/
刪除一個映像檔,空間確實會釋出,但釋出的只是虛擬機 內部的 空間。你 Mac 上的那個檔案還是原本那麼大,因為 macOS 已經把這麼多空間交給了它。較新版本的 Docker Desktop 會從虛擬機內部發出 TRIM,讓 macOS 得以回收這些已釋出的區塊,但這是依 Docker 自己的排程進行,而不是在你 prune 的那一刻。在那之前, docker system df 會回報釋放了好幾 GB,而 Finder 完全看不出任何變化。
依序排列:破壞性最低的先做。
永遠從這裡開始。它會把映像檔、容器、磁碟區與建置快取分開列出,並告訴你各有多少可以回收。
docker system df -v
在經常建置映像檔的機器上,這通常是最大的單一項目,也是移除起來最安全的 — 只會讓下一次建置變慢而已。
docker builder prune -a
已停止的容器、懸空的映像檔與未使用的網路:
docker system prune
加上 -a 就會連同任何未被執行中容器使用的映像檔一併移除 — 這代表之後要重新拉取。以下這個選項, --volumes 只有在你確定時才加上: 磁碟區正是資料庫存放資料的地方,而那是這一頁上唯一會摧毀你無法重新下載之物的指令。
看看實際上會消失哪些:
docker volume ls
docker volume ls -f dangling=true
prune 之後,Docker Desktop 有一個官方做法可以把釋放的區塊還回去: 設定 → 資源 → 進階 → 磁碟使用量,或是結束並重新開啟 Docker Desktop,它會在啟動時觸發 TRIM。給它一分鐘,重新確認檔案大小之後,再判斷是否沒有效果。
在 設定 → 資源中,虛擬磁碟上限就是 Docker.raw 被允許成長到多大。調低它本身不會釋放任何空間,但能為問題設下天花板。當初「以防萬一」把它調高,正是那個檔案長到 64 GB 的原因。
設定 → 疑難排解 → Clean / Purge data 會完全重設虛擬機的磁碟,把檔案還原到接近零。它會刪掉你所有的映像檔、容器與磁碟區。在其他方法都無效、而且你清楚磁碟區裡有什麼的時候再用。
不要在 Finder 裡刪除 Docker.raw。 它不是快取檔案 — 它是整個 Docker 安裝的資料,而在 Docker 執行中移除它,可能讓虛擬機留在一個反正也需要重設的狀態。
在 Docker 長到 50 GB 的那台 Mac 上,Xcode 的 DerivedData 與本機 AI 模型通常緊追在後。如果你要回收空間,把整顆磁碟量過一次,比一次修一樣東西更值得。 完整清單
在 Linux 上,Docker 直接寫入下列位置, /var/lib/docker所以 prune 會立刻釋放空間,上述 TRIM 的問題完全不適用。 Linux 磁碟整理
從 Finder 刪不安全,Docker 執行中也不安全。那單一檔案就是你所有的映像檔、容器與磁碟區。如果你真的想重新開始,請用 Docker Desktop 的「疑難排解 → Clean / Purge data」,它會以 Docker 知情的方式做同一件事。
因為它是在虛擬機的檔案系統裡釋放了 20 GB,不是在你的 Mac 上。在 TRIM 執行、macOS 回收那些區塊之前,檔案都會維持原本大小。結束並重新開啟 Docker Desktop 通常就會觸發。
只有在你加上 --volumes的時候。沒有這個旗標,它不會動磁碟區。加上之後,任何未連接到容器的磁碟區都會消失,而已停止的資料庫,其磁碟區就算是未連接。
沒有標準答案,但在有幾個進行中專案的機器上,15 到 25 GB 算正常,而 60 GB 表示建置快取從來沒清過。請先用下列指令確認: docker system df -v ,再斷定是映像檔的問題。
針對本指南某個部分深入探討的短篇文章。