一篇分析3大優勢:docker prune 如何快速釋放磁碟空間、簡化系統管理、提升容器效能

喺2026年嘅今日,Docker 依然係容器技術嘅主流,但隨住開發同測試頻繁進行,系統好容易積存大量無用嘅容器、懸空映像(dangling images)、網路同磁碟區,白白佔用寶貴嘅磁碟空間。呢個時候,『docker prune』系列命令就成為每位開發者同系統管理員必須掌握嘅清理利器。本文將為你深度剖析使用 docker prune 嘅三大核心優勢:第一,佢能夠一鍵式快速釋放被無用資料佔據嘅磁碟空間,尤其係配合『docker system prune -a』或『--volumes』參數時,清理更徹底;第二,命令極其簡化Docker環境嘅日常維護工作,無需再手動逐個查找同刪除資源,大幅提升管理效率;第三,保持系統整潔有助於提升整體容器嘅運行效能同穩定性,避免舊有殘留檔案導致嘅衝突問題。我哋會詳細講解基本指令同進階參數嘅應用場景,等你可以安全又高效地打理好你嘅Docker工作環境。
docker prune - Docker

AboutDockerProfessional illustrations

Docker Prune 指令詳解

好啦,各位開發者同埋系統管理員,今次我哋就深入傾下 Docker Prune 呢個指令。喺 2026 年嘅今日,無論你係用緊 Docker Desktop 嘅圖形介面,定係習慣喺 Terminal 打 Docker CLI 指令,只要你用 Docker 做開發或者部署,遲早都會遇到一個頭痛問題:點解我部機嘅 硬碟空間 無啦啦唔見咗咁多?呢個時候,你就需要認識 Docker Prune 呢個強大嘅 系統清理 工具。簡單嚟講,佢就係 Docker 內置嘅一個「清道夫」,專門幫你清理系統入面嗰啲 未使用嘅資源,例如停止咗嘅 容器、冇任何容器引用嘅 懸掛鏡像、冇用嘅 網絡 同埋 ,從而幫你 回收 寶貴嘅 磁碟空間

首先,我哋要搞清楚 Docker Prune 唔係一個單一指令,而係一個指令家族,佢可以好精準咁針對唔同類型嘅 Docker objects 去做 資源釋放。最基本亦都最常用嘅,就係 docker system prune。你喺命令行打呢句嘢,佢就會一次過問你係咪要清理 懸掛鏡像、停止咗嘅 容器,同埋冇用嘅 網絡。呢個係一個快速 磁盤空間回收 嘅好方法,尤其係你做完一輪測試,產生咗一大堆臨時 容器映像 之後。不過要小心,呢個指令預設唔會郁你啲 ,因為 通常入面有數據,好似資料庫檔案咁,誤刪就好大鑊。所以,docker system prune 可以話係日常 維護最佳實踐 入面,一個安全又有效嘅第一步。

當然,有時我哋需要更精細嘅控制。例如,你只想清理 鏡像 相關嘅垃圾。咁你就可以用 docker image prune。呢個指令嘅威力在於佢可以幫你清走所有「懸掛」狀態嘅 映像。咩係 懸掛鏡像 呢?即係嗰啲已經冇任何 容器(無論係運行中定已停止)再引用佢嘅舊版 映像。當你不停咁 build 新 鏡像,又唔手動清理舊嗰啲,呢啲 懸掛鏡像 就會好似倉庫嘅廢料一樣,不斷蠶食你嘅 磁碟空間。用 docker image prune 就可以專注處理呢部分,而唔影響你嘅 容器 或者 網絡。如果你想再進取啲,可以加上 -a 參數,連所有冇被任何容器使用嘅 映像(即係連有 tag 名但冇人用嘅都刪)都清埋,不過用之前一定要睇清楚 list 出嚟嘅項目,避免誤刪重要基礎鏡像。

講到 容器 嘅清理,雖然我哋可以用 docker container rm 去逐個刪,但對於大量已停止嘅 容器docker container prune 就係批量處理嘅神器。一執行,所有狀態係「Exited」嘅 容器 就會被清走,瞬間釋放空間。至於 網絡,同樣有對應嘅 docker network prunedocker volume prune。特別係 嘅清理,真係要打醒十二分精神,因為入面嘅數據係持久化嘅,刪咗就好難救。建議喺執行 docker volume prune 之前,先用 docker volume ls 睇下有邊啲係真係冇用,或者用 --filter 參數去指定清理條件,做 自動化清理 腳本時尤其要注意呢點。

對於進階用家,特別係有使用 Docker Compose 去管理多容器應用嘅朋友,清理工作可以更有策略。因為 Docker Compose down 咗個 project 之後,相關嘅 容器網絡 通常會跟住移除,但 build 出嚟嘅 映像 同埋用 named volumes 定義嘅 就好可能留低。呢個時候,我哋就需要結合唔同嘅 prune 指令去做全面 系統維護。一個好習慣係,定期檢查 Docker 整體嘅磁碟使用情況,你可以用 docker system df 呢個指令,佢會好似睇檔案總管咁,清晰列出 映像容器網絡 分別用咗幾多空間,當中有幾多係可以回收嘅 未使用數據,咁你就可以有數據支持下,決定行邊一個 prune command 去做 資源回收

最後提多個小貼士,Docker Engine 本身亦提供一啲參數去幫手自動清理,但對於大部分香港嘅開發者嚟講,手動或者用定時腳本執行 prune 指令已經夠用。關鍵係要將 Docker Prune 視為 儲存空間優化 嘅例行公事,而唔係等到硬碟爆紅先做嘅急救措施。定期執行 docker system prune --volumes(記得 --volumes 係連冇用嘅卷都刪,危險動作!),或者分開執行 image prunecontainer prune,可以令你嘅開發環境保持清爽,Build 新 鏡像 時都唔會因為磁碟空間不足而失敗。總之,理解同善用 Docker Prune 呢個家族指令,絕對係管理好你本地 Docker 環境、保持系統高效嘅必修課。

docker prune - 容器

About容器Professional illustrations

點解要用 Docker Prune?

好啦,咁我哋直接切入核心問題:點解要用 Docker Prune? 簡單嚟講,就係為咗「執屋」。你試諗下,如果你屋企長期唔掉垃圾、唔收拾啲唔用嘅雜物,間屋好快就會冇位行,搵嘢又難。你部開發機或者伺服器上面嘅 Docker 都係一樣道理。當你日日用 Docker CLI 去 build、run、test 同 stop 啲 容器,背後其實會積累大量「數碼垃圾」,包括已經停止咗但未刪除嘅 容器、舊版本或者冇標籤嘅 鏡像(又有人叫 映像容器映像)、仲有啲冇嘢用嘅 網絡。呢啲就係所謂嘅 未使用數據,佢哋會靜靜雞食晒你嘅 磁碟空間

首先,最直接嘅影響就係 硬碟空間 告急。特別係如果你用緊 Docker Desktop 喺 macOS 或 Windows 上面行,預設嘅虛擬磁碟大小有限,好容易就會爆滿。爆滿之後,你連 build 一個新 鏡像 或者 run 一個新 容器 都做唔到,成個開發流程即刻停擺。呢個時候,Docker System Prune 呢個 系統清理 命令就係你嘅救星。佢可以一次過幫你掃描同清理所有 Docker objects 裡面嘅 未使用的資源,進行 資源回收,瞬間釋放出大量 磁盤空間。例如,你喺 terminal 打一句命令,佢就會問你確認,然後幫你清走所有停止咗嘅容器、冇用嘅網絡,同埋 懸掛鏡像(即係冇名冇 tag,冇任何容器依賴嘅中間鏡像)。呢個過程就好似將你個 Docker Engine 嘅儲存空間做一次大掃除,資源釋放 出嚟之後,成個系統行起上嚟都爽手啲。

其次,唔單止係空間問題,更係 系統維護 同管理效率嘅關鍵。想像你團隊用緊 Docker Compose 去管理多個服務,日積月累,你本地環境可能會有幾十個甚至上百個舊容器記錄,或者一堆名為 懸掛鏡像。呢啲雜亂無章嘅記錄,會令到你用 docker ps -a 或者 docker images 檢查時好難睇得清,增加管理難度同出錯機會。定期執行 Docker Prune 相關命令,例如針對性咁用 docker image prune 去清理鏡像,或者用 docker volume prune 清走冇用嘅數據卷,可以幫你保持一個乾淨、清晰嘅開發環境。呢種 維護最佳實踐 對於團隊協作尤其重要,確保大家喺一個一致同乾淨嘅基礎上工作,減少「喺我部機度行到喎」呢類問題。

另外,從 資源回收 同成本角度睇,無論你係喺自己部筆記本定係雲端伺服器上面行 Docker磁碟空間 就係金錢。特別係喺雲環境,額外嘅儲存空間係要計錢嘅。任由 未使用數據 不斷累積,就等於白白浪費金錢。自動化清理 就成為一個精明嘅做法。你可以設定定期任務(例如用 crontab),每星期自動行一次 docker system prune -a --volumes(注意,加 --volumes 會連冇用嘅 都刪,要小心),或者設定 Docker Desktop 入面嘅自動清理選項。咁樣就可以實現 存儲優化,確保資源用得其所,唔會俾一堆數碼垃圾佔住茅坑唔拉屎。

