docker的文件系统Overlay2

OverlayFS(Overlay2)文件系统深度解析

Overlay2 是 Docker 默认使用的联合文件系统(Union Filesystem),用于管理容器镜像的分层存储和容器运行时文件系统的合并。它基于 Linux 内核的 OverlayFS 技术,是早期 aufs 和 overlay 的改进版本。


1. OverlayFS 的核心概念

OverlayFS 通过堆叠多层目录来实现文件系统的联合挂载,主要分为:

  • Lower Dir(下层,只读):通常是镜像层(Image Layers)。

  • Upper Dir(上层,可写):容器运行时新增或修改的文件。

  • Work Dir(工作目录):OverlayFS 内部用于准备文件的临时目录。

  • Merged Dir(合并视图):最终呈现给容器的统一文件系统。


2. Overlay2 在 Docker 中的工作方式

Docker 镜像采用分层存储,每一层都是一个只读文件系统(Lower Dir)。当启动容器时,Overlay2 会:

  1. 镜像层(Lower Dir):所有镜像层按顺序堆叠(如 base-image → apt-get install → copy files)。

  2. 容器层(Upper Dir):在镜像层之上创建一个可写层,存储容器运行时的修改。

  3. 合并视图(Merged):将只读层和可写层合并,形成容器的完整文件系统。


3. 查看 Docker 的 Overlay2 存储结构

Docker 的 Overlay2 数据默认存储在 /var/lib/docker/overlay2/(如果你的示例中挂载在 /mnt/newdisk/docker/overlay2,说明 Docker 数据目录被迁移到了该磁盘)。

关键目录说明

/var/lib/docker/overlay2/
├── <layer-id>           # 每个镜像或容器层对应一个目录
│   ├── diff             # 该层的实际文件内容(相当于 Lower Dir)
│   ├── link             # 短标识符(用于避免长ID路径问题)
│   ├── lower            # 指向父层的引用(如 `l/ABC123`)
│   └── work             # OverlayFS 内部工作目录
├── l/                   # 短链接目录(优化路径访问)
└── <container-id>       # 容器运行时目录├── merged/          # 合并后的文件系统(容器看到的视图)├── upper/           # 可写层(Upper Dir)└── work/            # OverlayFS 工作目录

4. 文件读写规则

操作类型行为
读取文件从最上层 Lower Dir 开始查找,直到找到该文件。
修改文件文件若在 Lower Dir(只读),则先复制到 Upper Dir(写时复制,CoW),再修改。
删除文件在 Upper Dir 创建 whiteout 文件(如 .wh.filename),隐藏 Lower Dir 中的文件。
新建文件直接写入 Upper Dir。

5.  df -h 显示多个 Overlay 挂载

overlay 334G 159G 160G 50% /mnt/newdisk/docker/overlay2/.../merged

  • 每个 merged 目录对应一个正在运行的容器的合并视图。

  • 由于多个容器可能共享相同的镜像层(Lower Dir),但每个容器有自己的 Upper Dir,因此 df 可能会重复统计共享层(实际磁盘占用并非简单相加)。


6. Overlay2 的优点

  1. 高效分层存储:多个容器共享相同的基础镜像层,节省空间。

  2. 写时复制(CoW):只有修改文件时才复制,减少磁盘 I/O。

  3. 性能较好:相比 aufs 和 devicemapper,Overlay2 是 Docker 推荐的存储驱动。


7. 潜在问题与注意事项

(1)磁盘空间显示不准确

  • df 可能会重复计算共享层,实际占用比显示的要小。

  • 用 docker system df 查看 Docker 的真实磁盘使用情况:

    docker system df

    输出示例:

    TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
    Images          5         3         2.1GB     800MB (38%)
    Containers      3         1         300MB     300MB (100%)
    Local Volumes   2         1         500MB     500MB (100%)

(2)清理无用数据

  • 删除无用镜像、容器和卷:

    docker system prune -a      # 清理所有未使用的对象
    docker volume prune         # 清理未使用的卷

(3)大文件导致磁盘占满

  • 容器日志或应用程序写入的大文件可能堆积在 Upper Dir。

  • 检查容器日志大小:

    docker logs <container-id> --tail 100  # 查看日志
  • 限制日志大小(在 docker run 时添加 --log-opt max-size=10m)。


