当前位置: 首页 > article >正文

Linux服务器磁盘突然被占满?小心是Docker在“吃”空间!手把手教你用ncdu排查和清理

Linux服务器磁盘突然被占满小心是Docker在吃空间手把手教你用ncdu排查和清理那天早上当我像往常一样登录开发服务器准备部署新版本时终端里刺眼的红色警告让我瞬间清醒——/dev/sda6 100% used。作为一个常年与Docker打交道的开发者我立刻意识到这很可能又是那些隐形空间吞噬者在作祟。Docker确实极大简化了我们的开发流程但如果不了解它的存储机制很容易就会陷入磁盘空间莫名消失的困境。这次经历让我决定系统性地梳理Docker空间占用问题。与网上大多数泛泛而谈的Linux磁盘清理教程不同本文将聚焦Docker特有的存储机制特别是aufs/overlay2存储驱动下那些容易被忽视的空间占用点。我们会使用ncdu这款神器进行深度空间分析并探讨从粗暴清理到精细管理的全套解决方案。1. 为什么Docker会成为磁盘空间的隐形杀手很多开发者第一次遇到Docker占用磁盘空间时都会感到困惑——明明容器运行得好好的为什么主机磁盘会突然告急这需要从Docker的存储架构说起。Docker使用分层存储机制每个镜像和容器都由多个只读层叠加组成。当我们执行docker pull或docker build时这些层会被下载并存储在/var/lib/docker目录下。问题在于Docker默认不会自动清理这些资源导致以下几种常见情况废弃的镜像层每次构建新镜像都会产生新层旧层不会被自动删除停止的容器即使容器已停止其写入层仍然占用空间构建缓存Docker构建过程中的中间缓存会持续累积容器日志默认情况下容器日志会无限增长更棘手的是使用传统的du命令很难直观地发现这些问题。因为Docker的存储驱动如aufs/overlay2会通过联合挂载的方式呈现文件系统导致在普通目录下查看的大小与实际磁盘占用不一致。2. 诊断利器ncdu深度使用指南当面对磁盘已满的紧急情况时我们需要一款比传统du更高效的工具。ncdu(NCurses Disk Usage)就是为此而生——它不仅能快速扫描磁盘使用情况还提供了交互式界面帮助定位问题。2.1 安装与基本操作在基于Debian的系统上安装sudo apt update sudo apt install ncdu -y对于RHEL/CentOS系统sudo yum install ncdu -y基本扫描命令sudo ncdu / # 扫描整个根目录扫描完成后你会看到一个交互式界面以下是最常用的操作键按键功能描述↑/↓上下移动光标→/Enter进入选中目录←返回上级目录n按文件名排序s按大小排序d删除选中项g切换百分比显示模式2.2 定位Docker存储热点针对Docker问题我们需要重点关注/var/lib/docker目录sudo ncdu /var/lib/docker典型的问题目录结构可能如下/var/lib/docker ├── overlay2 # 存储驱动目录占用最大 │ ├── 0123456789abcdef... # 镜像层哈希目录 │ └── ... ├── containers # 容器相关数据 │ ├── abcdef... # 容器ID目录 │ │ └── abcdef...-json.log # 容器日志文件 │ └── ... └── volumes # 数据卷 ├── _data # 卷数据 └── ...在实际案例中我曾发现一个生产环境的overlay2目录占用了近80GB空间其中大部分是数月积累的旧镜像层和停止的容器。3. 精准清理策略从安全到彻底找到问题所在后我们需要根据实际情况选择清理策略。以下是按照风险从低到高排列的解决方案3.1 安全清理日志与缓存清理容器日志不影响运行中的容器# 查看日志文件大小 sudo find /var/lib/docker/containers -name *-json.log -exec ls -lh {} \; # 清空所有容器日志 sudo sh -c truncate -s 0 /var/lib/docker/containers/*/*-json.log清理构建缓存docker builder prune3.2 中级清理未使用资源使用docker system prune清理孤立资源# 查看将被删除的内容模拟运行 docker system prune --dry-run # 实际执行清理 docker system prune -f这个命令会删除所有停止的容器不被任何容器使用的网络悬空镜像未被任何容器引用的镜像构建缓存3.3 彻底清理重置Docker存储当需要彻底清理时注意这将删除所有Docker数据# 停止Docker服务 sudo systemctl stop docker # 删除Docker存储目录 sudo rm -rf /var/lib/docker/* # 重启Docker sudo systemctl start docker警告此操作会删除所有镜像、容器和卷仅在所有容器都可以重建时使用。4. 预防胜于治疗Docker存储管理最佳实践清理只是治标建立良好的存储管理习惯才能治本。以下是我总结的几条关键实践4.1 定期维护策略建议将以下命令加入cron定期执行# 每周清理一次未使用资源 docker system prune -f # 每月清理一次构建缓存 docker builder prune -af4.2 日志管理配置在/etc/docker/daemon.json中配置日志轮转{ log-driver: json-file, log-opts: { max-size: 10m, max-file: 3 } }4.3 存储驱动选择不同存储驱动的空间效率对比驱动类型空间效率性能稳定性overlay2高高高aufs中中高devicemapper低低中推荐使用overlay2作为生产环境存储驱动可通过以下命令检查当前驱动docker info | grep Storage Driver4.4 镜像构建优化减少镜像层数是节省空间的关键# 不好的实践 - 每个RUN创建新层 RUN apt update RUN apt install -y package1 RUN apt install -y package2 RUN apt clean # 好的实践 - 合并命令减少层数 RUN apt update \ apt install -y package1 package2 \ apt clean5. 高级技巧当标准方法不够用时在某些极端情况下即使执行了上述所有清理操作磁盘空间仍然异常。这时可能需要考虑以下高级排查手段5.1 查找被删除但仍被进程占用的文件# 查找已删除但未释放的大文件 sudo lsof | grep deleted | sort -nk7 | tail5.2 检查文件系统错误# 卸载文件系统 sudo umount /dev/sda6 # 检查并修复 sudo fsck -y /dev/sda65.3 调整Docker存储位置如果根分区空间有限可以考虑将Docker存储迁移到其他分区# 停止Docker服务 sudo systemctl stop docker # 迁移数据 sudo rsync -avz /var/lib/docker /mnt/big_disk/ # 修改Docker配置 sudo vim /etc/docker/daemon.json添加以下内容{ data-root: /mnt/big_disk/docker }最后重启Docker服务sudo systemctl start docker那次磁盘爆满事件后我在所有服务器上都设置了监控告警当/var/lib/docker超过特定阈值时立即通知。同时我也养成了定期检查Docker存储使用情况的习惯——毕竟在运维领域预防性维护永远比紧急救火来得高效。