最後,用 Docker Prune 亦都係一種良好嘅習慣,有助於預防問題。有時一啲奇怪嘅 bug 或者衝突,可能就係嚟自於殘留嘅舊 鏡像 層或者 數據。定期 容器清理 可以減少呢類不明所以嘅問題發生。當然,喺用 prune command 之前,一定要確認清楚佢會刪啲乜。例如,docker system prune 預設唔會刪你冇用嘅 ,因為入面可能會有重要數據。而 docker image prune -a 就會刪走所有冇被任何容器引用嘅鏡像,包括可能仲有用嘅中間鏡像,所以要格外留神。總而言之,將 Docker Prune 融入你日常或每週嘅 系統維護 流程入面,絕對係一個令你 Docker 生涯更順暢、更有效率嘅聰明做法。

docker prune - 鏡像

About鏡像Professional illustrations

2026 年清理 Docker 空間攻略

好啦,各位Docker用家,尤其係喺2026年仲用緊Docker Desktop或者Docker Engine嘅朋友,係時候要認真處理下你部機嘅磁碟空間啦。Docker用耐咗,真係會不知不覺食咗你幾十GB甚至過百GB硬碟空間,部機慢到喊都似。呢個段落就同你深入拆解下,點樣用Docker自家嘅工具,做一個全面又精明嘅系統清理,等你可以回收返寶貴嘅磁碟空間

首先,你一定要明咗Docker點樣食你空間。唔單止係你run緊嘅容器,或者你pull落嚟嘅映像咁簡單。Docker系統入面有好多未使用數據,俗稱「垃圾」,主要分幾大類:第一,係已經停止咗運行嘅容器;第二,係冇任何容器用緊嘅懸掛鏡像;第三,係一啲舊版或者tag做容器映像;第四,就係冇被掛載嘅;第五,係冇用嘅網絡配置。呢啲Docker objects加加埋埋,就好似你屋企雜物房嘅陳年舊物,唔清唔知佔咗幾多位。

講到Docker清理嘅核心,就一定係Docker CLI入面個prune家族指令。呢個係資源回收嘅瑞士軍刀。最簡單粗暴但又最有效嘅一招,就係docker system prune。你喺terminal打呢句command,佢會一次過幫你清走所有停止咗嘅容器、所有懸掛鏡像、以及冇用嘅網絡同builder cache。2026年嘅版本,呢個指令已經更加聰明,但用之前真係要諗清楚,因為佢係無差別攻擊。我嘅建議係,如果你好肯定近期嘅工作已經完成,可以先用docker container ls -a睇清楚有冇邊個停止咗嘅容器仲需要保留,冇嘅話先至運行docker system prune。佢會問你確認,你打y就搞掂,即時見到釋放咗幾多磁碟空間,個感覺係非常治癒嘅。

不過,高手嘅系統維護係講求精準打擊,唔係一味大掃除。所以你要識得用其他專門嘅prune command。例如,你想集中清理映像,就可以用docker image prune。默認情況下,佢只會刪除懸掛鏡像。但如果你想清埋所有冇被任何容器使用嘅映像(即係可能你pull咗好多舊版本落嚟),就要加個-a flag。呢個動作可以幫你省返大量空間,因為鏡像通常係最食空間嘅部分。另外,對於嘅清理就好重要,尤其係你玩Docker Compose或者一啲數據庫服務,會產生好多volume。用docker volume prune就可以安全刪除所有冇被掛載嘅溫馨提示:呢度講嘅「安全」係指Docker層面,如果你有重要數據喺入面,當然要自己先備份好。

去到2026年,自動化清理已經成為維護最佳實踐嘅標準配置。你唔使次次都手動打command。你可以設定cron job(Linux/macOS)或者Scheduled Tasks(Windows),定期執行指定嘅prune指令。例如,每星期日凌晨一點自動執行docker system prune -a --volumes --force。留意,加咗--force就唔會再問你確認,適合自動化腳本。但係,用--volumes flag會連都清,真係要確保你嘅應用程式數據有其他地方備份至好。呢種做法可以確保你嘅開發機或伺服器,唔會因為Docker嘅未使用資源而塞爆,長期保持系統健康。

最後,都要提提Docker Desktop用家。去到2026年,GUI界面嘅磁碟管理功能已經好完善。你可以直接打開Docker Desktop,去到Settings或者Resources個部分,通常會有個「Disk utilization」或者「Cleanup」嘅視覺化工具。佢會好清晰列出各類Docker objects佔用咗幾多空間,例如容器幾多、映像幾多、幾多。你可以好似用手機清垃圾咁,剔選你想清理嘅項目,然後一鍵清理。對於唔太熟悉command line嘅朋友,呢個絕對係磁盤空間回收嘅恩物。不過,背後其實都係調用緊我上面講嗰啲Docker CLI指令,所以原理係一樣嘅。

總而言之,Docker系統儲存空間優化係一個持續嘅過程。養成定期檢查同清理嘅習慣,善用docker system prune同佢嘅專門指令,再配合自動化清理策略,就可以徹底解決Docker狂食硬碟空間呢個老大難問題。記住,清理嘅目的唔單止係為咗空間,更係為咗系統嘅穩定同高效,等你可以更暢順咁享受容器化技術帶來嘅便利。

docker prune - 映像

About映像Professional illustrations

Prune 指令基本用法教學

好啦,講到 Docker Prune 指令嘅基本用法,其實就係教你點樣用最簡單直接嘅命令,幫你部機做一次大掃除,清走晒啲用唔著嘅 Docker 物件,釋放返寶貴嘅磁碟空間。好多香港嘅開發者,尤其係用緊 Docker Desktop 或者係 CLI 嘅朋友,初初都唔為意,點解部機越用越慢、硬碟空間無啦啦唔見咗一大截?好大機會就係因為 Docker 喺背後積聚咗大量未使用嘅數據,例如係 build 完又唔要嘅中間層鏡像、停咗好耐嘅舊容器、或者係一啲孤伶伶冇人用嘅懸掛鏡像同網絡設定。呢啲就係所謂嘅「未使用資源」,而 docker system prune 呢個指令,就係你嘅救星。

首先,最基本嘅一招,就係喺 Terminal 打 docker system prune。呢個指令好犀利,佢會一次過幫你掃描同清理幾樣嘢:所有已經停止運行嘅容器、所有冇被任何容器使用嘅懸掛鏡像、以及所有冇被使用嘅 Docker 網絡。佢執行之前會好貼心咁問你確認,等你唔會誤刪緊要嘢。呢個可以話係最全面、最懶人包式嘅系統清理方法,對於日常維護同磁碟空間回收好有用。不過要留意,佢預設係唔會清理你啲 Volume(卷)嘅,因為 Volume 好多時入面裝住重要數據,例如 database 檔案,所以 Docker 唔會亂咁掂佢。

當然,有時我哋想清理得精準啲,唔想一鑊熟,咁就可以用吓啲子指令。例如,如果你淨係想集中清理鏡像,就可以用 docker image prune。呢個指令特別適合成日 build 新鏡像嘅朋友,因為 build 過程會產生好多中間層鏡像,佢哋會食住你唔少磁碟空間。你可以加個 -a 旗標,即係 docker image prune -a,咁佢就會連一啲冇被標記(untagged)或者冇被任何容器引用嘅鏡像都清埋,呢啲就係俗稱嘅「懸掛鏡像」,係磁盤空間回收嘅大目標。又或者,你想清走所有停止咗嘅容器,就可以用 docker container prune,一嘢幫你清空個容器列表,令到個環境清爽晒。

對於進階少少嘅用家,或者係用緊 Docker Compose 做開發嘅團隊,就要識得點樣結合 prune 指令落日常 workflow。例如,你每次用 Docker Compose down 咗個 project 之後,其實可以順手行一次 docker system prune --volumes(注意,加咗 --volumes 就好大膽,會連 volume 都刪!)或者 docker image prune,咁就可以確保唔會留低一大堆為咗測試而 build 出嚟嘅容器映像同數據。不過,用 --volumes 真係要萬二分小心,最好肯定咗 volume 裏面冇重要數據先好做,否則啲 database 資料無咗就喊都無謂。呢啲就係維護最佳實踐裏面好重要嘅一環:自動化清理。

最後提多個小貼士,就係 docker system df 呢個指令。佢唔係用嚟清理,而係用嚟做診斷,等你可以一目了然睇到,你嘅 Docker 目前用咗幾多磁碟空間,啲空間分別被容器、鏡像同卷食咗幾多,仲有幾多係可以透過 prune 回收嘅未使用數據。做系統維護之前,先用 docker system df 睇睇個狀況,再決定用邊個 prune 指令,咁就更加有策略性啦。總括嚟講,Prune 指令家族就係你管理 Docker 磁碟空間、進行資源回收嘅必備工具,熟練運用佢哋,部機就自然長用長有,唔會俾 Docker objects 拖慢晒。

docker prune - 容器映像

About容器映像Professional illustrations

一鍵清理無用 Images 同 Containers

