WTMemory 教學

Docker 佔用 Mac 太多空間?

2026年10月13日更新

Docker Desktop 把所有 Linux 映像檔、容器、卷宗和建置快取都存在單一個磁碟映像檔 Docker.raw 裡,所以你每次 pull 和 build,它就跟著變大。執行 docker system df 看看是什麼在用這些空間,再用下面的 prune 指令移除不用的容器、映像檔和建置快取;卷宗留到最後處理,因為裡面存著資料。

先說清楚:本站介紹的 Mac App WTMemory 刻意不清理 Docker 資料。Docker 自己的指令才是正確的工具,這篇教學就是介紹它們。WTMemory 只能顯示 Docker 的記憶體與 CPU,以及磁碟上資料夾的大小。

Docker 在 Mac 上把資料存在哪裡?

磁碟映像檔預設位於:

~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

如果你搬過它,Docker Desktop 會在 Settings > Resources > Advanced > Disk image location 顯示目前位置。Linux 虛擬機裡的所有東西,包括映像檔、容器、具名卷宗和建置快取,都存在這一個檔案裡。你無法像一般資料夾那樣在 Finder 中瀏覽它。

Docker.raw 實際上有多大?

Docker.raw 是稀疏檔案。Finder 和某些工具回報的是它的最大大小,而不是實際佔用的磁碟空間。Docker 官方的 Mac FAQ 建議這樣檢查:

cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw

第一個數字是實際的磁碟用量;同一行後面的大小欄位是這個檔案最多能長到多大。如果 Finder 說 64 GB,但 ls -klsh 只回報幾 GB,代表你其實沒有少掉那麼多空間。

怎麼查看 Docker 把空間用在哪裡?

在 Docker 執行中時使用:

docker system df
docker system df -v

第一個指令會印出 Images、Containers、Local Volumes 和 Build Cache 的總計,並有一欄 RECLAIMABLE(可回收)。-v 版本會列出每個映像檔、容器和卷宗的大小,讓你看出哪個卷宗是 20 GB 的資料庫,或哪個映像檔是你 pull 過一次就忘了的。

每個 prune 指令會刪除什麼?

以下說明依據 Docker 的 pruning 文件,於 2026年10月13日查證。除非加上 -f,每個指令都會要求確認。

指令移除的內容風險
docker container prune所有已停止的容器。低。寫在已停止容器的檔案系統中(而非卷宗中)的任何東西都會消失。
docker image prune只有懸置映像檔(沒有標籤且沒在用)。低。
docker image prune -a所有沒有被現有容器使用的映像檔。中。下次要重新下載或重新建置。
docker buildx prune 或 docker builder prune懸置的建置快取。加上 --all 則是全部建置快取。低。之後的建置會比較慢。
docker system prune已停止的容器、不用的網路、懸置映像檔和不用的建置快取。不會動到卷宗。低到中。
docker system prune -a上述全部,再加上所有不用的映像檔,而不只是懸置的。中。
docker system prune --volumes另外移除不用的匿名卷宗。如果有匿名卷宗存著你需要的資料,風險就高。
docker volume prune不用的匿名卷宗。具名卷宗不受影響。對存有資料的匿名卷宗來說風險高。
docker volume prune -a所有不用的卷宗,包括具名卷宗。最高。本機資料庫就是這樣消失的。

卷宗警告:卷宗「沒在用」只代表目前沒有容器掛載它。如果你對一個有 Postgres、MySQL 或 MongoDB 服務的專案執行了 docker compose down,它的卷宗雖然沒在用,裡面仍存著資料庫。prune 卷宗之前,請先執行 docker volume ls,並備份所有你在乎的東西。

釋放 Docker 磁碟空間的安全順序是什麼?

  1. 執行 docker system df -v,記下大型項目。
  2. 執行 docker container prune 移除已停止的容器。
  3. 執行 docker buildx prune 清除懸置的建置快取;在常常 build 的電腦上,這往往是最大又最快的收穫。
  4. 如果你不介意重新 pull 映像檔,執行 docker image prune -a。
  5. 逐一檢查卷宗,用 docker volume rm <name> 移除特定卷宗,而不是盲目地 prune。
  6. 再用 ls -klsh 檢查一次 Docker.raw 的實際大小。