相关文章:

Linux服务器磁盘突然被占满?小心是Docker在“吃”空间!手把手教你用ncdu排查和清理

Linux服务器磁盘突然被占满?小心是Docker在"吃"空间!手把手教你用ncdu排查和清理 那天早上,当我像往常一样登录开发服务器准备部署新版本时,终端里刺眼的红色警告让我瞬间清醒——/dev/sda6 100% used。作为一个常年与D…...

Winform项目老树开新花:用CefSharp+ECharts轻松搞定现代化数据大屏(含资源释放避坑指南)

Winform项目现代化改造:CefSharp与ECharts打造工业级数据大屏实战 在工业自动化与仓储管理领域,大量遗留系统仍基于Winform框架运行。这些系统往往面临界面陈旧、数据展示单一的问题,而全面重构为Web应用又面临成本高、周期长的挑战。本文将揭…...

Linux磁盘告急:巧用ncdu定位并清理/dev/sda高占用

1. 当Linux服务器突然报警:磁盘爆满的紧急处理 "服务器磁盘空间不足"这个红色警告突然跳出来时,相信很多运维同学都会心头一紧。我上周就遇到了这个情况:凌晨三点收到报警短信,/dev/sda6分区显示100%占用,导…...

2025年八大网盘直链下载助手:告别限速,轻松获取高速下载链接

2025年八大网盘直链下载助手:告别限速,轻松获取高速下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…...

QKeyMapper:5个技巧让你在Windows上实现零重启的按键映射

QKeyMapper:5个技巧让你在Windows上实现零重启的按键映射 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠&#xf…...

基于Neo4j与MCP协议,为AI智能体构建动态知识图谱大脑

