docker Overlay目錄占用的磁盤空間過大問題
今天遇到線上機(jī)器報(bào)警,排查后查到是docker的Overlay目錄占用磁盤空間過大,記錄一下解決辦法。
Overlay目錄是干嘛的
Docker的Overlay目錄是用于存儲(chǔ)Docker容器的文件系統(tǒng)的。
Overlay是一種聯(lián)合文件系統(tǒng),它能夠?qū)⒍鄠€(gè)文件系統(tǒng)疊加在一起,形成一個(gè)只讀的基礎(chǔ)文件系統(tǒng)和一個(gè)可寫的上層文件系統(tǒng)。
在Docker中,每個(gè)容器都有自己的只讀基礎(chǔ)文件系統(tǒng)和可寫的上層文件系統(tǒng)。
當(dāng)Docker啟動(dòng)容器時(shí),會(huì)在Overlay目錄下創(chuàng)建一個(gè)新的目錄,該目錄包含了容器的只讀基礎(chǔ)文件系統(tǒng)和一個(gè)可寫的上層文件系統(tǒng)。
在容器運(yùn)行期間,所有對(duì)文件系統(tǒng)的修改都會(huì)被記錄在上層文件系統(tǒng)中。當(dāng)容器被停止時(shí),該目錄和其內(nèi)容也會(huì)被刪除。
使用Overlay目錄可以有效地節(jié)省磁盤空間,因?yàn)槎鄠€(gè)容器可以共享同一個(gè)基礎(chǔ)文件系統(tǒng)。
此外,Overlay目錄還可以提高容器的啟動(dòng)速度,因?yàn)橹恍枰虞d基礎(chǔ)文件系統(tǒng)一次,而不是每次啟動(dòng)容器都要重新加載一遍。
需要注意的是:
- Overlay目錄只適用于Linux操作系統(tǒng),因?yàn)樗蕾囉贚inux內(nèi)核的Overlay文件系統(tǒng)。
- 在Windows和macOS上,Docker使用不同的存儲(chǔ)驅(qū)動(dòng)來管理容器的文件系統(tǒng)。
解決辦法
1、刪除Overlay目錄
要?jiǎng)h除Docker的Overlay目錄,可以按照以下步驟操作:
停止所有正在運(yùn)行的Docker容器,可以使用以下命令停止所有容器:
docker stop $(docker ps -a -q)
查看當(dāng)前正在使用的Docker存儲(chǔ)驅(qū)動(dòng),可以使用以下命令查看:
docker info | grep “Storage Driver”
如果輸出中包含"overlay"或"overlay2",則表示當(dāng)前正在使用Overlay存儲(chǔ)驅(qū)動(dòng)。
執(zhí)行以下命令來刪除Overlay目錄:
sudo rm -rf /var/lib/docker/overlay2
這里的"/var/lib/docker/overlay2"是Overlay目錄的默認(rèn)位置,如果您的系統(tǒng)上Overlay目錄存儲(chǔ)在其他位置,則需要相應(yīng)地修改路徑。
重新啟動(dòng)Docker服務(wù):
sudo systemctl restart docker
這樣就可以刪除Docker的Overlay目錄了。
需要注意的是,刪除Overlay目錄將會(huì)刪除所有容器的文件系統(tǒng)數(shù)據(jù),因此在執(zhí)行刪除操作之前,請(qǐng)確保您已經(jīng)備份了必要的數(shù)據(jù),并且所有容器都已經(jīng)停止。
2、嘗試刪除該目錄下多余問卷
如果Docker的Overlay目錄占用的數(shù)據(jù)太多,可以按照以下步驟來嘗試釋放一些磁盤空間:
清理Docker容器和鏡像,可以使用以下命令清理所有已停止的容器和未使用的鏡像:
docker system prune -a
該命令將清理所有未使用的鏡像、停止的容器、網(wǎng)絡(luò)和數(shù)據(jù)卷。如果您只想清理未使用的鏡像,可以使用以下命令:
docker image prune -a
檢查Overlay目錄是否包含已經(jīng)刪除的文件,這些文件可能是由于容器沒有正確地清理導(dǎo)致的。
如果存在這樣的文件,可以手動(dòng)刪除這些文件以釋放磁盤空間。
可以使用以下命令來查找這些文件:
sudo find /var/lib/docker/overlay2 -type f -name “deleted”
該命令將列出所有包含"deleted"字符的文件。
檢查Docker的日志文件是否占用了過多的磁盤空間,可以使用以下命令來清理Docker的日志文件:
sudo truncate -s 0 /var/lib/docker/containers//-json.log
該命令將清空所有容器的日志文件。
如果上述方法無法釋放足夠的磁盤空間,那么您可能需要考慮增加磁盤空間或者將Overlay目錄移動(dòng)到另外一個(gè)磁盤分區(qū)上。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Ubuntu系統(tǒng)下Docker鏡像構(gòu)建與容器管理的完整指南
這篇文章主要為大家詳細(xì)介紹了Docker鏡像構(gòu)建與容器管理的核心知識(shí),主要內(nèi)容包括鏡像構(gòu)建,容器啟動(dòng),端口映射等,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2026-05-05
使用Docker容器部署rocketmq單機(jī)的全過程
這篇文章主要介紹了使用Docker容器部署rocketmq單機(jī),詳細(xì)介紹了查詢鏡像拉取鏡像的命令,對(duì)Docker部署rocketmq相關(guān)知識(shí)感興趣的朋友一起看看吧2022-04-04
Ubuntu-22.04與安裝的Docker Desktop連不上的問題及解決
文章說明在Ubuntu WSL1中運(yùn)行dockerps報(bào)錯(cuò),因版本不匹配導(dǎo)致Docker命令缺失,解決方法包括:將WSL默認(rèn)版本改為2,啟用Docker Desktop的WSL2集成,重啟WSL后測(cè)試,即可正常查看容器2025-08-08
docker實(shí)現(xiàn)跨宿主機(jī)的容器之間網(wǎng)絡(luò)互聯(lián)
本文主要介紹了docker實(shí)現(xiàn)跨宿主機(jī)的容器之間網(wǎng)絡(luò)互聯(lián),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
在Docker環(huán)境中如何運(yùn)行自己的代碼
這篇文章主要介紹了在Docker環(huán)境中如何運(yùn)行自己的代碼實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-03-03
docker設(shè)置redis密碼實(shí)現(xiàn)方式
這篇文章主要介紹了docker設(shè)置redis密碼實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2026-06-06
Docker 中快速構(gòu)建 Redis Cluster 集群的詳細(xì)過程
Redis Cluster 集群模式提供了數(shù)據(jù)分區(qū)和高可用性,通過分布式方式存儲(chǔ)和管理數(shù)據(jù),實(shí)現(xiàn)更高的擴(kuò)展性,本指南將演示如何使用 Docker 快速構(gòu)建一個(gè)包含 3 個(gè)節(jié)點(diǎn)的 Redis Cluster 集群,感興趣的朋友一起看看2024-05-05

