docker容器臨時文件去除,服務器容量空間

概述:

接到告警提醒,服務器容量不足,去查看了一下,發現確實100g左右容量已基本用完;
在這里插入圖片描述

分析:

1)查看根目錄下哪些文件夾占用容量較大

使用命令“ du -ah --max-depth=1 / ” 查看目標目錄下所有文件夾的容量:

在這里插入圖片描述
可以看到目錄 /var 下面占用了很大的容量,繼續使用命令查看“du -ah --max-depth=1 /var”:
在這里插入圖片描述
繼續跟進lib目錄“du -ah --max-depth=1 /var/lib”:
在這里插入圖片描述
繼續下鉆“du -ah --max-depth=1 /var/lib/docker/”:
在這里插入圖片描述

2、看到這里發現/var/lib/docker/overlay2 下的容量非常大

在 Linux 系統中,/var/lib/docker/overlay2 是 Docker 容器引擎使用 overlay2 存儲驅動 時的核心數據存儲目錄,主要用于管理 Docker 鏡像和容器的文件系統分層數據。
具體作用:
Docker 采用 分層存儲機制(類似 “棧” 的結構),而 overlay2 是 Docker 推薦的存儲驅動之一(基于 Linux 內核的 overlayfs 技術),/var/lib/docker/overlay2 正是這種機制的實際數據存放位置,主要包含:

1、 鏡像層(Image Layers):

Docker 鏡像由多個只讀層(Layer)組成(例如基礎系統層、依賴庫層、應用層等),這些層的實際文件數據就存儲在該目錄下。多個鏡像可能共享相同的基礎層,從而節省空間。

2、容器讀寫層(Container Layers):

當容器啟動時,Docker 會在鏡像只讀層之上添加一個 可寫層(用于容器運行時的文件修改、新增、刪除等操作),這部分臨時數據也存儲在 overlay2 目錄中。容器停止后,可寫層不會自動刪除(除非手動清理)。
元數據:
3、記錄各層的關聯關系、校驗信息等,確保 Docker 能正確組裝鏡像和容器的文件系統。
為什么這個目錄會很大?

  • 長期使用 Docker 后,未清理的 舊鏡像、停止的容器(及其可寫層)、未使用的臨時層 會不斷累積,導致目錄占用空間增大。
  • 容器運行過程中產生的日志、臨時文件、緩存等也可能存放在可寫層中,進一步占用空間。

如何清理空間?
如果該目錄占用過大,可以通過 Docker 自帶的命令安全清理(操作前建議確認不需要的資源):
清理所有未使用的資源(停止的容器、未被引用的鏡像、懸空鏡像、未使用的卷等):
本次操作就是用下面的這個命令:

bash
docker system prune -a --volumes
  • -a:刪除所有未被容器引用的鏡像(包括未打標簽的 “懸空鏡像”)。
  • –volumes:同時清理未被使用的數據卷(謹慎使用,確保卷中無重要數據)。

單獨清理無用鏡像:

bash
docker image prune -a

單獨清理停止的容器:

bash
docker container prune

注意:
不要直接手動刪除 overlay2 目錄下的文件(可能導致 Docker 數據損壞,容器 / 鏡像無法正常使用)。
清理前確保重要容器已停止或備份,避免誤刪正在使用的資源。
通過以上操作,通常能顯著減少 overlay2 目錄的占用空間。

3)執行完以上操作發現容量還是比較大

在這里插入圖片描述
繼續使用“du -ah --max-depth=1 /var/lib/docker/overlay2/”查看目錄的大小:
在這里插入圖片描述
發現紅框這個文件非常大,所以就看這個地方:
911d4b0c8e6ef3ad8cad514279b0b0ba28bb6c6a32cac154aba1d4a703c85836 的子目錄占用(43G),其他目錄占用空間較小。下面具體解釋并提供處理思路:
這些哈希命名的目錄是什么?
overlay2 目錄下的子目錄名稱是隨機哈希值,每個目錄對應 Docker 的一個 存儲層(可能是鏡像的只讀層,或容器的可寫層):

  • 帶 -init 后綴的目錄(如 16fd4ddd…-init)通常是容器初始化時的臨時層,空間很小。
  • 其他無后綴的目錄是常規的鏡像層或容器運行時的可寫層。

