清理docker占用磁盤(pán)過(guò)大問(wèn)題終極方案(親測(cè)有效!)
背景
在筆者的工作測(cè)試環(huán)境中,使用過(guò)程中突然出現(xiàn)根磁盤(pán)快吃滿了(docker也是使用的根池盤(pán)的/var/lib/docker), wtf ? 服務(wù)用不了?
當(dāng)然網(wǎng)上找到了一些常規(guī)的清除docker 日志文件,清理后但是通過(guò)df -hT 查看到overlay 卷還是占有超過(guò)70%的盤(pán)。通過(guò)下圖可以知道df -h 執(zhí)行的結(jié)果 和 du -sh * 發(fā)現(xiàn)/var/lib/docker/overlay2對(duì)比占用差距巨大,"du -sh *" 算出的實(shí)際不是很大,但是通過(guò) df -h 查看到 /var/lib/docker/overlay2/{id}/merged 這個(gè)目錄掛載占用了很多。
為何差距如此巨大?這里面肯定存在一些容器系統(tǒng)實(shí)際占有的,但是比新部署的多了200G+的盤(pán),可能也有統(tǒng)計(jì)問(wèn)題/緩存占有的(這里我也不清楚原因到底多出來(lái)的是怎么發(fā)生的,可能是操作系統(tǒng)統(tǒng)計(jì)問(wèn)題?初步猜測(cè)是overlay2 沒(méi)有覆蓋內(nèi)核的數(shù)據(jù),希望有大神指點(diǎn)),翻遍文獻(xiàn),經(jīng)過(guò)無(wú)數(shù)次測(cè)試后總結(jié)了下面的步驟,親測(cè)有效。
清理方案
1. 由于是根磁盤(pán)所以第一件事情是清理磁盤(pán)的其它文件,比如日志,不要的文件
find / -size +1G -type file
通過(guò)這個(gè)命令找打文件大 且多的不要文件,然后一一刪除掉。
2. 在第一步清理之后開(kāi)始清理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 ========"
這個(gè)是抄的同行的,太懶了 懶得寫(xiě)了。
3. 清理docker tmp 文件 目錄在/var/lib/docker/tmp ,接下來(lái)怎么做你懂的。
4. 清理dockers 系統(tǒng)的文件 比如 鏡像 和 卷,執(zhí)行下面兩個(gè)命令
docker system prune -a docker volume prune
5. 解決上面提到的問(wèn)題(overlay2 占用磁盤(pán)過(guò)大不釋放),在容器/etc/docker/daemon.json 添加如下代碼
{ "log-opts": { "max-size": "10m", "max-file": "3" }, "storage-driver": "overlay2", "storage-opts": [ "overlay2.override_kernel_check=1" ] }
如果沒(méi)有daemon.json文件就新增一個(gè)同名文件。最后重啟docker。
systemctl stop docker systemctl start docker
6. 有可能是nexus 或者gitlab 或者h(yuǎn)arbor 這類的連接占磁盤(pán) 所有在做上面步驟之前可以先停一下。
組后效果比上圖好很多free 從幾十G 變成300G+
寫(xiě)下這個(gè)的目的,發(fā)現(xiàn)網(wǎng)上的文章不全,或者就沒(méi)有效果,希望后來(lái)者更容易解決問(wèn)題!看到這里就給個(gè)贊唄?。。。?nbsp;
補(bǔ)充:還有一種情況 overlay2 目錄過(guò)大 ,沒(méi)有掛卷 導(dǎo)致docker runtime 文件持續(xù)寫(xiě)入,在宿主機(jī)看到overlay2 某個(gè)目錄特別大, 請(qǐng)參考這位作者的。
http://chabaoo.cn/server/319811wb5.htm
通過(guò)docker overlay2 目錄名查找對(duì)應(yīng)容器名
總結(jié)
到此這篇關(guān)于清理docker占用磁盤(pán)過(guò)大問(wèn)題終極方案的文章就介紹到這了,更多相關(guān)docker占用磁盤(pán)過(guò)大清理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Armbian5.9.0安裝docker及部署可視化portainer的詳細(xì)教程
這篇文章主要介紹了Armbian5.9.0安裝docker及部署可視化portainer的詳細(xì)教程,通過(guò)?ssh?進(jìn)去?Armbian?系統(tǒng)后,輸入相應(yīng)代碼,按提示輸入y,等待安裝完成即可,需要的朋友可以參考下2022-05-05jenkins+gitlab+nginx部署前端應(yīng)用實(shí)現(xiàn)
在日常開(kāi)發(fā)中,往往可能同時(shí)多個(gè)項(xiàng)目并行進(jìn)行開(kāi)發(fā),本文介紹了jenkins+gitlab+nginx部署前端應(yīng)用實(shí)現(xiàn),感興趣的可以了解一下2021-05-05Windows11安裝Docker Desktop教程的圖文教程
本文主要介紹一下Windows11安裝Docker Desktop教程的圖文教程,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-10-10docker-compose實(shí)現(xiàn)容器任務(wù)編排的方法步驟
本文主要介紹了docker-compose實(shí)現(xiàn)容器任務(wù)編排的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Docker部署Python應(yīng)用的方法實(shí)現(xiàn)
在云服務(wù)使用越來(lái)越普及的趨勢(shì)下,很多應(yīng)用在考慮成本和、可部署性、維護(hù)性方面,選擇docker方案部署是一個(gè)不錯(cuò)的選擇,本文主要介紹了Docker部署Python應(yīng)用的方法實(shí)現(xiàn),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06rocketmq-streams的ILeaseService使用示例詳解
這篇文章主要為大家介紹了rocketmq-streams的ILeaseService使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07docker創(chuàng)建鏡像并上傳云端服務(wù)器的實(shí)現(xiàn)示例
鏡像是一種輕量級(jí)、可執(zhí)行的獨(dú)立軟件包,用來(lái)打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開(kāi)發(fā)的軟件,本文介紹了如何使用Docker創(chuàng)建鏡像,并將其上傳到云端,感興趣的可以了解一下2023-08-08docker網(wǎng)卡的IP地址修改方法總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于docker網(wǎng)卡的IP地址修改方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06