8. 进阶:手动调试 Overlay2

如果想直接查看某个容器的文件系统:

# 找到容器的 Merged Dir(需 root 权限)
docker inspect <container-id> | grep MergedDir# 进入合并后的文件系统
ls /var/lib/docker/overlay2/<container-id>/merged

总结

  • Overlay2 是 Docker 的分层存储引擎,通过联合挂载实现高效的文件管理。

  • Lower Dir(镜像层)只读Upper Dir(容器层)可写merged 是最终视图。

  • df -h 可能显示重复统计,建议用 docker system df 查看真实占用。

  • 定期清理无用镜像和日志,避免磁盘占满。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC技术简介及应用场景

写在前面 本文是参考稀土掘金的文章,整理得出,版权归原作者所有! 参考链接:https://juejin.cn/book/7168418382318927880/section/7171376753263247396 WebRTC&#xff08;Web Real-Time Communication&#xff09; 是一项开源技术&#xff0c;允许浏览器和移动应用直接进行…

Windows 图形显示驱动开发-WDDM 2.1 功能(四)

驱动程序版本控制 图形适配器或芯片集的驱动程序 DLL 和 SYS 文件必须具有正确格式的文件版本。 驱动程序信息文件 (.inf)、内核模式驱动程序 (.sys) 和用户模式驱动程序 (.dll) 文件的版本信息必须一致。 此外&#xff0c;.inf 的 [SignatureAttributes] 部分中标识为 PETru…

什么是 StarRocks?核心优势与适用场景解析

在数据量持续爆发的时代&#xff0c;企业对实时分析的需求日益迫切。例如&#xff0c;电商大促期间的交易监控、广告投放效果的即时反馈等场景&#xff0c;均要求毫秒级的响应速度。然而&#xff0c;传统工具如 Hadoop、Hive 等存在明显短板&#xff1a;复杂查询性能不足、资源…

Java基础 4.3

