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

别再只会用`docker system prune`了!聊聊Docker磁盘清理的5个隐藏场景与实战命令

别再只会用docker system prune了聊聊Docker磁盘清理的5个隐藏场景与实战命令Docker作为现代开发与运维的核心工具其便捷性背后往往隐藏着磁盘管理的复杂性。当docker system prune成为大多数人的清理万能药时真正棘手的磁盘问题却常常出现在那些未被充分讨论的角落——容器日志的失控增长、overlay2目录的神秘膨胀、构建缓存的隐形堆积……这些场景需要的不是一刀切的清理而是精准的手术刀式操作。1. 容器日志轮转从根源解决/var/lib/docker/containers爆满问题当df -h显示/var分区即将爆满时/var/lib/docker/containers往往是罪魁祸首。默认情况下Docker容器会将所有标准输出日志以JSON格式存储在此目录且没有自动轮转机制。我曾见过一个生产环境的Nginx容器在三个月内产生了47GB的日志文件。1.1 即时清理与日志定位首先用以下命令快速定位磁盘占用最高的容器日志du -d 1 -h /var/lib/docker/containers/ | sort -h找到目标容器ID后可以临时清空日志文件注意这会丢失所有历史日志truncate -s 0 /var/lib/docker/containers/container_id/container_id-json.log1.2 配置日志轮转策略更专业的做法是在容器启动时配置日志驱动和轮转参数docker run --log-driver json-file \ --log-opt max-size100m \ --log-opt max-file3 \ nginx关键参数说明max-size单个日志文件最大尺寸支持k,m,g单位max-file保留的历史日志文件数量对于已运行的容器修改/etc/docker/daemon.json全局配置并重启Docker服务{ log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 } }提示修改全局配置会影响所有新创建的容器已存在的容器需要重建才能生效2. 解剖overlay2读写层异常增长的诊断与修复Docker存储驱动采用的overlay2文件系统会在/var/lib/docker/overlay2下为每个容器创建读写层merged目录。当这些目录异常增长时常规清理往往无效。2.1 定位问题容器使用以下命令查看各容器占用的磁盘空间包括读写层docker ps -s --format table {{.ID}}\t{{.Names}}\t{{.Size}}输出示例CONTAINER ID NAMES SIZE a1b2c3d4e5f6 mysql_db 2.45GB (virtual 1.2GB)其中SIZE列显示的是读写层大小(virtual)表示镜像基础大小。2.2 深入分析具体容器对可疑容器进行深入检查docker exec -it container_id bash -c du -h --max-depth1 / | sort -h常见问题根源应用程序生成的临时文件未清理数据库未配置自动清理如MySQL的binlog上传目录缺乏定期清理机制2.3 针对性清理方案对于MySQL容器可以设置自动清理binlogSET GLOBAL expire_logs_days 3;对于临时文件问题建议在Dockerfile中加入清理指令RUN apt-get update \ apt-get install -y package \ rm -rf /var/lib/apt/lists/*3. 构建缓存管理超越docker builder prune的精细控制Docker构建缓存虽然加速了构建过程但长期积累会占用大量空间。docker builder prune虽然简单但缺乏针对性。3.1 查看缓存详细组成docker builder du --verbose输出示例Build Cache: 5.7GB - 3.2GB FROM alpine:latest - 1.1GB RUN apk add --no-cache python3 - 0.8GB COPY . /app - 0.6GB RUN pip install -r requirements.txt3.2 精准清理特定缓存层保留基础镜像缓存仅清理应用层docker builder prune --filter typeexec.cachemount可选过滤器typeregular常规Dockerfile指令产生的缓存typeinternal内部使用的缓存typesource.local本地源文件缓存3.3 构建时控制缓存行为在Dockerfile中合理使用--mounttypecacheRUN --mounttypecache,target/var/cache/apt \ apt-get update \ apt-get install -y build-essential这样既保持了构建速度又避免了缓存污染主镜像。4. 镜像深度清理区分悬空镜像与中间层docker image prune默认只清理悬空镜像dangling images但中间层intermediate layers才是真正的空间杀手。4.1 识别不同类型的镜像docker images -a --filter danglingtrue # 悬空镜像 docker images -a --format {{.ID}}\t{{.CreatedSince}}\t{{.Size}} | sort -k2 -h4.2 安全清理中间层先查看可清理的空间预估docker system df -v然后使用带过滤器的清理命令docker image prune -a --filter until24h # 清理24小时前的未使用镜像4.3 保留关键镜像的策略给重要镜像打上保留标签docker tag my_image:latest my_image:keep这样在执行prune时可以通过--filter排除docker image prune -a --filterlabel!keep5. 自动化清理安全可靠的crontab方案手动清理终究不是长久之计但自动化清理需要特别注意安全性。5.1 基础清理脚本创建/usr/local/bin/docker-cleanup#!/bin/bash # 清理超过7天的已停止容器 docker container prune --force --filter until168h # 清理未使用的镜像保留最近3个版本 docker image prune -a --force --filter until72h # 清理构建缓存 docker builder prune --force --filter until24h # 清理网络和卷 docker network prune --force docker volume prune --force5.2 安全增强措施添加资源使用限制和日志记录#!/bin/bash LOG_FILE/var/log/docker-cleanup.log MAX_DISK_USAGE90 current_usage$(df -h /var/lib/docker | awk NR2 {print $5} | tr -d %) if [ $current_usage -lt $MAX_DISK_USAGE ]; then echo $(date) - Disk usage ${current_usage}% below threshold. Skipping cleanup. $LOG_FILE exit 0 fi echo $(date) - Starting cleanup (Current usage: ${current_usage}%) $LOG_FILE # ...原有清理命令...5.3 设置crontab定时任务sudo crontab -e添加以下内容每天凌晨3点执行且磁盘使用超过85%时0 3 * * * /usr/local/bin/docker-cleanup注意避免在业务高峰期执行清理特别是生产环境

相关文章:

别再只会用`docker system prune`了!聊聊Docker磁盘清理的5个隐藏场景与实战命令

别再只会用docker system prune了!聊聊Docker磁盘清理的5个隐藏场景与实战命令 Docker作为现代开发与运维的核心工具,其便捷性背后往往隐藏着磁盘管理的复杂性。当docker system prune成为大多数人的清理"万能药"时,真正棘手的磁盘…...

2026某同城数据采集实战:图片验证码+短信轰炸防护全解析与避坑指南

最近帮朋友做一个房产数据分析项目,需要从某同城平台采集一些公开的房源信息。本以为是个简单的爬虫任务,结果踩了无数坑——从最基础的滑块验证到复杂的行为轨迹分析,从IP封禁到设备指纹检测,特别是他们今年刚升级的短信轰炸防护…...

从电影运镜到游戏镜头:手把手教你用Cinemachine实现高级镜头语言(含Dutch Angle等实战配置)

从电影运镜到游戏镜头:手把手教你用Cinemachine实现高级镜头语言(含Dutch Angle等实战配置) 在游戏开发中,镜头语言是叙事和情感表达的重要工具。就像电影导演通过精心设计的镜头来引导观众情绪一样,游戏开发者也可以…...

Burp Suite渗透测试工作流:从环境搭建到报告生成

1. 这不是“学个工具”,而是一套可复用的渗透工作流很多人点开“Burp Suite 入门”类教程,心里想的是:“装个插件、抓个包、改个参数,不就完事了?”——结果三天后连 repeater 怎么发 POST 请求都得翻笔记。我带过二十…...

射频集成电路中MIM电容与多晶硅电阻的建模与优化

1. MIM电容布局模型解析在射频集成电路设计中,金属-绝缘体-金属(MIM)电容因其高密度、高线性度和良好的匹配特性而成为关键被动元件。图14(a)展示了典型的MIM电容布局结构,采用上下金属层夹介质层的三明治结构。1.1 电容模型构成原…...

YgoMaster终极指南:如何在电脑上免费畅玩游戏王大师决斗

YgoMaster终极指南:如何在电脑上免费畅玩游戏王大师决斗 【免费下载链接】YgoMaster Offline Yu-Gi-Oh! Master Duel 项目地址: https://gitcode.com/gh_mirrors/yg/YgoMaster 你是否渴望随时随地体验《游戏王大师决斗》的精彩对决,却受限于网络连…...

JMeter分布式压测五大核心故障点与RMI通信调优指南

1. 为什么分布式压测不是“多开几台JMeter就能搞定”的事很多人第一次接触Jmeter分布式压测,脑子里浮现的画面是:主控机上点一下“启动”,十几台从机瞬间火力全开,TPS哗哗往上飙,监控曲线平滑漂亮——结果一跑起来&…...

AutoUnipus:终极U校园自动化答题解决方案,五分钟实现100%正确率

AutoUnipus:终极U校园自动化答题解决方案,五分钟实现100%正确率 【免费下载链接】AutoUnipus U校园脚本,支持全自动答题,百分百正确 2024最新版 项目地址: https://gitcode.com/gh_mirrors/au/AutoUnipus 还在为U校园平台重复枯燥的练习题烦恼吗&…...

5分钟掌握跨平台资源下载:res-downloader新手完整指南

5分钟掌握跨平台资源下载:res-downloader新手完整指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否经常…...

免费德州扑克GTO求解器终极指南:如何用Desktop Postflop提升你的扑克决策能力

免费德州扑克GTO求解器终极指南:如何用Desktop Postflop提升你的扑克决策能力 【免费下载链接】desktop-postflop [Development suspended] Advanced open-source Texas Holdem GTO solver with optimized performance 项目地址: https://gitcode.com/gh_mirrors/…...

LeetDown深度解析:如何让iPhone 5s/6等老设备重返iOS 10.3.3黄金时代

LeetDown深度解析:如何让iPhone 5s/6等老设备重返iOS 10.3.3黄金时代 【免费下载链接】LeetDown a macOS app that downgrades A6 and A7 iDevices to OTA signed firmwares 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 还记得iPhone 5s的Touch I…...

K12教师必读:用AI Agent 15分钟生成个性化学习路径(附可即用Prompt模板库)

更多请点击: https://codechina.net 第一章:AI Agent教育应用的范式变革 传统教育系统长期依赖“教师讲授—学生听记—统一测评”的线性模式,而AI Agent的兴起正推动教育从标准化供给转向个性化协同时代。AI Agent不再仅是知识检索工具或自动…...

大模型概念遗忘:SCUGP梯度投影实现精准神经外科手术

1. 项目概述:这不是“删除记忆”,而是给大模型做一次精准的神经外科手术“Who is Harry Potter?”——这个看似简单的问答,恰恰成了检验大模型“概念遗忘”能力的黄金测试题。微软研究院这篇论文标题里藏着一个反直觉的事实:他们…...

别再死记硬背了!用Multisim仿真软件,5分钟搞懂三极管放大电路的静态工作点设置与失真分析

用Multisim玩转三极管放大电路:静态工作点设置与失真分析实战指南 刚接触模拟电路时,三极管放大电路就像一道难以逾越的门槛。那些密密麻麻的公式、抽象的特性曲线,让多少电子工程专业的学生在深夜实验室里抓耳挠腮。但今天,我要告…...

Kafka 2.8.0到3.4.0滚动升级实录:单副本Topic的可用性挑战与ISR列表监控

Kafka集群升级中的单副本Topic风险治理:ISR监控与高可用实践 引言 在分布式消息系统的世界里,Kafka凭借其高吞吐、低延迟的特性成为企业级数据管道的首选。但当运维团队面临版本升级时,那些隐藏在配置细节中的"定时炸弹"往往成为…...

电商预测性洞察:轻量模型实现秒级可执行决策

1. 项目概述:这不是“预测未来”,而是让电商决策从拍脑袋变成算出来“Predictive Insights for e-Commerce”——这个标题乍看像一句科技公司PPT里的漂亮话,但在我过去十年跑遍长三角、珠三角上百个中小电商品牌仓库、直播间和运营后台后&…...

体验分钟级接入为网站原型注入AI能力

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 体验分钟级接入为网站原型注入AI能力 在验证一个网站创意原型时,能否快速为其注入智能对话能力,往往决定了…...

STM32 HAL库驱动NRF24L01避坑指南:SPI时钟配置、引脚命名那些容易出错的地方

STM32 HAL库驱动NRF24L01实战避坑手册:从SPI配置到中断处理的深度解析 当你在深夜的实验室里盯着示波器上杂乱的SPI波形,或是面对编译器抛出的"undefined reference"错误时,是否曾怀疑过NRF24L01这个看似简单的2.4GHz射频模块为何如…...

TrafficMonitor插件完整指南:让Windows任务栏变身全能监控中心

TrafficMonitor插件完整指南:让Windows任务栏变身全能监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为繁琐的系统监控工具而烦恼吗?每次需…...

3DS原生GBA硬件实战指南:open_agb_firm深度解析与高效方案

3DS原生GBA硬件实战指南:open_agb_firm深度解析与高效方案 【免费下载链接】open_agb_firm open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware. 项目地址: https://gitcode.com/gh_mirrors/op/open_agb_firm…...

从‘相框’与‘相片’说起:彻底搞懂MFC文档/视图架构与消息路由(含实战避坑)

从相框到相片:深入解析MFC文档/视图架构的设计哲学与实战应用 在Windows桌面应用开发的历史长河中,MFC(Microsoft Foundation Classes)作为经典的C框架,其独特的文档/视图架构一直是开发者又爱又恨的设计。想象一下相框…...

智能自动化黑苹果配置:OpCore-Simplify全面解析

智能自动化黑苹果配置:OpCore-Simplify全面解析 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一款革命性的黑苹果配置…...

QLoRA微调Mistral-7B实战:4-bit量化+LoRA端到端跑通指南

1. 这不是理论课,是能跑通的实操手册:QLoRA微调Mistral-7B到底在做什么 你点开这篇,大概率正卡在某个环节:Colab里 model.generate() 报错OOM, bitsandbytes 安装失败后反复重装,或者训练跑了一小时发现…...

UE5.4.4视频不导入实战:绕过Content Browser直连文件系统

1. 为什么在UE5.4.4里“不导入视频”反而成了刚需?在UE5.4.4项目现场,我最近连续被三个不同团队问到同一个问题:“能不能别把视频拖进Content Browser?”——不是他们不会操作,而是一拖进去就出事。美术同事导了个2.7G…...

免费AI搜索工具怎么选?2026年实测TOP8工具性能、响应速度与隐私合规性深度评测

更多请点击: https://codechina.net 第一章:免费AI搜索工具推荐2026 2026年,开源与社区驱动的AI搜索工具生态迎来爆发式增长。得益于大语言模型轻量化部署、RAG(检索增强生成)架构普及以及WebAssembly在浏览器端的成熟…...

Taotoken用量看板与成本管理,让团队模型开销一目了然

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板与成本管理,让团队模型开销一目了然 当团队开始将多个大语言模型应用于不同业务场景时,一…...

【限时解密】Midjourney内部颗粒渲染引擎逻辑:基于逆向API日志的噪声生成时序图(仅开放72小时,含调试token领取)

更多请点击: https://codechina.net 第一章:【限时解密】Midjourney内部颗粒渲染引擎逻辑:基于逆向API日志的噪声生成时序图(仅开放72小时,含调试token领取) Midjourney v6.2 的颗粒(grain&…...

华大半导体三大产品线深度解析:安全控制、汽车电子与功率芯片实战指南

1. 项目概述:一次关于“中国芯”的深度现场探访最近,我有机会近距离接触了华大半导体的产品展示与技术交流活动。当“聚焦三大产品线,华大半导体展示最强‘中国芯’!”这个标题映入眼帘时,我内心的第一反应是&#xff…...

混合精度递归Cholesky分解:算法优化与硬件加速实践

1. 混合精度递归Cholesky分解的技术背景在科学计算领域,对称正定(SPD)线性系统的求解是一个基础而关键的问题。这类问题广泛存在于计算流体动力学、气候建模、金融风险分析等实际应用中。以气候建模为例,全球大气环流模型需要求解的线性系统矩阵规模可达…...

MDK中间件与RTOS依赖关系及嵌入式开发实践

1. MDK中间件与RTOS的依赖关系解析在嵌入式开发领域,Keil MDK(Microcontroller Development Kit)是ARM架构微控制器开发的经典工具链。其Middleware(中间件)库为开发者提供了网络协议栈、USB协议栈、文件系统等常用功能…...