你看到的 911d4b0c8e6ef3ad8cad514279b0b0ba28bb6c6a32cac154aba1d4a703c85836 就是一個占用大量空間的層(極可能是某個容器的可寫層,因為鏡像層通常不會單獨這么大,且多個鏡像會共享層)。
如何找到這個大目錄對應的容器 / 鏡像?
要確定這個 43G 的層屬于哪個容器或鏡像,需要通過 Docker 的元數據關聯。步驟如下:
查看所有容器的存儲層信息:
運行以下命令,查找哪個容器的 GraphDriver.Data.MergedDir 或 UpperDir 包含這個哈希目錄:

bash
docker inspect $(docker ps -aq) | grep -B 10 "911d4b0c8e6ef3ad8cad514279b0b0ba28bb6c6a32cac154aba1d4a703c85836"

輸出中會顯示容器的 Name 或 Id,說明這個層是該容器的可寫層(容器運行時產生的文件都存在這里)。
如果不是容器,再檢查鏡像:
若上述命令沒結果,可能是某個鏡像的層(較少見,因為鏡像層通常被共享),可通過鏡像元數據查找:

bash
docker inspect $(docker images -q) | grep -B 10 "911d4b0c8e6ef3ad8cad514279b0b0ba28bb6c6a32cac154aba1d4a703c85836"

執行命令:
在這里插入圖片描述
docker inspect 結果來看,這個 43G 的大目錄 911d4b0c8e6ef3ad8cad514279b0b0ba28bb6c6a32cac154aba1d4a703c85836 明確屬于某個容器的 可寫層(UpperDir 指向該目錄,這是容器運行時寫入數據的位置)。

第一步:找到這個容器的具體信息(ID / 名稱)
你的 docker inspect 輸出只顯示了部分細節,需要進一步定位對應的容器。可以用以下命令直接找到該容器的 ID 和名稱:

bash
# 遍歷所有容器,找到包含該哈希的容器,并輸出其ID和名稱
for container in $(docker ps -aq); doif docker inspect $container | grep -q "911d4b0c8e6ef3ad8cad514279b0b0ba28bb6c6a32cac154aba1d4a703c85836"; thenecho "容器ID: $container"docker inspect --format '{{.Name}}' $container  # 輸出容器名稱fi
done

運行后會得到類似結果(示例):

plaintext
容器ID: abc123456
/nginx-app  # 容器名稱

第二步:分析容器內的大文件來源
確定容器后,需要進入容器內部,查看哪些文件占用了大量空間:

  1. 先檢查容器狀態(是否在運行):
bash
docker ps | grep 容器ID/名稱  # 若有輸出,說明正在運行;否則是已停止
  1. 進入容器內部查找大文件:
bash
# 若容器運行中,直接進入
docker exec -it 容器ID/名稱 /bin/bash
# 查看目錄下最大的20個文件
du -a / 2>/dev/null | sort -nr | head -n 20

絕對不要手動刪除 overlay2 目錄下的文件,否則可能導致 Docker 數據損壞。

在這里插入圖片描述
可以發現/tmp 容量河大有22g; 進入該目錄看有什么文件:在這里插入圖片描述

查看該目錄下最大的20個文件:
在這里插入圖片描述

刪除文件

 rm -f /tmp/+~JF*.tmp
# 示例:刪除7天前的日志(假設日志按日期命名,如 sys-console.2025-08-05.log)
find /juzi/server/logs -name "*.log" -mtime +7 -delete

注意事項
清理文件時,確保不刪除應用運行必需的臨時文件(如正在使用的緩存),必要時先暫停應用再清理。
操作后建議重啟容器,確保空間釋放生效(docker restart 容器ID)。
通過以上步驟,可顯著減少容器占用的空間,并避免未來再次出現類似問題。

從文件路徑(/tmp 臨時目錄)和命名格式(+~JF 開頭的 .tmp 文件)來看,這些文件大概率是辦公軟件(如 LibreOffice、OpenOffice 等)在編輯文檔時生成的臨時備份文件。
具體說明:

  • 臨時備份文件的作用

LibreOffice、OpenOffice 等辦公軟件在編輯文檔(如 Word 文檔、Excel 表格等)時,會自動創建臨時文件,用于:
實時保存用戶的編輯內容,防止程序崩潰、意外關閉時丟失數據;
作為文檔的臨時緩存,提升編輯時的響應速度。
這類文件的命名通常包含隨機字符(如這里的 JF 后接一串數字),并以 .tmp 為后綴,存放于系統臨時目錄(/tmp)。

  • 為何會殘留?

