清理docker占用磁盤過大問題終極方案(親測有效!)
背景
在筆者的工作測試環(huán)境中,使用過程中突然出現根磁盤快吃滿了(docker也是使用的根池盤的/var/lib/docker), wtf ? 服務用不了?
當然網上找到了一些常規(guī)的清除docker 日志文件,清理后但是通過df -hT 查看到overlay 卷還是占有超過70%的盤。通過下圖可以知道df -h 執(zhí)行的結果 和 du -sh * 發(fā)現/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 沒有覆蓋內核的數據,希望有大神指點),翻遍文獻,經過無數次測試后總結了下面的步驟,親測有效。

清理方案
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ā)現網上的文章不全,或者就沒有效果,希望后來者更容易解決問題!看到這里就給個贊唄?。。?!
補充:還有一種情況 overlay2 目錄過大 ,沒有掛卷 導致docker runtime 文件持續(xù)寫入,在宿主機看到overlay2 某個目錄特別大, 請參考這位作者的。
http://www.dbjr.com.cn/server/319811wb5.htm
總結
到此這篇關于清理docker占用磁盤過大問題終極方案的文章就介紹到這了,更多相關docker占用磁盤過大清理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Armbian5.9.0安裝docker及部署可視化portainer的詳細教程
這篇文章主要介紹了Armbian5.9.0安裝docker及部署可視化portainer的詳細教程,通過?ssh?進去?Armbian?系統(tǒng)后,輸入相應代碼,按提示輸入y,等待安裝完成即可,需要的朋友可以參考下2022-05-05
Windows11安裝Docker Desktop教程的圖文教程
本文主要介紹一下Windows11安裝Docker Desktop教程的圖文教程,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-10-10
rocketmq-streams的ILeaseService使用示例詳解
這篇文章主要為大家介紹了rocketmq-streams的ILeaseService使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
docker創(chuàng)建鏡像并上傳云端服務器的實現示例
鏡像是一種輕量級、可執(zhí)行的獨立軟件包,用來打包軟件運行環(huán)境和基于運行環(huán)境開發(fā)的軟件,本文介紹了如何使用Docker創(chuàng)建鏡像,并將其上傳到云端,感興趣的可以了解一下2023-08-08