1.对象机制练习 public class Object03 {public static void main(String[] args) {Person a new Person();a.age 10;a.name "小明";Person b;b a;System.out.println(b.name);//小明b.age 200;b null;System.out.println(a.age);//200System.out.println(b.a…

视频设备轨迹回放平台EasyCVR综合智能化,搭建运动场体育赛事直播方案

一、背景 随着5G技术的发展&#xff0c;体育赛事直播迎来了新的高峰。无论是NBA、西甲、英超、德甲、意甲、中超还是CBA等热门赛事&#xff0c;都是值得记录和回放的精彩瞬间。对于体育迷来说&#xff0c;选择观看的平台众多&#xff0c;但是作为运营者&#xff0c;搭建一套体…

搬砖--贪心+排序的背包

a在上面b在下面->a.v-M-b.m>b.v-M-a.m->剩余率大 所以我先遍历a&#xff0c;让a在上面 这就是要考虑贪心排序的01背包 因为它有放的限制条件 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int>…

《2024年全球DDoS攻击态势分析》

从攻击态势来看&#xff0c;2024年DDoS攻击频次继续呈增长趋势&#xff0c;2024年同步增加1.3倍&#xff1b;超大规模攻击激增&#xff0c;超800Gbps同比增长3.1倍&#xff0c;累计高达771次&#xff0c;且互联网史上最大带宽和最大包速率攻击均被刷新&#xff1b;瞬时泛洪攻击…

数据分析参考架构详解

1.数仓方法论 2. 数仓建模参考架构 3.大数据参考架构 4.数据分析参考架构

领驭科技:以微软Azure Speech技术为核心,驱动翻译耳机新时代

在全球化的今天&#xff0c;语言不再是沟通的障碍。领驭科技&#xff0c;作为微软的核心合作伙伴&#xff0c;正引领翻译耳机行业进入一个全新的发展阶段。以时空壶与贸人为例&#xff0c;这两家公司的翻译耳机产品凭借其内置的微软Azure Speech人工智能语音技术&#xff0c;为…

seaweedfs分布式文件系统

seaweedfs https://github.com/seaweedfs/seaweedfs.git go mod tidy go -o bin ./… seaweed占不支持smb服务&#xff0c;只能用fuse的方式mount到本地文件系统 weed master 默认端口&#xff1a;9333&#xff0c;支持浏览器访问 weed volume 默认端口&#xff1a;8080 weed …

说清楚单元测试

在团队中推行单元测试的时候,总是会被成员问一些问题: 这种测试无法测试数据库的SQL(或者是ORM)是否执行正确?这种测试好像没什么作用?关联的对象要怎么处理呢?…借由本篇,来全面看一看单元测试。 单元测试是软件开发中一种重要的测试方法,其核心目的是验证代码的最小…

服务器磁盘io性能监控和优化

服务器磁盘io性能监控和优化 全文-服务器磁盘io性能监控和优化 全文大纲 磁盘IO性能评价指标 IOPS&#xff1a;每秒IO请求次数&#xff0c;包括读和写吞吐量&#xff1a;每秒IO流量&#xff0c;包括读和写 磁盘IO性能监控工具 iostat&#xff1a;监控各磁盘IO性能&#xff0c…

办公设备管理系统(springboot+ssm+jsp+maven)

基于springboot的办公设备管理系统(springbootssmjspmaven) 系统功能主要有&#xff1a; 欢迎页账号管理 管理员账号管理系统账号添加密码修改 普通管理员管理 用户管理用户添加用户查询 资产类型管理资产信息管理资产档案管理资产报表

【STM32设计】基于STM32的智能门禁管理系统(指纹+密码+刷卡+蜂鸣器报警)(代码+资料+论文)

本课题为基于单片机的智能门禁系统&#xff0c;整个系统由AS608指纹识别模块&#xff0c;矩阵键盘&#xff0c;STM32F103单片机&#xff0c;OLED液晶&#xff0c;RFID识别模块&#xff0c;继电器&#xff0c;蜂鸣器等构成&#xff0c;在使用时&#xff0c;用户可以录入新的指纹…

Java学习总结-io流-字节流

io的体系&#xff1a; FlieInputStream(文件字节输入流) 是什么&#xff1a;磁盘以字节的形式输入到内存中。 由于不同格式编码长度&#xff0c;每次读取一个或几个字节&#xff0c;都有可能出现乱码。 所以官方提供了&#xff0c;一次性读入全部字节&#xff0c;以数组的形式…

玩转JUC - 如何优雅的异步处理任务

1、概述 前面我们学习了并发包中的一些核心的基础类&#xff0c;包括原子类、Lock 、以及线程间通信的一些工具类&#xff0c;相信你已经能够正确的处理线程同步的问题了&#xff0c;今天我们继续学习并发包下的工具类&#xff0c;我们本次主要学习线程池和异步计算框架相关的内…

MINIQMT学习课程Day2

如何和聚宽进行绑定交易 目前市场上的方式主要为以下三种方案&#xff1a; 1.聚宽和一创直接绑定&#xff08;现在已经被废除&#xff09; 2.通过蒋老师所提出的redis方案&#xff0c;进行交易 3.李兴果的&#xff0c;网页发送到服务器数据库&#xff0c;然后本地读取数据进行…

【AI视频】度加视频测试

目标 前边&#xff0c;大藏经用AI翻译成功了&#xff0c;语音也生成了&#xff0c;就想着生成视频了&#xff0c;然后就发现了这个宝藏工具。 先说结果&#xff1a;速度不是很快&#xff0c;出错了&#xff0c;提示也不是很清晰&#xff0c;虽然不顺利&#xff0c;但过程还是…

SAP CEO引领云端与AI转型

在现任首席执行官克里斯蒂安克莱因&#xff08;Christian Klein&#xff09;的领导下&#xff0c;德国软件巨头 SAP 正在经历一场深刻的数字化转型&#xff0c;重点是向云计算和人工智能方向发展。他提出的战略核心是“RISE with SAP”计划&#xff0c;旨在帮助客户从传统本地部…

《系统分析师-基础篇-1-6章总结》

第1章 绪论 系统分析师角色 职责&#xff1a;需求分析、系统设计、项目管理、技术协调。 能力要求&#xff1a;技术深度&#xff08;架构设计、开发方法&#xff09; 业务理解&#xff08;企业流程、行业知识&#xff09; 沟通能力。 系统开发生命周期 传统模型&#xf…