k8s 與docker空間使用分析與清理方法
1. 前言
使用 Docker 運(yùn)行業(yè)務(wù)一段時(shí)間后,可能會(huì)出現(xiàn)宿主節(jié)點(diǎn)的磁盤(pán)容量占用高,導(dǎo)致宿主機(jī)磁盤(pán)空間不足等異常,對(duì)業(yè)務(wù)造成影響。本文對(duì) Docker 的空間占用進(jìn)行匯總分析,以及對(duì)應(yīng)的清理操作進(jìn)行說(shuō)明,希望能幫到大家~
2. 常見(jiàn)問(wèn)題場(chǎng)景
一般來(lái)說(shuō),docker包括鏡像(image)、容器(container)和數(shù)據(jù)卷(volumn)三部分,日常遇到的docker空間占用問(wèn)題,基本也是從這三方面入手。典型的場(chǎng)景有:
- json.log文件過(guò)大
- 鏡像較多占用空間大
- local volumn占用空間大
基本上來(lái)說(shuō),docker 空間占用大,都是圍繞上面幾方面來(lái)開(kāi)展分析的。下面說(shuō)說(shuō)空間分析及處理應(yīng)對(duì)措施
3. docker 磁盤(pán)空間使用分析及處理
- 排查命令: docker system df
- 命令可以查詢(xún)鏡像(Images)、容器(Containers)和本地卷(Local Volumes)等空間占用情況,如下效果
docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 17 15 6.016GB 1.001GB (16%) Containers 29 26 4.444MB 0B (0%) Local Volumes 7 4 465.5MB 232.7MB (50%) Build Cache 0 0 0B 0B
3.1 image鏡像占用分析及解決
通過(guò) docker system df命令,查看Images鏡像占用的空間大小,可以看到總的鏡像數(shù)以及在用的鏡像數(shù)??梢酝ㄟ^(guò)以下命令進(jìn)行清理,從而達(dá)到釋放空間占用的作用
# 通過(guò)命令清除無(wú)用的鏡像,停止的容器和Volumes docker system prune -a # 也可以通過(guò)命令手動(dòng)刪除指定鏡像 docker rmi 鏡像ID
3.2 json.log占用分析及解決
容器鏡像數(shù)較多導(dǎo)致的空間占用是最常見(jiàn)也最容易處理的場(chǎng)景,除通過(guò)docker system prune清理外,也可通過(guò)docker rmi的命令進(jìn)行清理。除此之外 ,還有常見(jiàn)的空間占用場(chǎng)景,如json.log文件過(guò)大。當(dāng)容器運(yùn)行一段時(shí)間后,容器的控制臺(tái)日志輸出過(guò)大的時(shí)候,會(huì)導(dǎo)致一個(gè)以容器ID-json命名的Log文件,持續(xù)增大,一般是在/var/lib/docker/containers/目錄下,可以通過(guò)如下命令查看json.log占用
ls -lh $(find /var/lib/docker/containers/ -name *-json.log) -rw-r----- 1 root root 0 Dec 27 14:22 /var/lib/docker/containers/021451de5bbaf2ac68839d4b9f3a4605be673d4286b3963ee2bddb1a3d01b6d2/021451de5bbaf2ac68839d4b9f3a4605be673d4286b3963ee2bddb1a3d01b6d2-json.log -rw-r----- 1 root root 81K Dec 27 16:27 /var/lib/docker/containers/0413a938fff4603b9d898b680ba16b11b02a7cac25ddfaea318c15f1398668fd/0413a938fff4603b9d898b680ba16b11b02a7cac25ddfaea318c15f1398668fd-json.log -rw-r----- 1 root root 113 Dec 21 21:44 /var/lib/docker/containers/1e6fb2c4f4bc9afeff1406c2c7f4a48e162c3b8075aef6e67871c942232b2fbe/1e6fb2c4f4bc9afeff1406c2c7f4a48e162c3b8075aef6e67871c942232b2fbe-json.log -rw-r----- 1 root root 26K Dec 27 14:21 /var/lib/docker/containers/283e6cfc3f9e52ffb5dfd26386d910010a6f14e2304d28c244c9010b3396f2aa/283e6cfc3f9e52ffb5dfd26386d910010a6f14e2304d28c244c9010b3396f2aa-json.log -rw-r----- 1 root root 7.6K Dec 27 16:27 /var/lib/docker/containers/338ee505e76965f6636c229f437fe30018acd24c94e3aab9eec2fd3dffe67d29/338ee505e76965f6636c229f437fe30018acd24c94e3aab9eec2fd3dffe67d29-json.log
解決方案有3種
簡(jiǎn)單處理:
echo '' > /var/lib/docker/containers/容器id-json.log
運(yùn)行服務(wù)時(shí)指定json log大小及數(shù)量
# 參數(shù):--log-opt max-size=200m --log-opt max-file=3 docker run -it --log-opt max-size=200m --log-opt max-file=3 nginx
全局配置
vim /etc/docker/daemon.json { "log-driver":"json-file", "log-opts":{ "max-size" :"200m","max-file":"3" } } systemctl daemon-reload systemctl restart docker
3.3 Local Volumnes占用分析及解決
Local Volumnes占用空間大,相對(duì)來(lái)說(shuō)比較少遇到的一種場(chǎng)景,像鏡像和json.log占用的情況,比較常見(jiàn)。
docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 42 20 10.81GB 4.265GB (39%) Containers 64 39 1.358GB 200.3MB (14%) Local Volumes 7 4 64.9GB 232.7MB (0.3%) Build Cache 0 0 0B 0B
從命令可以看出,Local Volumnes占用超過(guò)60GB,可釋放空間只有232MB,因此通過(guò)命令:docker system prune清理也只能釋放232MB的空間占用。
解決方案
思路:
查看Local Volumes占用明細(xì)->查找關(guān)聯(lián)的容器ID->清理對(duì)應(yīng)容器->完成空間占用清理
# 通過(guò)參數(shù)-v查看詳細(xì)的空間占用 docker system df -v *** *** Local Volumes space usage: VOLUME NAME LINKS SIZE 13cb48964bd5f5b2154687cd2ec9d948c03183c778a131021d7a078251e327fc 1 77.58MB 0c6f791c44f9e18c414df127effeb03bcd4e3d3f00a1da9520b1f79308d5d4b4 0 77.58MB 7995d23375e56221438cca64ddd9f0a799c6492cf28ea4cf8689fa3f6ca6d0b2 2 77.58MB c742d23648db19b93a731d6861864f7fc90ec22bfd3aeaa73c811fe587126777 1 77.58MB b60f3956f0d502f163e47806b2bfe6d8e1ad3fe555d1a01c86541708ec5277ff 1 0B fc52cd72fa393c8cbe92b90de2d5e555d5a7cee725871ff729a1941fadfe942d 1 62.22GB 86cff21c7b3690e94548a94e5e87428761d3887f0a62abbd85ddf1b15684dbd8 0 77.58MB 0ebc98b7d24962a968acb73ae65abd9b1e846098ba4f7d68f09c8d163cedd12e 0 77.58MB Build cache usage: 0B CACHE ID CACHE TYPE SIZE CREATED LAST USED USAGE SHARED
可以看出磁盤(pán)占用主要是:fc52cd72fa393c8cbe92b90de2d5e555d5a7cee725871ff729a1941fadfe942d,因此,要查看此卷相關(guān)聯(lián)的容器ID
# 編寫(xiě)py腳本 import os volumn = "fc52cd72fa393c8cbe92b90de2d5e555d5a7cee725871ff729a1941fadfe942d" names = [line.split(" ")[-1] for line in os.popen("docker ps -a").read().split("\n") if line ] print([name for name in names[1:] if volumn in os.popen("docker inspect %s"%name).read()]) # 執(zhí)行腳本 python volumn.py # 返回結(jié)果如下 ['collection-687df56967-z5t6f'] 找到相關(guān)聯(lián)的容器后,判斷容器運(yùn)行著什么,內(nèi)容是否可清理
4. 總結(jié)
在日常使用中,安裝docker后做好優(yōu)化配置工作,如配置json log大小及文件限制,定期清理無(wú)用的容器和鏡像,可以減少docker 空間占用導(dǎo)致宿主機(jī)磁盤(pán)空間不夠?qū)е碌母鞣N問(wèn)題。當(dāng)遇到以上措施無(wú)法處理的情況的時(shí)候,要靈活使用docker system df -v的命令進(jìn)行故障排查分析。希望這個(gè)能幫到各位,有用就點(diǎn)個(gè)關(guān)注和收藏吧~
到此這篇關(guān)于k8s 與docker空間使用分析與清理的文章就介紹到這了,更多相關(guān)k8s 與docker空間使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決docker容器中出現(xiàn)Access denied for user &apo
這篇文章主要介紹了解決docker容器中出現(xiàn)Access denied for user 'root'@'172.17.0.2'(using password: YES)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06在CentOS 7上安裝Docker環(huán)境的方法與注意事項(xiàng)
這篇文章主要介紹了在CentOS 7上安裝Docker環(huán)境的方法與注意事項(xiàng),需要的朋友可以參考下2016-10-10Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法
這篇文章主要介紹了Docker 搭建 Tomcat 運(yùn)行環(huán)境的方法,Docker與虛擬機(jī)及搭建過(guò)程,介紹的非常詳細(xì),需要的朋友可以參考下2016-10-10私有云存儲(chǔ)Minio Docker鏡像無(wú)法啟動(dòng),提示:Adding local Minio
使用Minio在本地搭建私有云存儲(chǔ)時(shí)出現(xiàn)無(wú)法啟動(dòng),查看日志頻繁輸出“Adding local Minio host to 'mc' configuration...”,然后停止了,本文給大家分享私有云存儲(chǔ)Minio Docker鏡像無(wú)法啟動(dòng),提示:Adding local Minio host to 'mc' configuration,感興趣的朋友一起看看吧2023-11-11docker容器狀態(tài)的轉(zhuǎn)換實(shí)現(xiàn)
這篇文章主要介紹了docker容器狀態(tài)的轉(zhuǎn)換實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口的問(wèn)題解決
haproxy提供高可用性、負(fù)載均衡以及基于TCP(第四層)和HTTP(第七層)應(yīng)用的代理,支持虛擬主機(jī),它是免費(fèi)、快速并且可靠的一種解決方案,這篇文章主要介紹了Docker 部署HAProxy v2.2.29 并暴露指標(biāo)接口,需要的朋友可以參考下2023-04-04docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解
這篇文章主要介紹了 docker 動(dòng)態(tài)映射運(yùn)行的container端口實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10