講到 Docker 系統維護,最令開發者頭痛嘅肯定係磁碟空間無啦啦被食曬。尤其係當你日日 build 新鏡像、run 完一堆測試容器又唔記得清理,硬碟好快就會爆滿。喺 2026 年嘅今日,Docker CLI 已經非常成熟,其中一個必學嘅維護技巧就係用 Docker Prune 系列指令,真正做到「一鍵清理」無用嘅 Images 同 Containers,釋放返寶貴嘅磁碟空間。

咁究竟咩係「無用」嘅 Docker objects 呢?首先係懸掛鏡像,即係啲冇 tag 又冇被任何容器使用嘅中間鏡像層,佢哋通常係你 build 鏡像過程中產生嘅「孤兒」。跟住就係已經停止咗但係仲留喺度嘅容器,同埋一啲冇被掛載嘅或者網絡。呢啲未使用數據會靜靜雞累積,尤其係用緊 Docker Desktop 做本地開發,或者部伺服器長行 Docker Engine 做 CI/CD,幾個月唔清理,隨時冇咗幾十 GB 空間都唔出奇。

要高效處理呢個問題,最核心嘅指令就係 docker system prune。呢個指令就好似一個大掃除管家,你一行落去,佢會同你分析同清理幾樣嘢:所有已停止嘅容器、所有冇被任何容器引用嘅懸掛鏡像,以及冇被使用嘅自定義網絡同建造緩存。喺執行之前,佢會好貼心咁問你確認,避免誤刪。如果你想再進取啲,可以加上 -a 參數,連所有冇被容器使用嘅鏡像都清埋(即係連你有 tag 但冇用緊嘅映像都刪),再加 --volumes 就連冇用嘅卷都清理埋。不過要小心,清 volume 係 irreversible 嘅,入面嘅數據會永久消失,所以執行前一定要 double-check。

當然,有時我哋想清理得更有針對性,咁就可以用其他 prune command。例如專清鏡像就用 docker image prune,專清容器就用 docker container prune,管理磁碟空間可以更精準。對於進階使用者,仲可以配合 filter 一齊用,例如你想清理晒所有超過一個月前創建嘅懸掛鏡像,就可以用 filter 指令去篩選,實現自動化清理,將系統維護寫入 cron job 度定時執行,確保系統長期健康。

講到實際操作例子,假設你個團隊用緊 Docker Compose 做開發環境,每次改完 Dockerfile 都會 docker-compose up --build,呢個過程會產生大量舊鏡像同停止咗嘅容器。一個好嘅習慣係,每星期或者每次部署前,都行一次 docker system prune -f(-f 係 force,跳過確認步驟)嚟做資源回收。另外,2026 年嘅 Docker Desktop 圖形介面亦強化咗系統清理功能,有個好清晰嘅介面顯示各類資源(Images、Containers、Volumes、Build Cache)佔用咗幾多空間,仲可以一剔過選擇清理邊類,對於唔太熟命令列嘅朋友嚟講非常方便。

最後要提下維護最佳實踐。雖然一鍵清理好方便,但唔好盲目咁清。建議清理前,先用 docker images、docker ps -a、docker volume ls 等指令睇清楚現狀。對於重要嘅鏡像,最好 push 上 registry 做備份;對於有重要數據嘅卷,一定要確保有備份先好 prune。將 Docker 系統清理 變成一個定期習慣,結合 CLI 同 GUI 工具,先係保持開發環境同生產環境磁碟空間充足、效能暢順嘅不二法門。記住,有效嘅資源釋放存儲優化,正正就係專業 DevOps 同普通用家嘅其中一個分野。

docker prune - 懸掛鏡像

About懸掛鏡像Professional illustrations

點樣安全刪除 Docker Volumes?

講到點樣安全刪除 Docker Volumes,好多香港嘅開發者同系統管理員都會有啲擔心,驚一個唔覺意刪錯咗重要數據,搞到個應用程式行唔到。其實,只要跟住正確嘅步驟同理解清楚背後嘅機制,安全清理 Docker Volumes 絕對唔係一件難事,仲可以幫你回收大量寶貴嘅磁碟空間

首先,你要搞清楚咩係 Docker Volumes 同點解會有「未使用」嘅情況。Docker Volumes 係 Docker 用來持久化儲存數據嘅主要方法,就算你刪除咗個容器,個 Volume 都仲會喺度。問題就嚟啦,當你開發同測試得多,尤其係用 Docker Compose 起完又拆,好容易就會積存一大堆冇容器再連接嘅「孤兒 Volume」。呢啲就係所謂嘅「未使用數據」,佢哋會靜雞雞食咗你好多硬碟空間。所以,定期做 系統清理資源回收系統維護 嘅重要一環。

咁點樣知道有幾多呢啲「孤兒 Volume」呢?最直接就係用 Docker CLI。你可以打 docker volume ls 睇下所有 Volume 嘅清單,但咁樣睇唔出邊啲係有人用緊、邊啲係冇用嘅。要睇得更仔細,可以加埋 -f filter 參數,或者用 docker system df 呢個指令,佢會俾你一個總覽,話你知 Docker 用咗幾多空間,其中 Volumes 佔咗幾多,一眼就知係唔係需要做 磁碟空間回收

好啦,到戲肉啦,點樣 安全刪除?最核心嘅指令就係 docker volume prune。呢個指令屬於 Docker System Prune 功能嘅一部分,專門用嚟清理 未使用的資源。當你執行 docker volume prune,Docker Engine 會自動掃描所有冇被任何容器掛載(mount)嘅 Volumes,然後問你係咪確定要刪除。呢個係第一重安全防護,俾你最後確認。如果你想跳過確認步驟自動刪除,可以加 -f 或者 --force 旗標,但初學者就絕對唔建議,等睇清楚清單先好撳確定。

不過,齋靠 prune 指令可能仲未夠安全,特別係喺 Production 環境。更穩陣嘅做法係,先做一次「模擬運行」。你可以用 docker volume ls --filter dangling=true 嚟列出所有目前冇被使用嘅 Volumes。睇清楚個清單,逐個檢查吓個名,有時 Volume 名會提示到佢係屬於邊個服務(例如 myapp_db_data)。確認晒之後,先至執行 docker volume prune。呢個就係 維護最佳實踐 之一,叫做「先檢視,後刪除」。

對於進階使用者,尤其係用開 Docker Desktop 嘅朋友,仲可以設定自動化清理。Docker Desktop 嘅設定入面,通常會有選項讓你定期自動執行 Docker Prune,幫你清理唔止 Volumes,仲有懸掛鏡像、停止咗嘅容器等等。但記住,自動化雖然方便,但一定要設定好排除清單(如果有呢個功能),確保唔會刪到一啲雖然暫時冇用,但係重要備份或者日後需要用到嘅 Volume 數據。

另外一個常見嘅安全技巧,係同 Docker Compose 配合使用。當你用 docker-compose down 嘅時候,佢預設係唔會刪除相關嘅 Volumes 嘅,呢個設計正正就係為咗保護你嘅數據。如果你好肯定某個 Compose 項目嘅數據可以刪除,可以落 docker-compose down -v 指令,咁樣佢就會喺移除容器同網絡嘅同時,刪除晒呢個 Compose 檔案所宣告嘅 Volumes。咁樣做嘅好處係目標明確,只刪除同指定項目相關嘅 Volumes,唔會影響到其他項目嘅數據,對於管理多個獨立專案嚟講非常清晰同安全。

最後都要提一提,磁碟管理 嘅大原則:永遠要有備份。喺執行任何大規模 容器清理 或者 Docker System 層面嘅 Prune Command 之前,如果嗰啲 Volumes 入面嘅數據係有少少價值嘅,都應該先備份。你可以用 docker run --rm -v [volume名]:/data -v /本地路徑:/backup alpine tar czf /backup/backup.tar.gz /data 呢類方法,將 Volume 數據打包保存去主機。有咗備份,你進行 資源釋放儲存空間優化 嘅時候就可以更加放心同進取,唔使驚誤刪重要嘢。

總括嚟講,安全刪除 Docker Volumes 嘅關鍵在於「知情」同「確認」。善用 Docker CLI 嘅查詢指令去了解未使用數據嘅狀況,跟住用 prune 指令或者 Docker Compose 嘅特定參數進行有目標嘅清理,並且考慮設定合適嘅自動化清理規則。只要做好呢幾步,你就能夠有效管理 Docker磁碟空間,保持系統清爽,同時又唔會因為容器清理而導致數據災難。

docker prune - 網絡

About網絡Professional illustrations

清理 Networks 避免系統混亂

講完清理容器鏡像,係時候要深入一個好多人都會忽略,但搞唔好就會令到成個系統亂七八糟嘅部分:清理 Networks 避免系統混亂。你可能會問,網絡又唔似懸掛鏡像或者未使用數據咁直接食你硬碟空間,點解要特登清理?呢個就係問題嘅核心啦!Docker 嘅 Networks 雖然唔會霸佔好多磁碟空間,但係佢哋會默默咁累積,變成一個個孤兒網絡,搞到你用 Docker CLI 或者 Docker Desktop 睇 network list 嗰陣,成版都係啲唔知邊個 project 剩低嘅 network,唔單止睇到眼都花,仲會增加 Docker Engine 嘅管理負擔,甚至有可能引起網絡衝突,例如啲自訂網絡嘅 IP 段撞咗,令到你新起嘅 容器 連唔到網,呢啲情況真係搵 bug 都會搵到頭痛。所以,定期做 系統清理,尤其係針對網絡,絕對係 系統維護 入面嘅 維護最佳實踐,目的就係要 資源回收,保持環境乾淨。