1. 项目概述:为AI智能体构建一个动态知识大脑如果你正在使用Cursor、Claude Desktop这类AI编程助手,并且对它们能记住上下文、理解项目结构的能力感到惊喜,那么Graphiti MCP Server可能会让你对AI智能体的认知再上一个台阶。简单来说&#xf…...

易语言大漠模块实战:BindWindow后台绑定模式选择与避坑指南

1. 大漠模块后台绑定的核心价值 后台绑定技术对于自动化操作来说就像给机器人装上了眼睛和手指。想象一下,你正在玩一款需要重复刷副本的游戏,每次都要机械地点鼠标、按键盘,不仅累还容易出错。而大漠模块的BindWindow函数就是帮你解决这个痛…...

视频播放效率革命:如何用Video Speed Controller每天节省2小时

视频播放效率革命:如何用Video Speed Controller每天节省2小时 【免费下载链接】videospeed HTML5 video speed controller (for Google Chrome) 项目地址: https://gitcode.com/gh_mirrors/vi/videospeed 你是否厌倦了在线视频的固定播放速度?在…...

别再手动调了!GraphPad Prism 高效批量处理Grouped数据的3个隐藏技巧

GraphPad Prism进阶:Grouped数据高效处理与可视化优化全攻略 在科研数据分析领域,GraphPad Prism因其直观的界面和强大的统计功能而广受欢迎。然而,许多用户仅停留在基础操作层面,面对复杂的Grouped数据时仍采用低效的手动处理方法…...

