清理docker占用磁盤過大問題終極方案(親測有效!)
背景
在筆者的工作測試環(huán)境中,使用過程中突然出現(xiàn)根磁盤快吃滿了(docker也是使用的根池盤的/var/lib/docker), wtf ? 服務用不了?
當然網(wǎng)上找到了一些常規(guī)的清除docker 日志文件,清理后但是通過df -hT 查看到overlay 卷還是占有超過70%的盤。通過下圖可以知道df -h 執(zhí)行的結果 和 du -sh * 發(fā)現(xiàn)/var/lib/docker/overlay2對比占用差距巨大,"du -sh *" 算出的實際不是很大,但是通過 df -h 查看到 /var/lib/docker/overlay2/{id}/merged 這個目錄掛載占用了很多。
為何差距如此巨大?這里面肯定存在一些容器系統(tǒng)實際占有的,但是比新部署的多了200G+的盤,可能也有統(tǒng)計問題/緩存占有的(這里我也不清楚原因到底多出來的是怎么發(fā)生的,可能是操作系統(tǒng)統(tǒng)計問題?初步猜測是overlay2 沒有覆蓋內(nèi)核的數(shù)據(jù),希望有大神指點),翻遍文獻,經(jīng)過無數(shù)次測試后總結了下面的步驟,親測有效。

清理方案
1. 由于是根磁盤所以第一件事情是清理磁盤的其它文件,比如日志,不要的文件
find / -size +1G -type file
通過這個命令找打文件大 且多的不要文件,然后一一刪除掉。
2. 在第一步清理之后開始清理docker 日志文件
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"這個是抄的同行的,太懶了 懶得寫了。
3. 清理docker tmp 文件 目錄在/var/lib/docker/tmp ,接下來怎么做你懂的。
4. 清理dockers 系統(tǒng)的文件 比如 鏡像 和 卷,執(zhí)行下面兩個命令
docker system prune -a docker volume prune
5. 解決上面提到的問題(overlay2 占用磁盤過大不釋放),在容器/etc/docker/daemon.json 添加如下代碼
{
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=1"
]
}如果沒有daemon.json文件就新增一個同名文件。最后重啟docker。
systemctl stop docker systemctl start docker
6. 有可能是nexus 或者gitlab 或者harbor 這類的連接占磁盤 所有在做上面步驟之前可以先停一下。
組后效果比上圖好很多free 從幾十G 變成300G+

寫下這個的目的,發(fā)現(xiàn)網(wǎng)上的文章不全,或者就沒有效果,希望后來者更容易解決問題!看到這里就給個贊唄!?。?!
補充:還有一種情況 overlay2 目錄過大 ,沒有掛卷 導致docker runtime 文件持續(xù)寫入,在宿主機看到overlay2 某個目錄特別大, 請參考這位作者的。
http://m.fzitv.net/server/319811wb5.htm
總結
到此這篇關于清理docker占用磁盤過大問題終極方案的文章就介紹到這了,更多相關docker占用磁盤過大清理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mac下部署springBoot項目到Docker中(demo)
本文通過一個簡單的demo給大家分享Mac下部署springBoot項目到Docker的方法,感興趣的朋友一起看看吧2018-01-01
docker: invalid reference format.問題
這篇文章主要介紹了docker: invalid reference format.問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
如何根據(jù)docker服務保存日志腳本(時間可選版本)
在開發(fā)基于Docker的應用程序時,能夠在日志中查找特定信息并將此數(shù)據(jù)保存到文件中可以加快故障排除和調(diào)試過程,這篇文章主要介紹了如何根據(jù)docker服務保存日志腳本(時間可選版本)的相關資料,需要的朋友可以參考下2025-11-11
Docker 部署HAProxy v2.2.29 并暴露指標接口的問題解決
haproxy提供高可用性、負載均衡以及基于TCP(第四層)和HTTP(第七層)應用的代理,支持虛擬主機,它是免費、快速并且可靠的一種解決方案,這篇文章主要介紹了Docker 部署HAProxy v2.2.29 并暴露指標接口,需要的朋友可以參考下2023-04-04

