[{"data":1,"prerenderedAt":532},["ShallowReactive",2],{"blog-article-\u002Ftw\u002Fblog\u002Fdocker-disk-space-cleanup":3},{"id":4,"title":5,"author":6,"body":7,"category":513,"cover":514,"coverAlt":515,"description":516,"draft":517,"extension":518,"meta":519,"navigation":520,"path":521,"publishedAt":522,"seo":523,"stem":524,"tags":525,"topics":528,"translationKey":530,"updatedAt":522,"__hash__":531},"articles_tw\u002Ftw\u002Fblog\u002Fdocker-disk-space-cleanup.md","Docker 占用太多磁碟空間：清理建置快取，保留映像檔與資料磁碟區","Harry",{"type":8,"value":9,"toc":506},"minimark",[10,30,38,43,46,57,63,83,86,106,121,133,136,139,146,153,160,163,171,238,246,249,252,258,296,299,337,345,351,373,387,393,409,412,415,432,435,455,462,470,488,496,502],[11,12,13,17,18,22,23],"p",{},[14,15,16],"strong",{},"如果 Docker 的空間主要被建置快取占用，可以先清理未使用的快取，保留映像檔、容器、網路與資料磁碟區。"," Docker 的 ",[19,20,21],"code",{},"builder prune"," 就是針對建置快取的清理命令。不過，清理後下次建置可能需要重新下載相依套件或產生資料；「目前未使用」不代表「以後用不到」。",[24,25,29],"a",{"href":26,"rel":27},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fbuilder\u002Fprune\u002F",[28],"nofollow","Docker 建置快取清理說明",[11,31,32,33,37],{},"想先查看這部分占用，再決定是否清理，可以用 ",[24,34,36],{"href":35},"\u002Ftw","MangoDisk"," 的深度清理。它透過本機預設的 Docker context 讀取快取資訊，在介面中顯示預估大小；由你選擇是否執行，再交給 Docker 官方命令清理。",[39,40,42],"h2",{"id":41},"用-mangodisk-查看-docker-建置快取","用 MangoDisk 查看 Docker 建置快取",[11,44,45],{},"Docker 的命令列本來就能查看與清理快取。MangoDisk 將這兩步整合到圖形介面，讓你先確認預估大小與清理影響，再決定是否勾選，不必記住各種 prune 命令的參數與範圍。",[11,47,48],{},[49,50],"img",{"alt":51,"decoding":52,"height":53,"loading":54,"src":55,"width":56},"MangoDisk Windows 繁體中文版深度清理介面，可查看清理分類與預估大小","async",1171,"lazy","https:\u002F\u002Fassets.mangodisk.app\u002Fimages\u002Fscreenshots\u002Fwindows\u002Ftw\u002Flight-01-deep-cleanup.jpg",1746,[11,58,59],{},[60,61,62],"em",{},"上圖為深度清理介面示例，並非下文 Docker 檢查的截圖；實際項目依本機掃描結果而定。",[11,64,65,66,70,71,74,75,78,79,82],{},"開啟",[24,67,69],{"href":68},"\u002Ftw\u002Fdocs\u002Ffeatures\u002Fdeep-clean","深度清理","，執行",[14,72,73],{},"標準掃描","，在",[14,76,77],{},"容器快取","中查看 ",[14,80,81],{},"Docker 建置快取","。這個項目預設不勾選，單純掃描不會刪除快取。",[11,84,85],{},"準備清理時：",[87,88,89,93,96],"ol",{},[90,91,92],"li",{},"等正在執行的建置工作結束，保持 Docker 服務運作；使用 Docker Desktop 時，不要先結束它。",[90,94,95],{},"查看建置快取的預估大小，確認可以接受之後重新建置或下載資料的成本。",[90,97,98,99,102,103,105],{},"選擇",[14,100,101],{},"全部取消選取","，只勾選 ",[14,104,81],{},"，核對清理計畫後再確認執行。",[11,107,108,111,112,115,116],{},[14,109,110],{},"這個項目會保留映像檔、容器、網路與資料磁碟區，但無法依個別專案選取快取。"," 目前的實作會執行 ",[19,113,114],{},"docker --context default builder prune --all --force","，清理預設 context 下由 Docker 判定為未使用的建置快取。不能把它當成「只清某個舊專案」的功能。",[24,117,120],{"href":118,"rel":119},"https:\u002F\u002Fgithub.com\u002Fharry0703\u002FMangoDisk\u002Fblob\u002Fv1.1.7\u002Fsrc-tauri\u002Fcrates\u002Fmangodisk-core\u002Fsrc\u002Fcleanup\u002Fcleaners\u002Fdocker_build_cache.rs",[28],"MangoDisk v1.1.7 的 Docker 清理實作",[11,122,123,124,127,128],{},"context 是 Docker 用來設定服務連線目標的組態。MangoDisk 固定使用 ",[19,125,126],{},"default","，不會跟著目前選取的其他 context 切換；如果這個目標無法連線，就無法正常預覽。其他本機 context、自訂 Buildx builder 與遠端服務需要另外確認，不在這個項目的涵蓋範圍內。",[24,129,132],{"href":130,"rel":131},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fmanage-resources\u002Fcontexts\u002F",[28],"Docker context 說明",[11,134,135],{},"Docker 必須已安裝且服務可連線，才能提供快取資訊並執行清理。沒有掃描結果時，先確認服務狀態；不能因此認定 Docker 沒有占用磁碟空間。",[39,137,138],{"id":138},"預估大小不是實際釋放的空間",[11,140,141,142,145],{},"MangoDisk 預覽時，只加總 Docker 標記為",[14,143,144],{},"未使用、未共用且大小不為零","的建置快取記錄。共用資料不列入這項估算，也不能直接把所有映像檔與快取的顯示大小相加。",[11,147,148,149,152],{},"2026 年 10 月 9 日，在 macOS 15.7.7 上使用 Docker 29.1.3 進行唯讀檢查，取得 134 筆建置快取記錄。其中 56 筆符合上述條件，依 Docker 顯示大小加總約 ",[14,150,151],{},"11.6 GB","。這是清理前的近似估算，沒有執行刪除，也不表示已釋放 11.6 GB。",[11,154,155,156,159],{},"預覽數字用來判斷是否值得清理，不是一份能逐筆勾選的快取清單。實際執行時，Docker 會依 ",[19,157,158],{},"builder prune --all"," 的規則決定可移除的未使用快取；主機最終增加多少可用空間，仍要在清理後確認。",[39,161,162],{"id":162},"分清快取與需要保留的資料",[11,164,165,166],{},"建置快取保存可重複利用的步驟結果與相關資料，減少之後建置時的重複工作。專案、相依套件或建置方式改變，快取也會跟著變化；快取很大，不一定是 Docker 出了問題。",[24,167,170],{"href":168,"rel":169},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fcache\u002F",[28],"Docker 建置快取說明",[172,173,174,190],"table",{},[175,176,177],"thead",{},[178,179,180,184,187],"tr",{},[181,182,183],"th",{},"內容",[181,185,186],{},"用途",[181,188,189],{},"本文的處理方式",[191,192,193,205,216,227],"tbody",{},[178,194,195,199,202],{},[196,197,198],"td",{},"建置快取",[196,200,201],{},"重複利用建置步驟與相關資料",[196,203,204],{},"能接受重新建置成本時，視需要清理未使用的部分",[178,206,207,210,213],{},[196,208,209],{},"映像檔",[196,211,212],{},"提供建立容器所需的執行環境",[196,214,215],{},"保留，不隨建置快取一起清理",[178,217,218,221,224],{},[196,219,220],{},"容器",[196,222,223],{},"執行中或已停止的應用程式實例，可能仍有需要的資料",[196,225,226],{},"保留；停止不等於可以刪除",[178,228,229,232,235],{},[196,230,231],{},"資料磁碟區（volume）",[196,233,234],{},"持續保存資料庫、上傳檔案等資料",[196,236,237],{},"保留，不當成快取處理",[11,239,240,241],{},"資料磁碟區的生命週期獨立於容器。即使目前沒有容器使用它，裡面也可能存著需要保留的資料，不能只憑「未使用」就刪除。",[24,242,245],{"href":243,"rel":244},"https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fstorage\u002Fvolumes\u002F",[28],"Docker 磁碟區說明",[11,247,248],{},"建置快取是否值得留下，也取決於接下來的工作。如果近期要反覆建置同一個專案，或需要離線作業，通常保留快取更合適。磁碟空間確實不足，而且可以重新取得相依套件時，再考慮清理。",[39,250,251],{"id":251},"用官方命令查看與清理",[11,253,254,255,257],{},"習慣命令列的使用者可以直接檢查同一個目標。以下命令明確指定 ",[19,256,126],{},"，與前述 MangoDisk 項目一致。先查看連線設定，確認目標是本機 Docker 服務：",[259,260,265],"pre",{"className":261,"code":262,"language":263,"meta":264,"style":264},"language-sh shiki shiki-themes github-light github-dark","docker context ls\ndocker context inspect default\n","sh","",[19,266,267,283],{"__ignoreMap":264},[268,269,272,276,280],"span",{"class":270,"line":271},"line",1,[268,273,275],{"class":274},"sScJk","docker",[268,277,279],{"class":278},"sZZnC"," context",[268,281,282],{"class":278}," ls\n",[268,284,286,288,290,293],{"class":270,"line":285},2,[268,287,275],{"class":274},[268,289,279],{"class":278},[268,291,292],{"class":278}," inspect",[268,294,295],{"class":278}," default\n",[11,297,298],{},"確認目標後，查看空間占用，必要時再展開詳細資訊。這些命令只會查詢，不會刪除：",[259,300,302],{"className":261,"code":301,"language":263,"meta":264,"style":264},"docker --context default system df\ndocker --context default system df --verbose\n",[19,303,304,321],{"__ignoreMap":264},[268,305,306,308,312,315,318],{"class":270,"line":271},[268,307,275],{"class":274},[268,309,311],{"class":310},"sj4cs"," --context",[268,313,314],{"class":278}," default",[268,316,317],{"class":278}," system",[268,319,320],{"class":278}," df\n",[268,322,323,325,327,329,331,334],{"class":270,"line":285},[268,324,275],{"class":274},[268,326,311],{"class":310},[268,328,314],{"class":278},[268,330,317],{"class":278},[268,332,333],{"class":278}," df",[268,335,336],{"class":310}," --verbose\n",[11,338,339,340],{},"比較映像檔、容器、資料磁碟區與建置快取的占用。如果資料磁碟區才是最大的一部分，清理建置快取無法解決主要問題，應先確認其中存放的資料。",[24,341,344],{"href":342,"rel":343},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fsystem\u002Fdf\u002F",[28],"Docker 空間占用命令說明",[11,346,347,350],{},[14,348,349],{},"確認可以移除這個目標下所有未使用的建置快取，並接受重新建置的成本後","，再執行：",[259,352,354],{"className":261,"code":353,"language":263,"meta":264,"style":264},"docker --context default builder prune --all\n",[19,355,356],{"__ignoreMap":264},[268,357,358,360,362,364,367,370],{"class":270,"line":271},[268,359,275],{"class":274},[268,361,311],{"class":310},[268,363,314],{"class":278},[268,365,366],{"class":278}," builder",[268,368,369],{"class":278}," prune",[268,371,372],{"class":310}," --all\n",[11,374,375,378,379,382,383],{},[19,376,377],{},"--all"," 會處理所有未使用的建置快取，不只懸空快取（dangling cache）。上面的手動命令沒有加 ",[19,380,381],{},"--force","，會保留 Docker 本身的確認提示。清理不經過資源回收筒或垃圾桶，無法從其中還原快取；之後建置時需要重新產生相關資料。",[24,384,386],{"href":26,"rel":385},[28],"Docker builder prune 參數說明",[11,388,389,390,392],{},"MangoDisk 在應用程式中確認清理後使用 ",[19,391,381],{}," 執行，因此不會另外跳出終端機提示。目前這個項目沒有依快取時間篩選或設定保留容量的選項；需要這些控制時，可參考 Docker 官方參數另行處理。",[11,394,395,396,399,400,403,404],{},"只想清建置快取時，不需要改用 ",[19,397,398],{},"system prune","。它還會處理已停止的容器、未使用的網路與映像檔；加上 ",[19,401,402],{},"--volumes"," 後，也會涉及未使用的匿名磁碟區。兩者範圍不同，不能直接替換。",[24,405,408],{"href":406,"rel":407},"https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fsystem\u002Fprune\u002F",[28],"Docker system prune 範圍說明",[39,410,411],{"id":411},"清理後確認快取與磁碟占用",[11,413,414],{},"完成後，在相同 context 下再次查看：",[259,416,418],{"className":261,"code":417,"language":263,"meta":264,"style":264},"docker --context default system df\n",[19,419,420],{"__ignoreMap":264},[268,421,422,424,426,428,430],{"class":270,"line":271},[268,423,275],{"class":274},[268,425,311],{"class":310},[268,427,314],{"class":278},[268,429,317],{"class":278},[268,431,320],{"class":278},[11,433,434],{},"先比較建置快取的大小，再查看作業系統的可用磁碟空間。之後再次建置，Docker 可能重新執行部分步驟、下載相依套件並產生快取，這是正常行為。不必為了讓數字一直很小，每次建置完就清空。",[11,436,437,438,441,442,445,446,449,450],{},"使用 Mac 版 Docker Desktop 時，還要分清",[14,439,440],{},"磁碟映像檔的容量上限","與",[14,443,444],{},"實際占用","。Docker Desktop 將 Linux 容器與映像檔存放在磁碟映像檔中，有些工具顯示的是最大容量；可到 ",[14,447,448],{},"Settings → Resources → Advanced"," 查看實際占用與容量上限。",[24,451,454],{"href":452,"rel":453},"https:\u002F\u002Fdocs.docker.com\u002Fdesktop\u002Ftroubleshoot-and-support\u002Ffaqs\u002Fmacfaqs\u002F",[28],"Docker Desktop Mac 儲存空間說明",[11,456,457,458,461],{},"不要把 ",[19,459,460],{},"Docker.raw"," 當成一般快取檔案刪除，也不要只為了縮小顯示數字就降低磁碟映像檔的容量上限。Docker 官方說明，降低上限會刪除現有磁碟映像檔，造成容器與映像檔遺失。這已超出本文只清建置快取的範圍。",[11,463,464,465,469],{},"建置快取已經不大，磁碟卻仍然很滿時，可以用 MangoDisk 的",[24,466,468],{"href":467},"\u002Ftw\u002Fdocs\u002Ffeatures\u002Fdisk-analysis","磁碟空間分析","找出其他大型資料夾。占用可能來自原始素材、舊專案的相依套件，或其他工具的建置產物，應依各自用途處理，不必反覆清同一項 Docker 快取。",[11,471,472,473,477,478,482,483,487],{},"其他開發工具可參考 ",[24,474,476],{"href":475},"\u002Ftw\u002Fblog\u002Fclean-npm-cache","npm 快取與 node_modules 的差別","、",[24,479,481],{"href":480},"\u002Ftw\u002Fblog\u002Fcargo-cache-vs-target-folder","Cargo cache 與 target 資料夾的差別","，或從",[24,484,486],{"href":485},"\u002Ftw\u002Fblog\u002Ftopics\u002Fdeveloper-cleanup","開發者磁碟清理指南","繼續排查。",[11,489,490,491,495],{},"本文產品行為以 MangoDisk v1.1.7 為準。執行前可閱讀",[24,492,494],{"href":493},"\u002Ftw\u002Fdocs\u002Fsafety","安全清理指南","，確認清理計畫與需要保留的資料。",[11,497,498,501],{},[24,499,500],{"href":35},"下載 MangoDisk","，先查看 Docker 建置快取的預估大小，再決定是否值得清理。映像檔、容器與資料磁碟區繼續保留，是否接受下次建置的成本，由你判斷。",[503,504,505],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":264,"searchDepth":285,"depth":285,"links":507},[508,509,510,511,512],{"id":41,"depth":285,"text":42},{"id":138,"depth":285,"text":138},{"id":162,"depth":285,"text":162},{"id":251,"depth":285,"text":251},{"id":411,"depth":285,"text":411},"開發者磁碟清理","\u002Fimages\u002Fblog\u002Fdocker-disk-space-cleanup.webp","橘色刷子掃走 Docker 藍色鯨魚旁的灰色建置快取方塊，映像檔、容器與資料磁碟區則保留完整","用 MangoDisk 查看 Docker 建置快取的預估大小，在保留映像檔、容器與資料磁碟區的前提下清理未使用快取，並了解重新建置與磁碟空間回收的差別。",false,"md",{},true,"\u002Ftw\u002Fblog\u002Fdocker-disk-space-cleanup","2026-10-09T10:15:00+08:00",{"title":5,"description":516},"tw\u002Fblog\u002Fdocker-disk-space-cleanup",[526,81,527],"Docker 磁碟空間","Docker Desktop",[529],"developer-cleanup","article-docker-disk-space-cleanup","k13VObuxK7XjgO-Rs5mdYw1UW7GtNeER7rI8tdf-0RE",1792636702332]