Docker系統(tǒng)空間占用過大的清理方法詳解
在日常使用 Docker 的過程中,我們經(jīng)常會發(fā)現(xiàn)服務(wù)器磁盤空間莫名其妙地被占滿。特別是 /var/lib/docker/overlay2 目錄動輒幾十個 G,讓人懷疑是不是有人用 Docker 挖礦了……
其實,大部分情況下問題并不復雜:很多 Docker 鏡像層、構(gòu)建緩存、停止的容器,仍然占用大量空間卻沒有被清理。解決方案也非常簡單,一條命令就能完成清理!
問題現(xiàn)象
使用 df -h 查看磁盤使用情況:
df -h
發(fā)現(xiàn)根目錄 / 使用率接近 100%:
/dev/vda1 99% /var/lib/docker/overlay2 占用非常大
進一步查看是 Docker 的 overlay2 目錄占用了大量空間:
du -h --max-depth=1 /var/lib/docker/overlay2 | sort -hr | head
結(jié)果顯示幾十 GB 的無效目錄,甚至根本不是正在使用容器的層:
20G /var/lib/docker/overlay2/abc123...
18G /var/lib/docker/overlay2/9dd...
...
但是這些目錄又不敢直接 rm -rf 刪除,擔心刪錯了導致容器啟動失敗。
判斷哪些目錄不能刪
我們可以用 docker inspect 判斷某個 overlay2 層是否屬于正在運行的容器:
docker inspect <CONTAINER_ID> --format '{{.GraphDriver.Data.UpperDir}}'
如果匹配到 /var/lib/docker/overlay2/<id>/diff 說明是正在使用,不能動。
但是手動檢查太費時間!有沒有一條命令能自動清理?
解決方案:一條命令,自動清理
docker system prune
默認清理內(nèi)容:
| 清理內(nèi)容 | 說明 |
|---|---|
| 停止的容器 | Exited 狀態(tài) |
| 無用的網(wǎng)絡(luò) | bridge 等臨時網(wǎng)絡(luò) |
| dangling images | <none> 類型的鏡像層 |
| build cache | Docker 構(gòu)建緩存 |
執(zhí)行時會提示確認:
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all build cache
Are you sure you want to continue? [y/N] y
效果立竿見影:清理后 overlay2 目錄明顯縮小,磁盤恢復正常!
如果想清理更多空間
docker system prune -a
這會額外清理 所有未使用的鏡像(包括沒有運行容器引用的)
更徹底的版本(連 volumes 一起清)
docker system prune -a --volumes
注意:執(zhí)行前一定要確認 volume 是否還在使用!
清理前后對比
| 狀態(tài) | 磁盤使用率 |
|---|---|
| 清理前 | 98% |
| 執(zhí)行 docker system prune 后 | 降到 65% |
| 再執(zhí)行 -a --volumes 后 | 僅 40% |
建議定期維護
可以寫成定時任務(wù),每周清理一次:
# /etc/crontab 0 3 * * SUN root docker system prune -a -f
總結(jié)
| 問題 | 解決方法 |
|---|---|
| overlay2 占空間大 | docker system prune |
| 停止的容器太多 | docker ps -a → docker rm |
| 鏡像太多 | docker image prune -a |
| 卷占空間 | docker volume prune |
實戰(zhàn)經(jīng)驗
千萬不要手動 rm -rf /var/lib/docker/overlay2/...
最安全的清理方式永遠是 Docker 官方命令!
這樣不僅避免誤刪容器層,也讓 Docker 內(nèi)部的元數(shù)據(jù)保持一致,系統(tǒng)更穩(wěn)定。
結(jié)語
如果你也遇到系統(tǒng)空間被 Docker 吃光的問題,不妨試試這一條命令:
docker system prune
到此這篇關(guān)于Docker系統(tǒng)空間占用過大的清理方法詳解的文章就介紹到這了,更多相關(guān)Docker空間占用過大清理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker?pull出現(xiàn)錯誤:Error?response?from?daemon
這篇文章主要給大家介紹了關(guān)于解決docker?pull出現(xiàn)錯誤:Error?response?from?daemon的相關(guān)資料,這個錯誤提示一般是因為你沒有權(quán)限拉取對應(yīng)的鏡像,文中將解決辦法介紹的非常詳細,需要的朋友可以參考下2023-12-12
iptables如何限制宿主機跟Docker IP和端口訪問(安全整改)
本文詳細介紹了如何通過iptables對網(wǎng)絡(luò)訪問進行限制,包括限制特定IP或網(wǎng)段訪問特定服務(wù),以及在Docker環(huán)境下,如何設(shè)置DOCKER-USER鏈限制IP和端口訪問,確保網(wǎng)絡(luò)安全2024-10-10
Docker -p將容器內(nèi)部的端口映射到宿主機的端口方式
文章介紹了使用-docker參數(shù)將容器內(nèi)部端口映射到宿主機端口的方法,包括單端口映射、多端口映射、自動分配宿主機端口、查看實際端口、綁定特定宿主機IP和測試端口連通性2025-11-11
Docker環(huán)境下快速部署Ollama與Open-WebUI的詳細指南
在本篇文章中,我們將深入探討如何在Docker中高效部署 Ollama 和 Open-WebUI,并解決在實際使用中常見的問題,有需要的小伙伴可以跟隨小編一起學習一下2026-03-03