咁點解會有咁多無人用嘅網絡剩低呢?其實好常見。好多時我哋用 Docker Compose 嚟起一堆服務,Compose 檔案入面如果無特別指定 network,佢就會為每個 project 自動創建一個專屬嘅網絡(通常個名會跟 project folder 名)。當你 docker-compose down 嘅時候,佢係會刪除呢個網絡嘅。但係,如果你係用 docker-compose stop 或者直接 ctrl+c 中止,又或者係用普通 docker run 命令起容器時加咗 --network 參數但之後無妥善清理,咁呢啲網絡就會一直留喺度。仲有,當你刪除咗所有連接去某個自訂網絡嘅容器後,如果無手動刪除個網絡,佢就會變成一個「孤兒網絡」,雖然存在但已經無用。日積月累之下,你個 Docker System 就會充滿呢啲垃圾,造成 系統混亂

要點樣進行 網絡清理 呢?最直接嘅方法當然係用 Docker CLI。你可以用 docker network ls 命令先睇清楚現時有幾多個網絡,特別留意吓 NAME 同 DRIVER 欄位。通常 bridge、host、none 呢幾個係 Docker 預設嘅網絡,千祈唔好刪除佢哋。你要清理嘅目標,係嗰啲名稱為 projectname_default 或者一啲亂碼咁嘅自訂網絡。你可以用 docker network inspect [NETWORK_NAME] 嚟檢查吓個網絡仲有無容器連住,如果個 Containers 部分係空嘅,咁你就可以放心刪除。逐個刪除可以用 docker network rm [NETWORK_NAME]。不過,作為一個有效率嘅 DevOps,梗係要用自動化方法啦!呢度就輪到 docker system prune 嘅威力登場。不過要留意,基本嘅 docker system prune 命令係 唔會 清理網絡嘅!呢個係一個大陷阱,好多新手以為一個 prune 命令就搞掂所有 Docker objects,其實唔係。

要清理未使用嘅網絡,你需要明確咁指示 Docker Prune 命令。專為網絡而設嘅命令係 docker network prune。當你執行呢個命令,Docker 會掃描所有嘅自訂網絡,如果發現有任何網絡無被任何容器、服務或者 Swarm 節點使用,就會將佢列為可刪除對象。執行之前,佢會問你確認,你可以加 -f 或者 --force 參數跳過確認步驟。呢個命令就係針對網絡嘅 資源釋放 工具,對於保持網絡環境清晰好有幫助。如果你想一次過大掃除,清理所有類型嘅 未使用資源,包括網絡、容器映像、停止咗嘅容器同埋 build cache,你可以用 docker system prune -a --volumes(注意,加 --volumes 會連 都刪除,要小心使用),但呢個命令都係唔包網絡㗎!正確嘅終極 自動化清理 指令,其實係要結合多個 prune 命令,或者用 docker system prune -a --volumes 之後,再額外執行 docker network prune -f,咁先可以確保連網絡都清埋。

對於用開 Docker Desktop 嘅朋友,圖形介面都提供咗方便嘅 清理 Networks 功能。你可以打開 Docker Desktop,去到 Dashboard,通常會有一個 “Clean up” 或者 “Prune” 嘅按鈕,點擊之後佢會俾你揀要清理啲咩,記得要剔選 “Networks” 呢個選項。用 GUI 做 磁碟管理 嘅好處係一目了然,你可以清楚見到每個網絡嘅詳細情況,再決定刪唔刪除,比較適合唔太熟悉命令列,或者想逐個檢查嘅用家。不過對於伺服器環境或者追求效率嘅工程師,熟記 prune command 系列始終係必備技能。

最後提多一個實用貼士,就係預防勝於治療。要避免產生過多無用網絡,可以由習慣做起。當你用 Docker Compose 開發測試完,盡量用 docker-compose down 而唔係單純停止容器。如果係手動用 docker run 創建嘅容器,並且指定咗自訂網絡,記得刪除容器時,如果確定個網絡無其他容器使用,就順手用 docker network rm 刪埋佢。定期將 網絡清理 加入你嘅 維護最佳實踐 清單入面,例如每星期或每次完成一個大項目後,就執行一次 docker network prune。咁樣做,你嘅 Docker 環境就會一直保持乾淨俐落,唔會因為 未使用的資源 堆積而導致 系統混亂,真正實現高效嘅 存儲優化資源回收,令到你管理 容器映像 嘅工作更加順暢。

docker prune - 卷

About卷Professional illustrations

自動化 Prune 設定技巧

講到自動化 Prune 設定技巧,對於成日要同 Docker 打交嘅 DevOps 或者開發者嚟講,真係可以話係救星。點解?因為成日手動去清理 Docker 系統入面嘅懸掛鏡像、冇用嘅容器,唔單止嘥時間,仲好容易唔記得做,結果就係磁碟空間無啦啦被啲未使用數據食晒。喺 2026 年嘅今日,隨著容器應用愈嚟愈複雜,Docker 入面堆積嘅未使用的資源可以多到嚇親人,所以設定自動化系統清理已經係維護最佳實踐之中必不可少嘅一環。

首先,最基本又最直接嘅自動化方法,就係利用作業系統本身嘅排程工具。例如你喺 Linux 伺服器上面,可以寫一個簡單嘅 Shell Script,入面包含咗一系列嘅 Docker CLI 指令,然後用 Cron Job 去定期執行。個 Script 可以包括好似 docker system prune 呢個全能指令,佢會一次過幫你清理晒所有類型嘅 Docker objects,包括已停止嘅 containers、所有懸掛鏡像,以及冇被任何容器使用嘅 網絡。不過要小心,docker system prune 預設唔會清理 ,因為入面可能會有重要數據,所以你如果想連 都自動清,就要加 --volumes 旗標。當然,你可以寫得再精細啲,分開用 docker image prune 專門清理鏡像,或者用 docker container prune 清理容器,咁樣你就可以更精準控制每次清理嘅範圍,避免誤刪重要嘢。例如,你可以設定每個星期日凌晨三點,自動執行一個強力啲嘅清理,專門清除超過一個月冇用過嘅容器映像,釋放更多硬碟空間

不過,齋用 Script 同 Cron 有時都未必夠方便,尤其係如果你用緊 Docker Desktop 嘅話。好彩,喺 2026 年,Docker Desktop 嘅設定介面已經將自動化清理功能整合得更加完善。你可以直接喺設定入面嘅 “Resources” 或者 “Advanced” 部分,搵到自動清理嘅選項。通常你可以設定一個規則,例如當 Docker 使用嘅磁碟空間超過某個百分比(例如 80%)時,就自動觸發一個背景清理程序,幫你清走啲懸掛鏡像同緩存數據。呢個方法對於唔熟命令列,或者係喺開發用嘅個人電腦上運行 Docker 嘅用家嚟講,特別 user-friendly,完全唔使寫 code 就做到資源回收

對於更進階、更追求 Infrastructure as Code 嘅團隊,將自動化 Prune 整合落 Docker Compose 或者你嘅 CI/CD Pipeline 流程入面,先至係王道。例如,你可以喺你嘅 Docker Compose 檔案旁邊,建立一個專門用嚟做維護嘅 Compose 檔案,入面定義一個服務,個服務就係一個定期執行 docker system prune 嘅輕量級容器。然後,你可以用 Docker Compose 嘅 depends_on 同健康檢查功能,確保喺主要應用服務啟動前或停止後,執行呢個清理任務。另一個常見做法係喺 Jenkins、GitLab CI 或者 GitHub Actions 嘅 Pipeline 階段入面,加入一個清理步驟。例如,每次完成構建(Build)同部署(Deploy)之後,就自動運行指令去清理喺構建過程中產生嘅、一大堆冇用嘅中間鏡像(即係 標籤嗰啲),呢啲未使用數據積埋積埋真係會好阻訂。呢種方法將容器清理變成開發流程嘅一部分,確保環境持續保持乾淨。

當然,自動化唔係設完就一勞永逸,有啲陷阱同注意事項一定要知。第一,自動清理係最高風險動作,因為 就係設計嚟持久化保存數據嘅,例如資料庫檔案。如果你設定自動清理 ,好有可能會遺失重要數據。所以,除非你好肯定某啲 (例如用嚟暫存 Cache 嘅)可以隨便刪,否則最好喺自動化指令中排除 ,或者用 --filter 參數去指定只清理特定標籤嘅 。第二,要留意自動化指令嘅執行頻率。清得太密(例如每小時)可能會影響正在運行嘅容器效能,因為清理過程會消耗 Docker Engine 嘅資源;清得太疏(例如每年)又失去自動化嘅意義。一般嚟講,根據你嘅開發或部署密度,設定每日或每週清理一次係比較合理嘅。第三,記得要設定通知機制。無論你係用簡單嘅 echo 將結果寫入 Log 檔案,定係整合 Slack、Teams 嘅 Webhook,當自動化 Prune 執行完,最好有份報告話你知佢今次清咗幾多 容器、幾多 映像、釋放咗幾多 磁盤空間。咁樣你唔單止可以監察資源釋放嘅成效,萬一佢誤刪咗重要嘢,你都可以第一時間知曉。