Docker 的 Mac FAQ 提到,在執行中的容器內刪除檔案時,空間不一定會自動釋放,所以檔案可能不會馬上縮小。

怎麼限制 Docker.raw 最多能長多大?

打開 Docker Desktop,前往 Settings > Resources > Advanced,調整 Disk usage limit,再選擇 Apply。Docker 的 FAQ 警告,調低最大大小會刪除目前的磁碟映像檔,所有容器和映像檔都會消失。請先備份卷宗。在同一個區塊中,你可以使用 Docker Desktop 裡的 Browse 選項,把磁碟映像檔搬到更大的磁碟。不要用 Finder 搬。

同一個 Resources 區塊也能設定虛擬機的記憶體上限。如果 Docker 吃的是大量 RAM 而不是磁碟,就調低這個上限;請參考如何查看 Mac 記憶體使用量。

OrbStack 和 Colima 呢?

OrbStack 和 Colima 是在 Mac 上執行 Docker 容器的替代方案。它們把資料存在各自的位置,而不是 Docker Desktop 的 Docker.raw,但同樣的 docker system df 和 prune 指令,會作用在你的 docker CLI 目前指向的那個引擎上。用 docker context ls 查看是哪一個,磁碟設定則請參考各工具自己的文件。

WTMemory 能清理 Docker 資料嗎?

不能,這是刻意的設計。WTMemory 的清理範圍涵蓋支援的 AI 模型資料夾和開發者快取,例如 Xcode DerivedData,以及 npm、pnpm、Yarn、Bun、Cargo 和 Gradle 快取。Docker 虛擬機資料被排除在外,因為裡面可能有資料庫和無法重建的成果,而且只有 Docker 知道哪些部分可以安全移除。

它可以免費做到的事:

WTMemory 是原生的 macOS 選單列 App,支援 macOS 12 以上版本,Apple Silicon 與 Intel 皆可使用。檢視功能免費;Pro 一次付清 $9 USD,最多可用於 3 台 Mac,並提供 7 天試用。

下載 WTMemory

常見問題

Docker 在 Mac 上把資料存在哪裡?

Docker Desktop 把 Linux 映像檔、容器、卷宗和建置快取都放在一個磁碟映像檔裡,預設位於 ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw。確切位置顯示在 Settings > Resources > Advanced。

刪除 Docker.raw 安全嗎?

不要在 Docker 執行時從 Finder 刪除它。刪除或重置它會移除所有映像檔、容器和卷宗,包括卷宗裡的資料庫資料。請改用 prune 指令,或 Docker Desktop 自己的疑難排解與重置選項。

docker system prune 會刪除卷宗嗎?

預設不會。docker system prune 會移除已停止的容器、不用的網路、懸置映像檔和不用的建置快取。加上 --volumes 還會移除不用的匿名卷宗。具名卷宗只有 docker volume prune -a 或用 docker volume rm 刪除時才會被移除。

為什麼 prune 之後 Docker.raw 還是很大?

Docker.raw 是稀疏檔案,所以 Finder 和某些工具可能顯示它的最大大小,而不是實際使用的空間。用 ls -klsh 查看實際用量。Docker 也提到,在執行中的容器內刪除檔案時,空間不一定會自動釋放。

WTMemory 能清理 Docker 資料嗎?

不能。WTMemory 刻意把 Docker 虛擬機資料排除在清理範圍外,因為裡面可能有資料庫和其他無法重建的資料。它可以在 Running Apps 中顯示 Docker 的記憶體和 CPU,唯讀的 Disk Explorer 也能顯示資料夾大小。

資料來源(2026年10月13日查證):Docker Desktop for Mac FAQ、Prune unused Docker objects、Docker Desktop settings。

相關教學

完整的 WTMemory 使用說明與授權協助