正常情況下,當你關閉辦公軟件或保存文檔后,這些臨時文件會被自動刪除。但如果程序異常退出(如強制關閉、崩潰),臨時文件可能來不及清理,就會殘留在 /tmp 目錄中。
關于 ip2region.xdb
這個文件是一個IP 地址定位數據庫(ip2region 是一個常用的開源 IP 庫),用于將 IP 地址解析為具體的地理位置(如國家、城市等)。很多應用程序(如日志分析工具、后臺服務)可能會臨時使用這個庫文件,用完后可能留在 /tmp 目錄。

  • 處理建議:

如果確認近期沒有正在編輯的辦公文檔,這些 +~JF*.tmp 文件可以安全刪除(避免占用磁盤空間);
ip2region.xdb 若暫時不用,也可刪除,后續有程序需要時會重新生成或下載。
刪除命令(謹慎操作,確保不再需要):

bash
rm -f /tmp/+~JF*.tmp /tmp/ip2region.xdb

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/94623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/94623.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/94623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

損耗對信號質量的影響

損耗通常分為介質損耗與導體損耗:介質損耗:介質被施加電場后介質內部帶電粒子在外加電場的作用力下進行微小移動介質損耗與頻率成正比導體損耗:導體由于存在電阻,在有電流流過時產生的熱量造成的損耗為導體損耗。同時,…

【42】【OpenCV C++】 計算圖像某一列像素方差 或 某一行像素的方差;

文章目錄1 要使用到的函數 和 原理1.1 cv::meanStdDev 函數詳解——計算均值和標準差1 .2 方差的通俗解釋2 代碼實現3 問題3.1 入口參數const cv::Mat& img 和 const cv::Mat img區別項目要求:C OPenCV 中 圖像img ,當 string ROIdirection “H”時,…

元圖 CAD 插件化革命:突破效率瓶頸,重構智能協作新范式

在建筑、機械、機電等工程領域,傳統CAD軟件的功能固化與場景割裂已成為效率提升的瓶頸。設計師常面臨“通用工具難適配專業需求”、“跨平臺協作效率低下”、“數據孤島阻礙創新”等痛點。元圖CAD憑借“場景插件化“核心技術,以模塊化能力突破行業桎梏&a…

T:歸并排序

歸并排序.逆序對簡介.歸并排序.習題.逆序對簡介 \;\;\;\;\;\;\;\;簡單介紹一下歸并排序的原理&#xff0c;逆序對的基本概念&#xff0c;然后收集相關的練習。 直接用一個基礎問題來引入。 因此知道了: \;\;\;\;\;\;\;\;逆序對就是一對數滿足 i<j&&nums[i]>nu…

三極管三種基本放大電路:共射、共集、共基放大電路

文章目錄一、共集放大電路1.靜態分析2.動態分析二、共基放大電路1.靜態分析2.動態分析總結如何判斷共射、共集、共基放大電路&#xff1f; 電路的輸入回路與輸出回路以發射極為公共端的電路稱為共射放大電路。 電路的輸入回路與輸出回路以集電極為公共端的電路稱為共集放大電路…

Function AI 助力用戶自主開發 MCP 服務,一鍵上云高效部署

作者&#xff1a;靖蘇 在 AI 與云原生協同創新的浪潮下&#xff0c;多模型、多場景智能應用日益普及。開發者面臨的首要挑戰&#xff0c;是如何實現模型之間、服務之間的高效協同&#xff0c;以及如何便捷地將自主研發能力拓展到云端&#xff0c;形成靈活可擴展的智能服務。MC…

c++編譯環境安裝(gcc、cmake)

一、gcc下載 下載地址&#xff1a;https://ftp.gnu.org/gnu/gcc/ 選擇想要下載的版本&#xff0c;然后解壓&#xff0c;查看 contrib/download_prerequisites 中的依賴。 以我下載的 gcc-7.3.0 為例&#xff0c; 二、安裝依賴包 【gmp】 https://ftp.gnu.org/gnu/gmp/ 【is…

基于貝葉斯的營銷組合模型實戰案例(PyMC實踐)

文章出自&#xff1a;基于營銷預算優化的媒體投入分配研究 本篇技術亮點在于結合了廣告飽和度和累積效應&#xff0c;通過數學模型和數值優化方法&#xff0c;精確計算電視與數字媒體的最佳預算分配比例&#xff0c;實現增量銷售最大化。該方法適合有多渠道廣告投放需求、預算…

react_05create-react-app腳手架詳細解析(export)