最後,不得不提 Docker System 本身嘅一些內建機制同未來趨勢。Docker Engine 一直喺度改進其存儲優化功能。對於進階用家,深入研究點樣配置 Docker 使用嘅儲存驅動程式(Storage Driver),例如 overlay2,以及點樣設定其參數(例如 dm.basesize),從根源上控制鏡像容器嘅增長速度,配合定期自動化 Prune,先係最治本嘅磁碟管理策略。總而言之,設定自動化 Docker Prune 唔係一個「有或冇」嘅選擇,而係一個點樣根據你自身工作流程,去精心配置自動化清理規則嘅過程。由簡單嘅 Cron Job 到整合入 CI/CD,目的都係一樣:讓系統維護變得更輕鬆,確保寶貴嘅磁碟空間永遠用喺刀口上,而唔係被一堆垃圾未使用的資源白白佔用。

docker prune - 磁碟空間

About磁碟空間Professional illustrations

常見 Prune 錯誤同解決方法

好啦,講到用 Docker Prune 做系統清理,好多朋友都覺得一鍵搞掂好方便,但其實暗藏幾個常見陷阱,搞唔好反而會刪錯嘢或者清唔乾淨。呢度就同大家拆解幾個常見 Prune 錯誤同解決方法,等你可以安心做資源回收

首先,最多人中招嘅就係「一刀切」用 docker system prune -a。呢個指令威力強大,會剷走所有懸掛鏡像、停止咗嘅容器、冇用嘅網絡同埋。問題係,如果你有啲鏡像雖然暫時冇運行緊對應嘅容器,但係遲啲部署或者測試會用返,咁樣一刪就要重新拉取,又晒時間又晒流量。特別係用緊 Docker Compose 嘅項目,啲映像名可能比較隱蔽,好易誤判。解決方法係養成先檢查、後刪除嘅習慣。你可以先用 docker images 睇清楚有邊啲映像係真係冇用,或者用 docker system df 睇下各類 Docker objects 佔用幾多磁碟空間。跟住,針對性咁用 docker image prune(只刪懸掛鏡像)或者 docker container prune(只清已停止容器),風險就低好多。記住,系統維護嘅原則係精準,唔係粗暴。

第二個常見錯誤,就係完全忽略咗 Docker Volume 嘅管理。好多人都知清鏡像容器,但就忘記咗 Volume(卷)先係食硬碟空間嘅大戶,尤其係資料庫嘅數據卷,隨時幾十GB甚至更大。docker system prune 預設係唔會刪除任何嘅,因為驚你掉失重要數據。所以,就算你成日做 Prune磁碟空間都係冇乜點釋放,就係因為啲未使用數據仲喺 Volume 度。解決方法係要定期檢查同清理 Volume。你可以用 docker volume ls 列出所有卷,再用 docker volume inspect 睇下邊個冇被任何容器掛載住。確認咗係未使用的資源之後,就可以用 docker volume prune 來清理。不過提多次,做呢步之前,千祈要百分百肯定入面冇重要數據,冇得返轉頭㗎!

另一個麻煩位,就係同 Docker Compose 或者 Docker Desktop 嘅協作問題。有時你喺 Docker CLI 用 prune 清咗一啲網絡或者鏡像,但係 Docker Compose 檔案裡面仲記錄住舊配置,當你下次行 docker-compose up 時,可能會因為搵唔返某啲資源而出現奇怪錯誤。又或者,Docker Desktop 嘅圖形界面自己有一套資源回收機制,同你手動喺命令行做嘅操作可能重疊或者衝突,令到你唔能夠準確估算釋放咗幾多磁盤空間解決方法係保持管理方式一致。如果主要用 Docker Compose 管理項目,咁停用項目時,最好用 docker-compose down --volumes(小心使用)呢類指令去移除相關資源。同時,要了解清楚你所用工具(Docker Engine 直接操控定係透過 Docker Desktop)嘅清理邏輯,避免兩邊各自為政。

最後,好多人冇為 Docker Prune 設定自動化,或者設錯自動化。有人會喺 Crontab 度 set 每日行 docker system prune -a -f,覺得咁就做到自動化清理。但正如之前所講,咁樣好危險,容易誤刪。另一個極端就係完全唔做自動化,等到磁碟空間爆紅先手動處理,嗰陣時可能連 Docker 本身都行唔郁。維護最佳實踐係設定一個平衡嘅自動化策略。例如,你可以設定每週自動執行 docker image prune -a --filter "until=168h",意思係刪除一星期前嘅所有未使用鏡像,咁樣可以保留最近可能有用嘅映像。對於容器,可以設定自動清理退出狀態超過 24 小時嘅。呢啲策略需要根據你自身嘅開發或部署頻率來調整,但原則就係:將資源釋放變成一個可預測、低風險嘅例行工序,而唔係一場驚心動魄嘅磁盤空間回收大作戰。

總而言之,Docker Prune 係一個強大嘅系統清理工具,但要用得精明。關鍵在於唔好依賴單一指令,而要理解不同 Docker objects容器映像網絡)之間嘅關係,同埋你自身工作流程嘅需求。由粗放式清理轉向精細化磁碟管理,先至係長遠保持系統健康、高效嘅不二法門。

docker prune - 未使用數據

About未使用數據Professional illustrations

釋放磁碟空間實測效果

好啦,講咗咁多理論同指令,咁實際用 Docker Prune 呢類指令去清理,到底可以釋放到幾多磁碟空間呢?呢個問題真係好多香港開發者,尤其係用緊 MacBook 或者 SSD 細容量電腦嘅朋友最關心。等我哋做個簡單嘅「實測」情境分析下,你就會明白點解定期做系統維護同容器清理咁重要。

想像你部開發機已經用咗 Docker 大半年,期間不斷 build 新鏡像、run 新容器試嘢,又用 Docker Compose 起過幾個 project 環境。你打開終端機,打 docker system df 一睇,嘩,發現「未使用數據」個欄位數字好嚇人,顯示有成幾十 GB 咁多。呢啲就係磁碟空間嘅隱形殺手,包括咗一堆你唔記得咗、或者測試完冇刪除嘅懸掛鏡像、停止咗嘅舊容器、仲有啲冇掛載嘅孤兒卷。呢個時候,你決定執行最徹底嘅清理指令:docker system prune -a --volumes。記住,加 -a 會連所有冇被容器使用緊嘅鏡像都刪除,而 --volumes 就會連數據卷都清埋,呢個係最進取嘅資源回收方法。

執行完之後,終端機會列出一份詳細報告。我哋嚟模擬一個常見嘅結果:可能清除了 15 個懸掛鏡像、8 個停止狀態嘅容器、3 個冇用嘅網絡,同 2 個舊數據卷。最關鍵係最後嗰句:「總共釋放磁碟空間:24.7 GB」。冇錯,就係咁簡單一個指令,可以即刻拎返成 20 幾 GB 嘅硬碟空間返嚟,對於只有 256GB 或 512GB SSD 嘅電腦嚟講,呢個效果絕對係立竿見影,部機即刻順返唔少。呢個就係 Docker System Prune 最直接嘅實測效果,將所有 Docker objects 裡面嘅未使用資源一次過釋放。

當然,清得勁都有代價。如果你用 -a 參數,所有冇被即時使用嘅基礎鏡像(例如舊版 Ubuntu、Node.js 映像)都會被刪除。下次你重新 build 或者 run 一個新容器時,就可能要重新從 Docker Hub 下載過,會用多少少時間同網絡流量。所以,實測效果唔單止睇釋放咗幾多磁碟空間,仲要衡量返對你工作流程嘅影響。對於日常開發,我建議可以用溫和啲嘅方法,例如定期執行 docker image prune 專門清理懸掛鏡像,或者用 docker container prune 清走已停止嘅容器,咁樣可以平衡磁碟空間回收同開發效率。

另外,實測效果亦都同你點用 Docker 好有關係。如果你成日用 Docker Compose 做測試,每次 docker-compose down 之後,啲容器係會停咗,但唔會自動消失,積埋積埋就好食空間。又或者你習慣 build 鏡像時唔打 tag,生成一大堆名叫 嘅懸掛鏡像,呢啲都係磁碟空間快速被吞噬嘅元兇。了解咗呢啲效果之後,你就可以制定自己嘅維護最佳實踐,例如每星期執行一次基本 prune,每個月做一次大掃除,咁就唔使等到磁盤爆滿先嚟救亡。

最後都要提提,無論係用 Docker CLI 指令,定係透過 Docker Desktop 嘅圖形介面去做清理,其實背後都係呼叫 Docker Engine 嘅相同功能。實測證明,養成清理未使用數據嘅習慣,係保持開發環境健康同高效嘅不二法門。尤其係而家啲項目愈嚟愈複雜,依賴嘅鏡像愈嚟愈多,主動做資源釋放同儲存空間優化,絕對係聰明嘅做法。下次當你發現部機開始慢,或者 build 鏡像時話磁碟空間不足,不妨就係時候行一轉 prune command,親身感受下佢嘅實效啦。

