Docker Overlay2 空间优化

目录
- 分析
- 优化
- 数据路径规划
- 日志大小限制
- overlay2 大小限制
- 清理冗余数据
- 总结
分析
overlay2 目录占用磁盘空间较大的原因通常与 Docker 容器和镜像的存储机制以及它们的长期累积相关,其实我之前在 Docker 原理那里已经提到过了。
通常时以下几种原因导致:
-
大量的镜像和容器层
每次运行一个 Docker 容器时,它都会从镜像中创建一个新的写层(之前提到的写时复制机制),这个层存储了容器运行时的所有文件修改。如果有很多容器运行或停止,但未被删除,
overlay2目录中的层(例如diff和merged目录)会占用大量空间。注意的是:每次启动或停止容器,Docker 会创建新的层,这些层没有被清理会长期占用空间,即使容器不再运行,其数据层依然占据磁盘空间。
-
未删除的旧镜像
Docker 会将所有拉取的镜像保存在本地,如果没有及时删除不再使用的镜像,这些镜像的层也会持续占用空间。因为每个 Docker 镜像都由多个层组成,每一层都会占用磁盘空间,且这些层存储在
overlay2目录下。 -
容器内文件的增多
容器内的写操作(例如应用日志、临时文件等)都会写入
overlay2的diff层。如果某些容器产生了大量文件(例如日志文件、缓存等),这些文件会导致存储层膨胀。 -
日志文件过大
如果 Docker 容器产生了大量日志,特别是在没有对日志大小进行限制的情况下,日志文件会持续增长,占用大量空间。
-
未清理的缓存和未使用的镜像层
Docker 在构建镜像或运行容器时,会生成大量的缓存数据。这些数据在
overlay2中存储,如果没有定期清理,长期累积会占用大量磁盘空间。 -
挂载卷中的数据未清理
容器运行时,挂载到容器中的数据卷可能存储了大量的数据,特别是当某些服务(如数据库、文件处理应用)生成大量数据时。
优化
数据路径规划
我们可在 Docker 配置文件中进行指定:
vim /etc/docker/daemon.json
{..."data-root": "/data/docker","log-driver": "json-file",...
}
systemctl daemon-reload
systemctl restart docker.service
配置后,重启 Docker 服务即可生效。
日志大小限制
有时,对于频繁产生大量日志的应用程序来说,如果你 Docker 服务没有对容器日志做限制,那必将会占用宿主机磁盘容量。
我们可在 Docker 配置文件中进行限制:
vim /etc/docker/daemon.json
{..."log-opts": {"max-size": "60m","max-file": "3"},...
}
systemctl daemon-reload
systemctl restart docker.service
配置后,重启 Docker 服务即可生效。
overlay2 大小限制
verlay2 是 Docker 默认的存储驱动之一,它将文件系统的多个层叠加在一起,并使用写时复制 (CoW) 来实现容器文件系统的管理。
查找 overlay2 目录中占用空间最多的文件:
du -sh /data/docker/overlay2/* | sort -h

这样可以通过 overlay2 ID 匹配对应的容器 ID,就可以找出产生大数据的容器,进行快速定位:
docker inspect --format='{{.GraphDriver.Data.MergedDir}} {{.ID}}' $(docker ps -aq)

此时就可以找出这个容器了:
docker ps

但要注意的是,overlay2 目录下的数据不能轻易手动删除,否则容器异常。虽然 overlay2 本身并没有直接的大小限制,但由于它依赖于底层文件系统(通常是 ext4 或 xfs),存储大小的限制通常由底层文件系统决定。
可以通过 storage-opts 配置来限制每个容器的写层大小。这样可以防止容器无限制地增长,占用所有的磁盘空间。
{..."storage-opts": ["overlay2.override_kernel_check=true","overlay2.size=10G"]...
}
这个配置会为每个容器的写层分配 10GB 的空间。当容器超过此限制时,会出现磁盘已满的错误。
注意,overlay2.size 仅在 Docker 使用 xfs 文件系统并启用 d_type 支持时有效。但是不建议通过此方法限制 overlay2 大小,而是部署服务前就应该做好了服务器磁盘容量规划,并实时监控服务器健康状态。
清理冗余数据
1、查看 docker 整体数据容量
du -sh /data/docker

2、查看镜像、容器、数据卷和构建缓存大小
docker system df

a. 可释放 15.63GB 未使用的容器镜像空间
docker image prune
如果想删除所有未使用的镜像(包括无标签的 dangling 镜像),可以使用:
docker image prune -a
b. 停止并删除未使用的容器
docker container prune
c. 清理未使用的网络
docker network prune
d. 清理系统缓存(移除未使用的网络、卷和构建缓存)
docker system prune -a
总结
一切的优化均基于理论+实践。
相关文章:
Docker Overlay2 空间优化
目录 分析优化数据路径规划日志大小限制overlay2 大小限制清理冗余数据 总结 分析 overlay2 目录占用磁盘空间较大的原因通常与 Docker 容器和镜像的存储机制以及它们的长期累积相关,其实我之前在 Docker 原理那里已经提到过了。 通常时以下几种原因导致ÿ…...
第 3 章:使用 Vue 脚手架
1. 初始化脚手架 1.1 说明 Vue 脚手架是 Vue 官方提供的标准化开发工具(开发平台)。最新的版本是 5.x。文档: https://cli.vuejs.org/zh/ 1.2 具体步骤 第一步(仅第一次执行):全局安装vue/cli。 npm install -g vu…...
Spring 循环依赖详解:问题分析与三级缓存解决方案
在Spring框架中,循环依赖(Circular Dependency)是指多个Bean相互依赖,形成一个循环引用。例如,Bean A依赖于Bean B,而Bean B又依赖于Bean A。这种情况在Bean创建时可能导致Spring容器无法正常完成初始化&am…...
爬虫prc技术----小红书爬取解决xs
知识星球:知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具知识星球是创作者连接铁杆粉丝,实现知识变现的工具。任何从事创作或艺术的人,例如艺术家、工匠、教师、学术研究、科普等,只要能获得一…...
uni-app之旅-day06-加入购物车
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言8.0 创建 cart 分支8.1 配置 vuex8.2 创建购物车的 store 模块8.3 在商品详情页中使用 Store 中的数据8.4 实现加入购物车的功能8.5 动态统计购物车中商品的总数…...
【Kubernetes】常见面试题汇总(五十六)
目录 123. pod 创建失败? 124. kube-flannel-ds-amd64-ndsf7 插件 pod 的 status 为 Init:0/1 ? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二&#x…...
LabVIEW激光诱导击穿光谱识别与分析系统
LabVIEW激光诱导击穿光谱(LIBS)分析系统利用高能量脉冲激光产生高温等离子体,通过分析等离子体发出的光谱来定性分析样品中的元素种类。该系统的开发集成了软件与硬件的设计,实现了自动识别和定性分析功能,适用于环境监…...
Redis的基础篇
Redis的基础篇 1.在CentOs7上安装Redis(最好不要在windows上装,版本少) 1.安装gcc --> yum install gcc tcl(可能会报错,重新安装yum就行了) 2.下载redis --> 最好是6.2上的版本 3.解压redis --> tar -zxvf redis-6.2.…...
java和python哪个好
Java和Python各有优缺点,适合不同的应用场景,具体看你需要在哪种情况下使用编程语言。以下是Java和Python的一些对比,帮助你决定哪种更适合你的需求: 性能 Java:编译型语言,编译成字节码运行在Java虚拟机&…...
Electron + ts + vue3 + vite
正常搭建脚手架:npm create vitelatest 项目名称 安装electron的相关依赖:注:安装时终端url要项目名那一层 安装npm install electron -D安装打包工具:npm install electron-builder -D开发工具:npm install electron-…...
《大规模语言模型从理论到实践》第一轮学习--分布式训练
基础知识 5分钟看懂电脑硬件配置 - 知乎 (zhihu.com) 显存 定义:显存是显卡上的专用高速缓存,用于存储图形处理器(GPU)在处理图像和视频数据时所需的临时数据。 功能:显存的主要作用是提供GPU快速访问的数据存储&a…...
多模态智能
研究背景: 深度学习从1.0的端到端走向2.0的预训练,通过大规模预训练来记忆多模态数据中共性知识,增强对下游任务的学习能力。 深度学习1.0:特定任务有标注训练数据->随机初始化训练->最终模型 深度学习2.0:大规…...
【机器学习(十三)】机器学习回归案例之股票价格预测分析—Sentosa_DSML社区版
文章目录 一、背景描述二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因…...
大模型微调
概述 什么是模型微调? 模型微调是通过微调工具,使用独特的场景数据对平台的基础模型进行调整,帮助你快速定制一个更符合业务需求的大型模型。其优势在于对基础模型进行小幅调整以满足特定需求,相比于训练一个新模型,…...
240607 继承
面向对象三大特性:封装、继承、多态 RE: 封装 C把数据和方法封装在类里面迭代器和适配器 继承 1 基类 & 派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表…...
轻松应对意外丢失:高效电脑数据恢复指南!
有时候由于误操作、硬件故障、病毒攻击等原因,电脑里的重要文件可能会突然消失不见。面对这样的情况,很多人会感到手足无措。其实,借助专业的电脑数据恢复软件,我们可以较为轻松地找回丢失的数据。今天,我们就来介绍几…...
vue项目中播放rtsp视频流
一、下载webrtc-streamer 下载地址:https://github.com/mpromonet/webrtc-streamer/releases 根据设备型号下载对应的版本到本地直接解压就行,我下载的是webrtc-streamer-v0.8.6-dirty-Windows-AMD64-Release.tar版本。 双击webrtc-streamer.exe可执行文…...
tomcat部署web配置环境变量
在Tomcat中设置环境变量通常涉及以下步骤: 找到Tomcat的启动脚本(如catalina.sh或catalina.bat)。 在启动脚本中设置环境变量。 对于catalina.sh(Linux/Unix系统),你可以在文件顶部添加环境变量…...
数据仓库技术及应用(练习1)
1.创表 (1)customers.csv CREATE EXTERNAL TABLE IF NOT EXISTS customers ( customer_id int, customer_fname varchar(45), customer_lname varchar(45), customer_email varchar(45), customer_password varchar(45), customer_street …...
老板的“神助攻”:公司电脑监控软件
在当今的商业世界中,企业管理者都希望员工能全身心投入工作,为企业创造更多价值。然而,员工上班摸鱼的现象却让许多老板头疼不已。公司电脑监控软件的出现,为解决这一问题提供了可能。接下来,我们将详细介绍几款优质的…...
告别盲测!用CANoe回放功能搭建你的车载网络自动化测试环境
告别盲测!用CANoe回放功能搭建你的车载网络自动化测试环境 车载网络测试工程师们是否经常遇到这样的困境:每次路试或台架测试后,堆积如山的CAN日志只能用于临时问题排查,无法形成可复用的测试资产?当需要验证某个历史问…...
3步解锁Windows隐藏音质:免费工具让普通音箱变HIFI
3步解锁Windows隐藏音质:免费工具让普通音箱变HIFI 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo 你是不是总觉得电脑声音"干巴巴"的?看大片缺乏震撼感,听…...
双足机器人EDF推进系统与高精度扭矩控制技术
1. 双足机器人EDF推进系统深度解析在双足机器人研发领域,姿态控制一直是核心挑战。传统方案依赖腿部关节的精细调节,但在高速运动或突发扰动情况下往往响应不足。我们团队创新性地引入了EDF(电动涵道风扇)推进系统,通过…...
深入解析Token(原生代币):从原理到未来,开发者必读指南
深入解析Token(原生代币):从原理到未来,开发者必读指南 引言 在Web3的世界里,Token(代币)不仅是价值的载体,更是构建去中心化应用的基石。从引爆DeFi夏天的流动性挖矿,到…...
CGI Studio 3.11:AI驱动与安全合规的嵌入式HMI开发平台解析
1. 项目概述:为什么我们需要CGI Studio这样的HMI设计工具?在嵌入式系统开发领域,尤其是在汽车、工业和高端家电行业,图形用户界面的复杂度和美观度要求正以前所未有的速度提升。十年前,一个简单的单色LCD屏幕配上几个按…...
一文掌握【行为克隆 (Behavior Cloning)】的实战应用与局限
1. 行为克隆是什么?从模仿人类到AI决策 想象一下教小朋友骑自行车的情景。你不会先讲解力学原理,而是亲自示范如何保持平衡、如何踩踏板。孩子通过观察和模仿你的动作,逐渐掌握骑行技巧——这就是行为克隆(Behavior Cloning&#…...
电机PID调参总翻车?试试VOFA+这个“示波器”功能,实时对比目标与实际值
电机PID调参实战:用VOFA实现波形可视化诊断 调试电机PID控制器时,最令人头疼的莫过于面对一堆抽象数据却无法直观理解系统行为。传统方法依赖串口打印数值或简单示波器观察,往往需要反复修改参数、重新烧录程序,效率低下且容易错过…...
物联网平台融资潮解析:从资本流向看行业技术演进与未来格局
1. 项目概述:为什么我们要关注物联网平台的融资潮?最近几年,如果你在科技圈里待着,很难不注意到一个现象:那些做物联网开发平台的公司,动不动就宣布完成了上亿甚至数亿美元的融资。这已经不是个别现象&…...
LinuxVLAN接口异常定位实战
LinuxVLAN接口异常定位实战这是一篇面向中级 Linux 使用者的技术文章,主题聚焦在VLAN接口,重点讨论链路隔离、子接口和二层网络划分。在真实生产环境中,VLAN接口相关问题往往不会以单一错误形式出现,而是混杂在日志、权限、资源状…...
[题材选股] 商业航天、人形机器人双主线高位震荡,低位氟化工、光伏迎补涨机会!股票量化分析工具QTYX-V3.4.8
前言我们的股票量化系统QTYX在实战中不断迭代升级!!!分享QTYX系统目的是提供给大家一个搭建量化系统的模版,帮助大家搭建属于自己的系统。因此我们提供源码,可以根据自己的风格二次开发。关于QTYX的使用攻略可以查看链接:QTYX使用攻略QTYX一直…...
