docker的overlay2中存的都是什么及如何清理/var/lib/docker/overlay2
前段時間有客戶反映我們部署服務(wù)的服務(wù)器磁盤快滿了,聯(lián)系我們說看看清理一下
于是就開始看服務(wù)器
我們所有的服務(wù)都是使用docker部署的,經(jīng)過檢查,這次占滿了磁盤的都是在/var/lib/docker/overlay2
目錄下的文件夾,這個路徑一看就是docker的存儲目錄,但是為什么docker跑得好好的他的占用會變高呢?
圖中可見,/var/lib/docker/overlay2目錄的占用大的離譜
那我們進來看看這個目錄下是什么占用了這么大的空間
上圖可見,/var/lib/docker/overlay2
目錄下的文件夾名基本都是這種md5編碼,并且其中有一個a875e開頭的文件夾的占用達到了518G,相當恐怖
那/var/lib/docker/overlay2
目錄存 的到底是什么呢?為什么能有這么大的占用?我們又需要如何去進行清理呢? 我查閱了一些博客文章了解到,overlay2是docker使用的文件存儲驅(qū)動,也就是說,在/var/lib/docker/overlay2
目錄下的文件都是docker使用的存儲【廢話】
overlay2是分層存儲,每一層通過本層的md5作為文件夾名來命名,如果要存儲的兩個東西【比如兩個鏡像】的底層幾層的內(nèi)容是一樣的,那他們的md5就也是一樣的,通過md5核驗,確認他們這幾層是一樣的之后,在overlay2中實際存儲的時候,這幾層就可以只存儲一份,然后由這兩個東西共用,來達到節(jié)省空間的目的。
所以我們在/var/lib/docker/overlay2
目錄下看到的這茫茫多的md5,就是一層一層的數(shù)據(jù) ?
那為什么我們客戶服務(wù)器上的a875e開頭的文件夾占用會達到518G呢?究竟是什么東西占用了這么多? 我們進這個文件夾里看一眼
可以看到,在這個a875e的文件夾中,有一個diff
文件夾占用259G,一個merged
文件夾占用259G,直覺告訴我這兩個文件夾中存儲的應(yīng)該是基本一致的東西 ?
所以是什么東西呢??? ?
經(jīng)過排查,我們發(fā)現(xiàn)是我們一個服務(wù)會將一些運行文件存儲在本地文件路徑中,但是,這個服務(wù)在啟動的時候因為一些疏忽,沒有將他要存儲文件的路徑掛載到宿主機中,導致這個服務(wù)一直在往容器內(nèi)的某個路徑寫文件,這個服務(wù)在運行了一年多之后寫入容器內(nèi)本地的文件終于到了……259G,但雖然在容器內(nèi)占用是259G,但是在宿主機上,變成了diff
文件夾占用259G,merged
文件夾占用259G,合共518G,磁盤空間就這么被吃掉了。 ?
為了測試我們的推斷,我們進入容器內(nèi)刪除了那些本地文件,然后再在宿主機上查看宿主機的磁盤占用,果然,我們在容器內(nèi)刪除的文件大小是259G,但是宿主機上空出了518G的空間,故我們可以確定,我們在a875e的文件夾中看到的diff
文件夾和merged
文件夾,其中實際占用巨量空間的東西就是我們在容器內(nèi)存儲的本地文件,換言之,/var/lib/docker/overlay2
目錄會存儲我們起的容器中的文件【應(yīng)該還包括我們的鏡像本身,docker鏡像也是分層存儲在這里的,畢竟容器跑起來以后系統(tǒng)相關(guān)的一些文件是和鏡像一樣的】
所以回到標題
docker的overlay2中存的都是什么?
存的是我們的鏡像文件和容器內(nèi)的文件
如何清理/var/lib/docker/overlay2
?
- 刪除不用的鏡像
- 檢查是否有容器內(nèi)的服務(wù)會往容器內(nèi)的本地寫文件
- 檢查各容器的磁盤占用,如果有發(fā)現(xiàn)磁盤占用過高的情況則對應(yīng)處理【原則上如果容器內(nèi)服務(wù)有寫文件行為,則寫文件的目錄應(yīng)當掛載到宿主機上,而不是直接往容器的本地寫
- 需要應(yīng)急處理的話可以先進入容器內(nèi)直接刪除容器內(nèi)可以刪除的文件
總結(jié)
到此這篇關(guān)于docker的overlay2中存的都是什么及如何清理/var/lib/docker/overlay2的文章就介紹到這了,更多相關(guān)docker overlay2中存的是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker快速部署gitlab+gitlab-runner實例
這篇文章主要介紹了Docker快速部署gitlab+gitlab-runner實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06Docker創(chuàng)建tomcat容器實例后無法訪問(HTTP狀態(tài)404)
本文主要介紹了Docker創(chuàng)建tomcat容器實例后無法訪問,HTTP狀態(tài)顯示404,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07使用Docker安裝Nginx并配置端口轉(zhuǎn)發(fā)問題及解決方法
這篇文章主要介紹了使用Docker安裝Nginx并配置端口轉(zhuǎn)發(fā),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01親手教你Docker Compose安裝DOClever的詳細過程
DOClever是一個可視化免費開源的接口管理工具,DOClever前后端全部采用了javascript來作為我們的開發(fā)語言。這篇文章主要介紹了Docker Compose安裝DOClever的詳細過程,需要的朋友可以參考下2021-09-09