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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;我们可以考虑使…