docker prune - Docker

AboutDockerProfessional illustrations

進階過濾參數點樣用?

好啦,講到基本嘅 docker system prune 同 docker image prune,好多人都識用,但係當你個系統愈來愈複雜,成日有大量唔同標籤嘅容器映像、或者係幾個月前嘅舊網絡,咁樣一鍵清理就可能會誤刪緊要用緊嘅嘢。所以,識得用 Docker CLI 提供嘅進階過濾參數,就係你由普通用家變成進階管理員嘅關鍵一步。呢啲參數就好似一把高精度嘅手術刀,可以幫你準確切除未使用數據,而唔係成個系統「一刀切」,對於系統維護磁碟空間回收嚟講,效率同安全性都高好多。

首先,最常用嘅過濾參數一定係 --filter。佢可以應用喺唔同嘅 prune 指令上面,例如清理懸掛鏡像。懸掛鏡像就係嗰啲冇標籤、又冇任何容器依賴嘅中間層映像,通常係重建鏡像時產生。如果就咁打 docker image prune,佢會剷晒所有懸掛鏡像。但係,如果你想保留某啲特定時間點之前嘅,或者想根據創建時間篩選,就可以咁用:例如 docker image prune --all --filter "until=240h"。呢個指令會移除所有(包括非懸掛嘅)超過10日(240小時)冇被任何容器使用嘅映像。參數 until 好有用,你可以用 2026-01-01T00:00:00 呢類時間戳,或者直接用 240h、10d 呢種相對時間,好靈活。

另一個超實用嘅過濾條件係 label。如果你有用 Docker Compose 或者習慣為自己嘅 Docker objects 加上自定義標籤(例如 environment=production、project=backend),咁 label 過濾就係你嘅救星。假設你有一堆測試環境用嘅容器映像,你可以好精準咁清理:docker container prune --filter "label=environment=test"。呢個指令會剷走所有帶有 environment=test 標籤、而且已經停止咗嘅容器。同樣道理,用喺映像度:docker image prune --all --filter "label=maintainer=john",就可以清理所有由 John 維護而且冇被使用嘅映像。呢種方法將自動化清理融入日常工作流程,例如每次 CI/CD 跑完測試,就自動清理帶有 ci-run 標籤嘅資源,咁就唔使驚積埋一大堆未使用的資源

對於嘅清理,過濾參數就更加重要,因為卷入面通常係數據庫資料或者網站資產,剷錯咗就大鑊。docker volume prune 都支援 --filter。最常用嘅係 label 同上邊提到嘅 until。例如,你可以設定一個策略,定期清理超過30日冇被掛載、而且帶有 backup=true 標籤嘅臨時備份卷:docker volume prune --filter "label=backup=true" --filter "until=720h"。喺執行之前,Docker 會列出符合條件嘅卷等你確認,呢個步驟俾你最後一次檢查,防止數據損失。記住,磁碟管理嘅首要原則係「安全第一」,尤其係處理數據卷嘅時候。

最後,想提一提一個比較少人用但係好強大嘅組合:將過濾參數同 docker system df 呢類查看磁碟空間使用情況嘅指令一齊用。你可以先用 docker images --filter "dangling=true" 嚟淨係列出所有懸掛鏡像,睇清楚有幾多硬碟空間被佔用。然後再用 docker image prune --filter "dangling=true" 去清理。呢種「先檢查,後操作」模式,係 維護最佳實踐 之一,尤其適合喺生產環境做系統清理。總括嚟講,熟練運用 --filter 參數,配合 label、until 等條件,你可以打造出非常精細同安全嘅 Docker System 資源回收 策略,無論係用 Docker Desktop 做本地開發,定係用 Docker Engine 管理伺服器,都能夠有效釋放磁盤空間,保持系統清爽。

docker prune - Compose

AboutComposeProfessional illustrations

同 Docker System Cleanup 比較

好,咁我哋就深入傾下 Docker PruneDocker System Cleanup 呢兩個概念有咩唔同,同埋點樣揀。好多初用 Docker 嘅朋友,甚至係有經驗嘅開發者,都好容易將佢哋撈亂,覺得都係用嚟清垃圾、做系統維護啫。但其實,喺資源回收磁碟空間管理嘅策略上,佢哋嘅定位同精細度有好大分別。

簡單嚟講,Docker Prune 就好似一把瑞士軍刀,你可以逐個部分去執,針對性極強;而 Docker System Cleanup(通常指 docker system prune 呢個指令)就係一把大掃把,一嘢掃走大部分嘅未使用數據Docker Prune 其實係一個指令家族,佢包括 docker image prune、docker container prune、docker volume prune 同 docker network prune。呢個設計嘅精妙之處在於,你可以好精準咁控制要清理啲咩。例如,你個 Project 用好多網絡做測試,但係容器映像你想保留,咁你就可以淨係執行 docker network prune 去清走啲孤兒網絡,其他嘢完全唔會掂到。又或者,你發現硬碟爆咗,經過 docker images 一查,發現積存咗大量舊版同懸掛鏡像,你就可以用 docker image prune -a 去剷走所有冇被任何容器引用嘅鏡像,即刻釋放大量硬碟空間。呢種模組化嘅自動化清理,對於需要精細控制Docker 物件嘅生產環境或者複雜開發流程嚟講,係非常重要嘅維護最佳實踐

相反,docker system prune 就係一個「All-in-One」嘅快捷指令。你一行落去,佢預設會幫你一次過清理四樣嘢:停止咗嘅容器、所有懸掛鏡像、冇被任何容器使用嘅網絡,以及冇被引用嘅(除非你加 --volumes 旗標,否則預設唔會清,因為入面可能有關鍵數據)。呢個指令嘅好處係快、狠、準,尤其適合喺本地開發機做完一輪測試,或者 CI/CD 環境跑完一輪建置之後,想快速進行系統清理、回收未使用的資源嘅時候用。佢就好似一個定期大掃除,唔使諗,一鍵搞掂。不過,正因為佢範圍大,用嘅時候就要格外小心。例如,如果你有啲停止咗但係入面有重要 Log 未 Backup 嘅容器,或者一啲 Build Cache 仲想留多陣,咁用 system prune 就可能會誤殺。所以,好多有經驗嘅團隊會將 docker system prune -a --volumes --force 呢類指令,設定喺非工作時間由 Script 自動執行,做為一種磁盤空間回收嘅常規操作,而唔係依賴人手隨意執行。

講到具體點樣揀,我哋可以睇幾個實際場景。假設你係用 Docker Desktop 做開發,日日 Build 好多唔同版本嘅映像,久而久之個虛擬硬碟就爆滿。呢個時候,與其用 system prune 一刀切,不如先用 docker image prune 配合 --filter 參數,例如清走一星期前建立又冇用嘅映像,會更加安全同有針對性。另一個常見情況係,你嘅服務用 Docker Compose 部署,每次 docker-compose down 之後,都會留低一堆 Default 網絡,呢啲網絡好少會再用,但又唔會好似懸掛鏡像咁明顯食空間。咁你就可以定期行 docker network prune 去清理,而無需驚影響到容器鏡像。總括嚟講,Docker Prune 系列指令係你進行日常磁碟管理嘅精準工具,而 docker system prune 就係一個強力但需要謹慎使用嘅資源釋放核彈。將兩者結合喺你嘅維護最佳實踐入面,先至係保持 Docker Engine 運行暢順、磁碟空間充足嘅王道。記住,冇一個方法係最好,只有最適合你當前狀況嘅方法。

docker prune - Desktop

AboutDesktopProfessional illustrations

點樣避免誤刪重要資料?

講到用 Docker Prune 做系統清理,好多 DevOps 同開發者最驚就係手快快或者一個指令落去,誤刪咗重要嘅容器、映像或者數據卷,搞到成個開發環境甚至生產環境嘅組件無端端消失。其實要避免呢類「災難性」手誤,關鍵在於建立一套清晰嘅維護最佳實踐同操作習慣,唔好盲目追求釋放磁碟空間而亂用 Docker CLI 嘅強力清理指令。

首先,最緊要係養成「睇清楚再執行」嘅習慣。Docker System Prune 呢類指令雖然可以一次過清理晒懸掛鏡像、停止咗嘅容器、無用嘅網絡同未被任何容器引用嘅卷,但佢預設係唔會刪除唔夠二十四小時嘅物件嘅,呢個算係一個基本安全網。不過,如果你心急想即刻清走所有未使用數據,加個 --all 或者 --volumes 旗標,風險就即刻大增。所以,每次行 prune 指令之前,強烈建議你先用相關查詢指令睇清楚會影響到乜嘢。例如,想知有幾多懸掛鏡像,可以先用 docker images -f dangling=true 列晒出嚟;想睇下有邊啲卷係未被使用,可以用 docker volume ls -f dangling=true。呢啲檢查步驟就好似你丟垃圾前打開垃圾袋望多眼,睇下有無唔小心掉咗銀包落去一樣。

