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 磁碟空間的安全順序是什麼?
- 執行
docker system df -v,記下大型項目。 - 執行
docker container prune移除已停止的容器。 - 執行
docker buildx prune清除懸置的建置快取;在常常 build 的電腦上,這往往是最大又最快的收穫。 - 如果你不介意重新 pull 映像檔,執行
docker image prune -a。 - 逐一檢查卷宗,用
docker volume rm <name>移除特定卷宗,而不是盲目地 prune。 - 再用
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 知道哪些部分可以安全移除。
它可以免費做到的事:
- Running Apps(執行中的 App)會把 Docker Desktop 和你的其他 App 一起列出,附上記憶體、CPU、PID 和連接埠。每一列是一個處理程序,所以 Docker 的虛擬機和輔助處理程序實際用量可能比那一列顯示的多;想看完整情況請用「活動監視器」。
- Disk Explorer(磁碟瀏覽器)是唯讀的。把它指向像
~/Library/Containers這樣的資料夾,就能比較資料夾大小、找出最大的檔案,再到 Finder 中顯示。它絕不會刪除任何東西。
WTMemory 是原生的 macOS 選單列 App,支援 macOS 12 以上版本,Apple Silicon 與 Intel 皆可使用。檢視功能免費;Pro 一次付清 $9 USD,最多可用於 3 台 Mac,並提供 7 天試用。
常見問題
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。