Docker 在我的 Mac 上佔用空間

Docker Desktop 把所有東西放在一個檔案裡。每次建置它都會變大,刪除映像檔也不會讓它變小。以下說明原因,以及真正能拿回空間的做法。

免費下載與掃描。 清理功能需要授權:每台電腦一次性付費,Mac 或 Windows 皆可。

儲存空間:依類別顯示 297.8 GB 個人資料夾的樹狀圖

空間在哪裡

在 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 完全看不出任何變化。

把空間拿回來

依序排列:破壞性最低的先做。

1. 先問 Docker 自己的統計

永遠從這裡開始。它會把映像檔、容器、磁碟區與建置快取分開列出,並告訴你各有多少可以回收。

docker system df -v

2. 清空建置快取

在經常建置映像檔的機器上,這通常是最大的單一項目,也是移除起來最安全的 — 只會讓下一次建置變慢而已。

docker builder prune -a

3. 清理真正沒在用的東西

已停止的容器、懸空的映像檔與未使用的網路:

docker system prune

加上 -a 就會連同任何未被執行中容器使用的映像檔一併移除 — 這代表之後要重新拉取。以下這個選項, --volumes 只有在你確定時才加上: 磁碟區正是資料庫存放資料的地方,而那是這一頁上唯一會摧毀你無法重新下載之物的指令。

4. 動手前先列出磁碟區

看看實際上會消失哪些:

docker volume ls
docker volume ls -f dangling=true

5. 讓 macOS 收回這個檔案

prune 之後,Docker Desktop 有一個官方做法可以把釋放的區塊還回去: 設定 → 資源 → 進階 → 磁碟使用量,或是結束並重新開啟 Docker Desktop,它會在啟動時觸發 TRIM。給它一分鐘,重新確認檔案大小之後,再判斷是否沒有效果。

6. 調低磁碟上限

在 設定 → 資源中,虛擬磁碟上限就是 Docker.raw 被允許成長到多大。調低它本身不會釋放任何空間,但能為問題設下天花板。當初「以防萬一」把它調高,正是那個檔案長到 64 GB 的原因。

7. 最後手段

設定 → 疑難排解 → Clean / Purge data 會完全重設虛擬機的磁碟,把檔案還原到接近零。它會刪掉你所有的映像檔、容器與磁碟區。在其他方法都無效、而且你清楚磁碟區裡有什麼的時候再用。

不要在 Finder 裡刪除 Docker.raw。 它不是快取檔案 — 它是整個 Docker 安裝的資料,而在 Docker 執行中移除它,可能讓虛擬機留在一個反正也需要重設的狀態。

也值得看看

Docker 很少是單獨存在的

在 Docker 長到 50 GB 的那台 Mac 上,Xcode 的 DerivedData 與本機 AI 模型通常緊追在後。如果你要回收空間,把整顆磁碟量過一次,比一次修一樣東西更值得。 完整清單

在 Linux 上沒有映像檔案

在 Linux 上,Docker 直接寫入下列位置, /var/lib/docker所以 prune 會立刻釋放空間,上述 TRIM 的問題完全不適用。 Linux 磁碟整理

常見問題

刪除 Docker.raw 安全嗎?

從 Finder 刪不安全,Docker 執行中也不安全。那單一檔案就是你所有的映像檔、容器與磁碟區。如果你真的想重新開始,請用 Docker Desktop 的「疑難排解 → Clean / Purge data」,它會以 Docker 知情的方式做同一件事。

為什麼 docker system prune 說釋放了 20 GB,卻什麼都沒變?

因為它是在虛擬機的檔案系統裡釋放了 20 GB,不是在你的 Mac 上。在 TRIM 執行、macOS 回收那些區塊之前,檔案都會維持原本大小。結束並重新開啟 Docker Desktop 通常就會觸發。

docker system prune 會刪掉我的資料庫嗎?

只有在你加上 --volumes的時候。沒有這個旗標,它不會動磁碟區。加上之後,任何未連接到容器的磁碟區都會消失,而已停止的資料庫,其磁碟區就算是未連接。

Docker.raw 應該多大才合理?

沒有標準答案,但在有幾個進行中專案的機器上,15 到 25 GB 算正常,而 60 GB 表示建置快取從來沒清過。請先用下列指令確認: docker system df -v ,再斷定是映像檔的問題。