其次,對於重要嘅容器映像同數據卷,一定要有明確嘅標籤同命名規則。Docker 物件如果被標記咗,就唔會被預設嘅 docker image prune 當成懸掛鏡像刪除。例如,你為生產環境用嘅數據庫鏡像打上 production-db:v2.6 呢類清晰標籤,又或者為開發用嘅中間件鏡像打上 dev-cache:latest,咁樣就易於識別。相反,嗰啲 build 完無打標籤、只係得一串 hash ID 嘅中間映像,就好容易變成清理目標。同樣道理,數據卷嘅命名都好重要,與其用 Docker 自動生成嘅亂碼名,不如用 docker volume create 明確創建一個有語意嘅名,例如 mysql-data 或者 app-uploads,咁樣你喺清理時一眼就知邊啲郁得、邊啲郁唔得。

另一個實用技巧係善用 Docker Compose 來管理你嘅應用堆疊。當你用 Docker Compose 定義晒服務、網絡同卷之後,成個生命週期就會有更好嘅管控。你想清理某個特定項目嘅資源,可以喺該項目目錄下行 docker-compose down --volumes,咁樣只會移除該 compose 文件定義嘅資源,唔會影響到系統入面其他無關嘅容器或卷。呢個方法將清理範圍局限化,大幅減低「誤傷無辜」嘅風險。尤其係當你部機同時行緊幾個唔同項目嘅 Docker 容器時,用 Compose 來逐個項目維護就安全好多。

對於真係需要定時做自動化清理嘅環境(例如 CI/CD 伺服器),千祈唔好直接將 docker system prune -a --volumes --force 呢類核彈級指令放入 cron job。比較穩陣嘅做法係寫個小腳本,入面加入精確過濾條件。例如,只清理標記為「temp-」開頭嘅測試鏡像,或者只刪除超過三十日嘅懸掛鏡像。Docker Prune 指令本身支持唔少過濾參數,好似 --filter until= 就可以幫你只清理指定時間之前嘅物件,避免刪到新建立嘅資源。呢種有針對性嘅資源回收,先至係磁碟空間管理嘅上策。

最後,不得不提 Docker Desktop 同 Docker Engine 本身嘅設置。喺 Docker Desktop(特別係 2026 年嘅新版本)嘅設定入面,通常會有圖形化界面畀你設定自動清理嘅規則,例如只自動移除懸掛鏡像,或者設定一個保留磁碟空間嘅上限。善用呢啲圖形工具,可以避免直接喺命令行打錯指令。同時,定期備份你認為重要嘅數據卷同映像,始終係最後一道防線。你可以用 docker export 或 docker save 將重要容器狀態同映像打包存檔,就算萬一清理過頭,都有得還原。

總括來講,避免誤刪嘅心法就係「精確」同「審查」。將系統清理當成一個需要仔細規劃嘅維護步驟,而唔係隨手一鍵嘅快捷操作。透過查詢現狀、標記重要資源、使用 Compose 限定範圍、編寫過濾腳本同利用 GUI 工具呢幾招,你就可以安心咁釋放硬碟空間,做磁碟空間回收,同時確保所有重要嘅容器、映像同數據卷都安然無恙。記住,Prune Command 係一把好鋒利嘅刀,用得好可以幫你保持系統清爽,但亂用就好易令你後悔莫及。

docker prune - Docker

AboutDockerProfessional illustrations

定期維護腳本點寫?

講到定期維護腳本點寫,呢個真係我哋用Docker嘅朋友必須要識嘅技巧。你知啦,Docker用耐咗,成日會積埋一堆「容器映像」、懸掛鏡像、冇用嘅「網絡」同「卷」,霸佔晒啲「磁碟空間」。如果次次都手動入「Docker CLI」打docker system prune,又麻煩又易唔記得。所以,寫個自動化嘅「定期維護腳本」,就係將「系統維護」變成一種習慣,幫你自動做「資源回收」,唔使再擔心「硬碟空間」無端端爆滿。

首先,最基本嘅思路,就係利用操作系統本身嘅任務排程功能。例如,如果你用Linux,可以寫個Bash腳本,然後放佢入crontab度定期執行。個腳本核心,當然就係圍繞住「Docker System」嘅各種prune command。最徹底嘅做法,係直接用docker system prune --all --force --volumes。呢個命令會一次過清理晒所有「未使用數據」,包括停止咗嘅「容器」、冇任何容器用緊嘅「鏡像」、懸掛鏡像,仲會連「未使用數據」嘅「卷」都刪埋,真正做到「磁盤空間回收」。不過要小心,–volumes 呢個選項會刪埋數據卷,如果你有啲重要數據喺度但係暫時冇容器用緊,就可能會誤刪。所以,更穩陣嘅做法,可以分開步驟,逐樣清理。

一個比較穩陣又全面嘅「自動化清理」腳本可以咁樣設計。首先,清理所有停止咗嘅容器,用docker container prune -f。跟住,清理所有懸掛鏡像(即係冇標籤又冇容器用緊嘅中間層),用docker image prune -f。然後,你可以選擇性地清理一啲指定時間之前嘅舊「映像」,例如用docker image prune -a –force –filter “until=168h”,咁就會刪除晒一星期前嘅所有冇用映像。至於「網絡」同「卷」,你可以睇情況加入,例如docker network prune -f 同 docker volume prune -f。將呢堆命令寫入一個.sh檔案,再設定crontab每個星期自動行一次,咁就初步建立咗一個「定期維護」機制。

不過,對於更加複雜嘅環境,特別係有使用「Docker Compose」去管理多容器應用嘅朋友,我哋個腳本就要寫得聰明啲。因為直接prune volumes可能會刪除咗Compose項目仲需要嘅數據。一個好嘅實踐係,喺執行全面清理之前,先檢查吓有邊啲Compose項目係活躍緊。個腳本可以先cd去你所有Compose項目嘅根目錄,逐個執行docker-compose down去優雅地停止並移除相關容器同網絡,但保留數據卷。之後,先再執行針對全局嘅docker system prune去清理剩餘嘅「未使用資源」。最後,可以再將需要嘅Compose項目用docker-compose up -d重新啟動返。咁樣嘅流程,就確保咗「系統清理」唔會影響你正在運行嘅服務,同時又釋放咗「磁碟空間」。

另外,對於用緊「Docker Desktop」嘅Mac或Windows用戶,雖然有圖形介面可以撳掣清理,但自動化一樣可以做到。你可以利用系統嘅Task Scheduler (Windows) 或 Launchd (macOS) 去定期執行一個PowerShell或者Shell腳本,腳本入面嘅命令其實同Linux版係一樣嘅,因為背後都係同一個「Docker Engine」。你可以設定每個月頭嘅星期日凌晨三點執行一次全面嘅「容器清理」同「資源釋放」,咁就完全唔使記住呢啲「維護最佳實踐」。

寫呢類腳本仲有個小貼士,就係記得加入日誌記錄功能。每次腳本執行,都將清理咗啲咩(例如:刪除咗幾多個容器、釋放咗幾多GB空間)輸出到一個日誌檔案或者發送個通知去你嘅團隊溝通工具度。咁樣你唔單止可以確認腳本有正常運行,仲可以掌握「Docker objects」嘅增長情況,了解係咪有異常嘅數據積累。呢個就係將「儲存空間優化」工作提升到一個可觀測、可管理嘅層次。

總而言之,寫一個「定期維護腳本」並唔複雜,關鍵係要根據你自己嘅使用習慣同風險承受能力,去選擇合適嘅prune命令組合。由最簡單嘅單行命令,到包含狀態檢查、項目重啟、日誌記錄嘅複雜腳本,都係為咗同一個目標:確保你嘅開發或生產環境唔會因為「Docker」日積月累嘅「未使用數據」而出現「磁碟空間」不足嘅問題,令到「Docker」呢個好工具可以持續、高效、乾淨地為你服務。

docker prune - Docker

AboutDockerProfessional illustrations

最佳實踐同效能優化

好啦,講到最佳實踐同效能優化,就唔可以剩係識得用 docker system prune 呢個「一鍵清空」大法咁簡單。雖然佢好方便,啪一句指令就可以幫你清走晒懸掛鏡像、停咗嘅容器、冇用嘅網絡,但係對於一個認真管理Docker環境嘅開發者或者系統管理員嚟講,咁樣做其實有啲粗疏,甚至可能誤刪一啲重要嘅未使用數據。真正嘅系統維護,係要精準同有策略性,唔單止為咗回收磁碟空間,仲要確保工作流程唔會被打斷,同埋清理動作可以持續落去。

首先,我哋要養成習慣,定期、分門別類咁進行容器清理。唔好等到部機冇晒硬碟空間先至做。例如,你可以每星期手動執行一次 docker image prune,專門清理懸掛鏡像。點解要分開做?因為咁樣你可以有更多控制權。執行 docker image prune 之前,最好先運行 docker images -f dangling=true 睇清楚有邊啲鏡像會被刪除,確認冇問題先至進行。呢個動作對於資源回收好有效,因為開發過程中 build 鏡像經常會產生大量懸掛版本,佢哋靜雞雞食咗你好多磁盤空間都唔知。另外,對於容器映像嘅管理,唔好乜都留喺度。如果你用 Docker Compose 做開發,每次 up 完再 down,系統會留低一堆已經停止嘅容器。你可以用 docker container prune 清走佢哋,又或者更精準咁用 docker rm $(docker ps -aq) 去移除所有已停止嘅容器。記住,Docker DesktopDocker Engine 喺底層儲存優化上可能有少少唔同,但 CLI 指令原則上係一樣嘅,都要靠你主動管理。