腳手架是什么&#xff1f; 是一種工具:快速生成項目的工程化結構&#xff0c;讓項目從搭建到開發&#xff0c;到部署&#xff0c;整個流程變得快速和便捷。 安裝過程: 1.安裝node,安裝完成后驗證版本,出現對應版本就表示成功 node --version npm --version2.React腳手架默認是使…

Uncaught TypeError: Illegal invocation

報錯信息Uncaught TypeError: Illegal invocation關鍵代碼$.operate.post(prefix "/edit", { "taskId": taskId, "taskStatus": completed });<input id"taskId" style"display: none;">[[${completeTask.taskId}]]&…

深入解析Go設計模式:責任鏈模式實戰

什么是責任鏈模式? 責任鏈模式(Chain of Responsibility Pattern)是一種行為設計模式,它通過構建處理者鏈來傳遞請求。每個處理者既能自行決定是否處理當前請求,也可將請求轉交給后續處理者。該模式的核心優勢在于解耦請求發送方與處理方,使多個對象都能獲得處理請求的機…

機器視覺系統工業相機的成像原理及如何選型

機器視覺系統是一種模擬人類視覺功能&#xff0c;通過光學裝置和非接觸式傳感器獲取圖像數據&#xff0c;并進行分析和處理&#xff0c;以實現對目標物體的識別、測量、檢測和定位等功能的智能化系統。其目的是讓機器能夠理解和解釋視覺信息&#xff0c;從而做出決策或執行任務…

Java如何快速實現短信登錄?

全文目錄&#xff1a;開篇語前言1. 短信登錄的工作原理2. 短信登錄的優點3. 短信登錄的缺點4. 短信登錄的實現示例&#xff1a;使用 Java 實現短信登錄的流程4.1 發送短信驗證碼&#xff08;偽代碼&#xff09;4.2 使用第三方短信平臺發送短信&#xff08;以阿里云為例&#xf…

HTML已死,HTML萬歲——重新思考DOM的底層設計理念

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

客戶管理系統的詳細項目框架結構

以下是針對客戶管理系統的詳細項目框架結構&#xff0c;整合了核心業務模塊&#xff08;客戶信息、合同管理、售前售后等&#xff09;&#xff0c;并補充了實用擴展模塊&#xff08;如數據統計、標簽管理等&#xff09;&#xff0c;嚴格遵循Django模塊化設計原則&#xff1a; c…

【01】OpenCV C#——C#開發環境OpenCvSharp 環境配置 工程搭建 及代碼測試

文章目錄一、OpenCV 介紹二、OpenCvSharp 介紹三、OpenCvSharp環境搭建3.1 創建新項目3.2 添加 NuGet組件3.3 代碼測試3.4 相較于 C OpenCV不同的之處四、LearnOpenCV有時候&#xff0c;單純c#做前端時會聯合C實現的dll來落地某些功能由于有時候會用C - Opencv實現算法后封裝成…

【解決辦法】報錯Found dtype Long but expected Float

Found dtype Long but expected Float錯誤通常發生在嘗試將一個數據類型為Long的張量傳遞給一個期望數據類型為Float的函數或操作時。在PyTorch中&#xff0c;Long和Float是兩種常見的數據類型&#xff0c;分別對應于64位整數和32位浮點數。某些函數或操作可能只接受特定數據類…

QtC++ 調用 tesseract開源庫 搭配 Opencv 實現文字識別:從tesseract庫基本介紹到實際應用實現

前言 在當今數字化時代&#xff0c;文字識別&#xff08;OCR&#xff09;技術已經滲透到我們生活和工作的方方面面&#xff0c;從掃描文檔的自動排版到車牌識別、票據信息提取等&#xff0c;都離不開 OCR 技術的支持。而在眾多 OCR 實現方案中&#xff0c;QtC 結合 tesseract 和…

數據集-目標檢測系列- 地球儀 數據集 globe>> DataBall

數據集-目標檢測系列- 地球儀 數據集 globe&#xff1e;&#xff1e; DataBall貴在堅持&#xff01;* 相關項目1&#xff09;數據集可視化項目&#xff1a;gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview2&#xff09;數據集訓練、推理相關項目&…

[Oracle] DUAL數據表

Oracle中的DUAL數據表是一個特殊的單行單列虛擬表結構&#xff1a;1行1列SELECT * FROM DUAL;輸出結果&#xff1a;列名默認DUMMY&#xff0c;值為X常見使用DUAL數據表的場景&#xff1a;1.系統函數調用測試當需要測試Oracle函數但不需要真實表數據時&#xff0c;我們可以考慮使…