解除安裝 Docker Desktop,先保留需要的資料卷
Docker Desktop 不是單一應用程式。它包含圖形介面、背景虛擬機、連到 /usr/local/bin 的一組命令列工具,以及會悄悄長到數十 GB 的磁碟映像。拖到垃圾桶只會移除其中的圖形介面,其餘都還在。
它也跟多數解除安裝相反:執行官方解除安裝程式才是會摧毀資料的那一步,不是之後的清理。以下是能保住資料的順序,以及如何區分可丟棄的殘留與你會想保留的東西。
開始刪除支援檔案前,先對照 Docker Desktop 的現行官方解除安裝說明。如果廠商提供自己的解除安裝程式或 App 內命令,應先走那條路徑,再處理能確認擁有者的殘留。
解除安裝會摧毀 container、image 與 volume
Docker 明確說明,解除安裝 Docker Desktop 會刪除本機容器、映像、資料卷和其他 Docker 資料,不經垃圾桶。確認對話框不是備份,也不是還原機制。
只有遠端映像或完整建置來源仍在,映像與容器才可以重新取得或建立。資料卷和容器可寫層都可能保存唯一資料,包括 Postgres 或 MySQL 的本機資料庫,不能只備份有名稱的資料卷。先檢查實際儲存位置,再決定保留什麼。
在做任何事之前,先列出目前有什麼:
docker volume ls
重要的資料卷要在解除安裝前備份。資料庫優先使用自身的匯出或備份工具;下面的檔案打包方式要先停止向資料卷寫入的容器,否則備份可能不一致,也要測試能否還原:
docker run --rm -v <volume>:/from -v "$PWD":/to alpine \
tar czf /to/<volume>.tgz -C /from .
從未 push 過、自己建的東西也一樣。docker image ls 會顯示本機有什麼;若不在 registry 裡,就只存在這台 Mac 上。
若只是為了空間,你可能根本不必解除安裝
Docker 的本機引擎資料主要放在虛擬磁碟映像裡。只是要騰空間,可以保留 Docker,先用 docker system df 看各項大小,再按需清理。prune 仍是無法復原的刪除,不是可逆的替代方案,範圍與磁碟映像的回收方式見 在 Mac 上清理 Docker 且不遺失資料。
若你是要徹底移除 Docker,請繼續。
使用 Docker 自家的解除安裝程式
Docker 內附解除安裝程式,做的不只是刪掉套件。它會卸載背景服務,並移除用 Finder 拖曳後仍會留下的命令列符號連結。
從應用程式:開啟 Docker Desktop,點右上角的 Troubleshoot 圖示,選 Uninstall 並確認。從終端機:
/Applications/Docker.app/Contents/MacOS/uninstall
接著把 Docker 從「應用程式」移到垃圾桶。
Docker 文件只說明解除安裝時存取容器內特定中繼資料檔案出現的 operation not permitted 可以忽略,不能把所有同名錯誤都視為成功。先核對錯誤路徑與官方範例,其他路徑或執行失敗仍要查明原因。
還剩下什麼,以及各自是什麼
解除安裝程式跑完後,仍有部分資料夾會留下。Docker 點名兩個:
~/Library/Group Containers/group.com.docker
~/.docker
兩者性質不同,而差異正是重點。
~/.docker 保存 context、用戶端設定,以及映像倉庫驗證或憑證輔助工具的設定,密碼本身可能由其他儲存機制管理。若之後重裝 Docker,或改用 Colima、Rancher Desktop、OrbStack,先備份並檢查這些設定,刪除後可能需要重設連線和登入。
~/Library/Containers/com.docker.docker 是應用程式的 container 資料夾,虛擬機與它的磁碟映像 Docker.raw 都在裡面,數十 GB 就在這裡,上面提到的 operation not permitted 受保護資料夾也是它。~/Library/Group Containers/group.com.docker 保存的是 Docker Desktop 的設定,不是磁碟映像。既然已接受 container 與 volume 都沒了,這兩處就是值得移除的部分。
除了這兩處,Docker 還可能在 Library 下留下快取、日誌、偏好設定與 App 狀態。確認相關工作已停止、設定不再需要、日誌也不用排錯後再處理,不要只憑檔名含有 docker 就刪除。
確認它真的不在了
兩項檢查。第一,確認沒有東西還在跑:
pgrep -fl -i docker
第二,確認命令列工具已解除連結:
which docker docker-compose
兩者都應沒有輸出。若 docker 仍解析得到,多半是另外用 Homebrew 裝的 CLI,那是不同套件,依設計會在 Docker Desktop 解除安裝後留下。brew list | grep docker 可以確認。
更快一次看清全部
手動做法可行,但前提是已知道哪些路徑存在、其中哪些是重要資料。這正是多數指南略過的部分,也是出錯時真正傷人的地方。
Mole 會列出能辨識的相關檔案,依類型顯示位置與大小。先核對資料夾內容,取消勾選要保留的項目;解除安裝時選取的檔案會移到垃圾桶,但無法還原先前已被 Docker 官方解除安裝程式刪除的資料。
重裝後會回來的內容
有遠端映像或完整建置來源,才能重新下載或建置映像,再建立容器。尚未推送的自建映像、容器可寫層裡的變更和資料卷都可能是唯一副本,不會因重裝就回來,解除安裝前要逐項備份。
保留 ~/.docker 有助於保留 context 與用戶端設定,但登入能否繼續使用還取決於憑證儲存方式與有效期。刪除它也可能失去自訂設定,不只是重新登入一次。
虛擬磁碟映像會以空白狀態重建。你再次 pull 映像時它又會長大,所以解除安裝釋出的數十 GB,若你重裝並恢復平常使用,多半只是暫時的。要長期壓低這個數字,靠的是 docker system prune,不是反覆重裝。