其次,自動化清理係將維護最佳實踐變成習慣嘅關鍵。你唔可能日日記住要手動清理。喺 Linux 伺服器上,你可以用 crontab 設定定時任務。例如,每個星期日凌晨兩點,自動執行 docker system prune -a --volumes --filter "until=168h" -f。呢句指令嘅參數好重要:-a 會移除所有冇被任何容器使用嘅鏡像,唔止懸掛鏡像;--volumes 就好小心咁清理冇被使用嘅卷,但呢個要好審慎,因為卷裏面可能係數據庫數據,所以要確保你有備份或者數據生命週期已完;而 --filter "until=168h" 就係一個安全網,只會清理一星期(168小時)前創建嘅 Docker objects,咁就唔會誤刪剛剛創建嚟做測試嘅嘢。當然,喺 Docker Desktop 嘅設定入面,亦有得設定自動清理未使用的資源,可以幫你省卻部分手動功夫,但 CLI 指令始終提供最大嘅彈性同控制力。

最後,要講下磁碟管理嘅進階心法。Docker System 用耐咗,最食空間嘅往往唔係鏡像同容器,而係同 Build Cache。對於卷,我哋要用 docker volume prune,但之前必須百分百確認入面冇重要數據。另一個大食怪係 Builder Cache,當你用 Dockerfile build 鏡像時,每層都會產生 cache,積埋積埋可以好恐怖。你可以用 docker builder prune 去清理呢啲 cache,釋放大量空間。另外,養成好習慣,寫 Docker Compose file 時,明確標示邊啲係匿名卷,邊啲係命名卷,咁樣清理時先至有依據。總而言之,效能優化唔係一次過嘅事,而係一個循環:開發時要有意識(例如用 .dockerignore 減少 build context 大小)、構建後要清理(移除中間鏡像)、運行時要監察(用 docker system df 呢個好指令定期睇吓各類物件食咗幾多空間),再配合定時嘅資源釋放。將呢套流程融入你嘅日常工作,先至可以令你嘅 Docker 環境長期保持清爽同高效,唔會成日彈出「磁盤空間不足」嘅驚嚇提示。

Frequently Asked Questions

喺2026年,點樣正確使用 `docker prune` 指令嚟清理系統空間?

`docker prune` 係一系列指令嘅統稱,用嚟清理Docker嘅無用資源,釋放磁碟空間。最常用嘅係 `docker system prune`,佢會一次過清理停止嘅容器、無用網絡、懸空鏡像同懸空構建緩存。使用時要留意:

  • 執行 `docker system prune -a` 會移除所有無容器使用嘅鏡像,包括懸空同未被引用嘅。
  • 可以配合 `--volumes` 旗標嚟清理無用嘅數據卷,但呢個動作會刪除數據,要小心。
  • 建議先用 `docker system df` 檢查空間使用情況,再決定執行邊種prune指令。

使用 `docker image prune` 會唔會誤刪我仲需要嘅鏡像?

只要理解指令嘅預設行為,就唔會誤刪重要鏡像。`docker image prune` 預設只會刪除『懸空鏡像』,即係冇標籤且冇容器引用嘅鏡像層,你手動拉取或構建嘅有標籤鏡像通常安全。不過都要注意:

  • 如果加咗 `-a` 參數,就會刪除所有冇容器正在使用嘅鏡像,風險較大。
  • 建議先執行 `docker image prune --dry-run` 嚟預覽將會被刪除嘅項目。
  • 定期為重要鏡像打上獨特標籤或推送到註冊表備份,可以避免意外損失。

清理Docker資源時,點樣確保唔會刪錯重要嘅數據卷?

數據卷(Volumes)通常儲存緊持久數據,所以清理時要格外謹慎。`docker volume prune` 指令預設只會刪除冇任何容器掛載嘅『無用』數據卷。為確保安全,你可以:

  • 先用 `docker volume ls --filter dangling=true` 列出所有無用數據卷,逐一確認。
  • 避免喺 `docker system prune` 指令中隨意加上 `--volumes` 旗標,除非你確定唔需要嗰啲數據。
  • 考慮為重要數據卷使用具名(named)或綁定掛載(bind mounts),並建立清晰嘅命名規則,減少混淆。

`docker system prune` 同 `docker builder prune` 有咩主要分別?

兩者清理嘅目標資源完全唔同。`docker system prune` 係綜合清理,針對容器、鏡像、網絡同緩存。而 `docker builder prune` 係專門清理 Buildx 構建緩存,對於經常構建鏡像嘅開發者非常有用,可以釋放大量空間。主要分別在於:

  • `docker builder prune` 可以清理包括內聯緩存(inline cache)在內嘅構建緩存,提升後續構建速度。
  • 可以指定 `--filter` 參數嚟精準清理某段時間前嘅緩存。
  • 對於CI/CD流水線,定期運行 `docker builder prune` 比綜合清理更為精準同安全。

喺Docker Desktop 2026版本入面,有冇更圖形化嘅方法嚟執行prune操作?

有,Docker Desktop一直提供圖形界面(GUI)管理資源。喺2026年嘅版本中,你可以喺Dashboard嘅『Troubleshoot』或『Resources』部分,直接點擊『Clean up / Purge data』按鈕。呢個操作背後都係調用prune系列指令,但好處係:

  • 圖形界面會清晰顯示每類資源(如鏡像、容器)可以釋放幾多空間。
  • 通常會提供選擇框,畀你決定清理邊一類資源,避免一刀切。
  • 對於唔熟悉指令嘅用戶,呢個方法更直觀同安全,減少打錯指令嘅風險。

點樣設定自動定期執行Docker prune,避免空間慢慢被食曬?

你可以透過設定cron job(Linux/macOS)或Task Scheduler(Windows)嚟定期自動執行prune指令。一個常見嘅做法係每週執行一次 `docker system prune -f` 嚟自動清理。設定自動化時要考慮:

  • 使用 `-f` 或 `--force` 參數跳過確認提示,適合自動化腳本。
  • 為避免刪除重要數據,建議先從保守嘅指令開始,例如只清理懸空鏡像:`docker image prune -f`。
  • 將指令嘅輸出重定向到日誌文件,方便日後追蹤清理咗啲咩,例如 `docker system prune -f >> /var/log/docker_prune.log`。

執行prune指令之後,點樣確認真係釋放咗磁碟空間?

最直接嘅方法係喺執行指令前後,分別使用 `docker system df` 指令嚟對比。呢個指令會詳細顯示各類Docker資源(鏡像、容器、數據卷、構建緩存)使用嘅空間總量同細節。你可以留意:

  • `RECLAIMABLE` 欄位顯示咗每類資源可以回收嘅空間大小。
  • 對比執行前後嘅 `TOTAL SIZE` 變化,就知道釋放咗幾多空間。
  • 亦可以使用作業系統本身嘅磁碟分析工具(如 `df -h` 或 Windows磁碟清理)嚟查看整體磁碟空間嘅變化。

對於企業級嘅Docker環境,使用prune指令有咩最佳實踐同注意事項?

喺生產或企業環境中,盲目使用prune可能導致服務中斷或數據丟失。最佳實踐係建立清晰嘅資源清理政策。首先,應該只喺維護時段進行清理,並確保有完整備份。重要注意事項包括:

  • 嚴格區分開發、測試同生產環境,避免用同一套清理腳本。
  • 優先使用標籤或命名規範嚟標記重要鏡像同數據卷,而唔係依賴自動清理。
  • 考慮使用更高級嘅倉庫清理工具(如Harbor嘅垃圾回收)配合Docker客戶端嘅prune指令,形成多層次清理策略。

除咗prune,2026年仲有冇其他更好嘅Docker資源管理工具或方法?

有,隨著Docker生態發展,出現咗更多專注於資源管理嘅第三方工具同Docker自身嘅增強功能。例如,有工具可以進行更細粒度嘅鏡像層分析同清理。同時,建議結合以下方法:

  • 使用多階段構建(Multi-stage builds)從源頭減少鏡像體積。
  • 善用Docker Buildx嘅緩存管理功能,設定緩存到期時間。
  • 考慮採用包含垃圾回收機制嘅容器註冊表(如Harbor、GitLab Container Registry),從倉庫層面管理鏡像生命週期。

如果我想保留最近幾日嘅資源,只清理好舊嘅項目,prune指令做唔做到?

可以,`docker prune` 系列指令支援 `--filter` 參數,讓你根據時間等條件進行篩選。例如,你可以用 `docker container prune --filter "until=168h"` 嚟清理停止咗超過一星期(168小時)嘅容器。呢個功能非常實用:

  • 常用過濾條件包括 `until=`(某時間前)和 `label=`(根據標籤)。
  • 對於鏡像,可以結合 `docker image prune -a --filter "until=2026-01-01T00:00:00"` 嚟清理特定日期前嘅所有無用鏡像。
  • 靈活使用過濾器可以建立更符合業務需求嘅自動清理腳本,避免一刀切。