Unity实战:用Mesh和Color.Lerp手搓一个可交互的3D热力图(附完整C#源码)

Unity实战:从零构建可交互3D热力图的底层逻辑与工程化实现 在数据可视化领域,热力图一直是最直观的呈现方式之一。当我们需要在3D场景中展示地形温度分布、玩家活动热区或资源聚集程度时,传统的2D热力图往往难以满足空间感知需求。本文将带您…...

如何突破AMD Ryzen处理器性能瓶颈?深入解析SMU调试工具的技术革命

如何突破AMD Ryzen处理器性能瓶颈?深入解析SMU调试工具的技术革命 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址:…...

用DAIN算法修复老视频,实测4K补帧效果与常见问题避坑(附Python代码)

深度解析DAIN算法:4K老视频修复实战指南与调参避坑技巧 你是否曾翻出多年前的家庭录像,却发现画面卡顿模糊?或是想重温经典老电影,却被低帧率影响了观影体验?DAIN(Depth-Aware Video Frame Interpolation&a…...

AI Agent配置生成器:基于agentforge的自动化项目脚手架实践

1. 项目概述:AI Agent配置生成器最近在折腾AI Agent自动化流程的朋友,估计都绕不开一个核心痛点:配置。无论是想用Claude、GPT-4还是开源的Llama,要让一个Agent真正“动”起来,你得定义它的角色、设定它的目标、给它配…...

在【Excel】、【PowerPoint】、【Word】 和 【Outlook】中与 【Claude】 协同工作

在【Excel】、【PowerPoint】、【Word】 和 【Outlook】中与 【Claude】 协同工作 写在前面:2026 年 5 月 7 日,Anthropic 宣布 Claude for Excel、PowerPoint 和 Word 全面上市(Generally Available),Claude for Outl…...

高性能B站视频下载解决方案:哔哩下载姬技术架构与实战部署指南

高性能B站视频下载解决方案:哔哩下载姬技术架构与实战部署指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印…...

LibreDWG:打破CAD格式壁垒的跨平台开源解决方案

LibreDWG:打破CAD格式壁垒的跨平台开源解决方案 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 在CAD设计领域,AutoCAD的DWG格式长…...

BooruDatasetTagManager:AI训练数据标注的终极指南,10倍效率提升的秘密

BooruDatasetTagManager:AI训练数据标注的终极指南,10倍效率提升的秘密 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 你是否曾为AI模型训练准备数据集而感到头疼?面…...

永磁同步电机无速度传感器控制(二)——滑模观测器(五)【参数整定与鲁棒性验证】

1. 滑模观测器参数整定的核心逻辑 搞电机控制的朋友都知道,滑模观测器就像个脾气倔强的老工程师——参数调好了稳如泰山,调不好就给你疯狂抖振。我当年第一次调滑模增益时,电机发出的声音能把实验室隔壁的师兄吓到报警。参数整定本质上是在动…...

易语言多线程下如何安全调用大漠插件?免注册方案与资源管理避坑指南

易语言多线程环境下安全调用大漠插件的工程实践 在自动化工具开发领域,大漠插件因其强大的图像识别和模拟操作能力而广受欢迎。但当我们将这一利器应用于易语言多线程环境时,往往会遇到DLL加载冲突、对象生命周期管理混乱以及线程安全性等棘手问题。本文…...

Nuendo实战排障——从无声到有声的驱动与连接设置指南

1. 无声问题的常见根源排查 当你第一次打开Nuendo准备大展身手时,最令人崩溃的莫过于导入音频后点击播放却一片寂静。这种情况我遇到过太多次了,记得刚开始用Nuendo时,整整两天都在和无声问题作斗争。经过这些年的摸索,我总结出几…...

【ETL实战】StreamSets零代码构建实时数据管道

1. StreamSets:零代码ETL的神器 第一次接触StreamSets时,我被它的可视化界面震惊了。作为一个常年和代码打交道的工程师,很难想象ETL(数据抽取、转换、加载)这种复杂的数据处理流程,竟然可以不用写一行代码…...

别再踩坑了!手把手教你用CCS9.0和普中开发板点亮TMS320F28335的第一盏灯

从零点亮TMS320F28335:CCS9.0与普中开发板避坑指南 第一次接触德州仪器的TMS320F28335开发板时,我盯着那个小小的LED灯发呆——明明按照教程操作,为什么就是点不亮?后来才发现,从软件安装到代码烧录,这个看…...

Windows防火墙命令进阶:netsh advfirewall不只是开关,这些高级配置技巧你该知道

Windows防火墙命令进阶:netsh advfirewall不只是开关,这些高级配置技巧你该知道 在Windows系统中,防火墙是保护计算机免受网络威胁的第一道防线。虽然图形界面提供了基本的防火墙设置选项,但真正强大的功能隐藏在命令行工具netsh …...

医学影像AI可解释性:文本与示例解释技术详解

1. 项目概述:为什么我们如此在意AI的“黑盒”?在医学影像AI领域,我们正处在一个前所未有的黄金时代。从肺结节检测到脑卒中分割,从乳腺癌筛查到眼底病变识别,深度学习模型的表现已经接近甚至超越了部分人类专家。然而&…...

构建文化响应型AI:从算法偏见根源到公平性技术实践

1. 文化响应型AI:为何它不再是“锦上添花”,而是“生存必需”如果你最近用过任何主流的大语言模型或者图像生成工具,试着让它描绘一个“婚礼场景”或者“成功的企业家”,你大概率会得到一个非常“标准”的答案——这个标准&#x…...

LSTM门控机制与工业级鲁棒性实战指南

1. 为什么今天还要认真学LSTM?一个被低估的“老派”模型的真实价值你可能已经注意到,现在打开任何技术社区,满屏都是Transformer、LLM、MoE这些词。LSTM似乎成了教科书里那个“上一代”的配角,连面试官问起都带着点“这题是不是太…...

构建可信AI:融合信托义务与AI对齐的法律技术框架

1. 项目概述:当法律原则遇上技术挑战最近几年,AI的进化速度让人眼花缭乱,从能写诗画画的大模型,到能自主决策的智能体,它们正以前所未有的深度介入我们的生活和工作。但随之而来的,是一个越来越无法回避的尖…...

3分钟学会LosslessCut:无损音频编辑的终极指南

3分钟学会LosslessCut:无损音频编辑的终极指南 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否经常需要从视频中提取音频、合并多个录音文件&#x…...

抖音直播数据采集终极指南:2025最新版实时弹幕抓取完整教程

抖音直播数据采集终极指南:2025最新版实时弹幕抓取完整教程 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想要获取抖音直…...

从流场GIF到模态分解:用MATLAB DMD一键提取涡旋的频率与增长率

从流场动画到科学洞察:MATLAB DMD技术解析涡旋动力学 当一段流体运动的GIF动画在你面前循环播放时,那些旋转的涡旋和波动的剪切层不仅仅是视觉奇观——它们隐藏着支配流动演化的数学密码。作为流体研究者,我们常常陷入这样的困境:…...