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

浅聊docker的联合文件系统

前言:

在我们pull镜像的时候,就会发现一个神奇的地方,在将镜像pull到本地的时候它是分层下载的,如下图:

这时候我就有一个疑问,为什么是分层下载的?怎么和我们平时下载软件的时候不一样呢?

联合文件系统

造成上面的原因是因为docker采取了联合文件系统(Union File System)来存储镜像。联合文件系统是一种将多个独立目录或文件系统透明叠加为单一逻辑视图的技术。它通过合并不同来源的文件层,呈现出一个统一的文件系统结构,用户或应用程序可以像访问普通目录一样访问这些叠加后的内容,而无需感知底层的分层细节。

Docker镜像的联合文件系统的主要构成部分

1. 基础镜像层(Base Image Layer):这是 Docker 镜像的初始层,通常包含操作系统的基本文件系统。基础镜像层是只读的,不可更改。

2. 镜像层(Image Layers):在基础镜像层之上,可以有一个或多个镜像层。每个镜像层都包含了一组文件或目录的快照。镜像层是只读的,可以在多个镜像之间共享。

3. 容器层(Container Layer):当使用镜像创建容器时,会在镜像层的顶部添加一个容器层。容器层是可写的,用于存储容器运行时的文件修改和数据。

4. 挂载点(Mount Point):Docker 容器可以将主机上的目录或文件挂载到容器内的指定路径。挂载点允许容器访问主机的文件系统,以实现数据共享和持久化存储。

联合文件系统通过将这些部分以一种有效的方式组合在一起,形成一个单一的可读写的文件系统。容器在运行时会将这些层叠加在一起,形成一个完整的容器文件系统视图。

举例说明

在前言里面pull了一个标签为latest的redis镜像,我们在pull一个标签为6.2的redis镜像。输入下面指令来查看一下镜像的详情

docker system df -v

上面的各个参数分别代表着:

  1. REPOSITORY:镜像所属仓库的名称
  2. TAG:镜像的标签。
  3. IMAGE ID:镜像的唯一hashID,这里只是截取了一小部分来表示
  4. CREATED:表示镜像的创建时间。
  5. SIZE:表示镜像的逻辑总大小(包含了共享曾)
  6. SHARED SIZE:表示该镜像的层中被其他镜像共享的层总大小(即共享层的总大小)
  7. UNIQUE SIZE:表示该镜像中独用层的总大小(扣除镜像层的部分)
  8. CONTAINERS:表示的是基于该镜像创建的容器正在运行的数量。

我们不免可以看出来redis6.2和redis:latest的SHARED SIZE均为74.83,说明他们共享同一个基础层(相同的操作系统或依赖)。说明了docker的镜像存储是采用的是联合文件系统。

相关文章:

  • 【AI 加持下的 Python 编程实战 2_07】第七章:基于 Copilot 完整演示问题分解能力在实际问题中的落地应用
  • 从事计算机视觉需要掌握哪些知识
  • 面试题:循环引用两个节点相互引用,如何判断哪个用 shared_ptr?哪个用 weak_ptr?
  • Pytorch实战
  • 软件架构师的“天、人、术、势“:构建未来系统的哲学框架
  • Linux 下依赖库的问题
  • OV-Watch(一)(IAP_F411学习)
  • 【Part 2安卓原生360°VR播放器开发实战】第一节|通过传感器实现VR的3DOF效果
  • Milvus(1):什么是 Milvus
  • 21. git apply
  • 大模型技术解析与应用 | 大语言模型:从理论到实践(第2版)| 复旦大学 | 533页
  • 深度学习方向急出成果,是先广泛调研还是边做实验边优化?
  • springboot自动装配的原理
  • 修改PointLIO项目
  • RHCSA知识点
  • 2025-4-19 情绪周期视角复盘(mini)
  • Linux命令--将控制台的输入写入文件
  • C语言之高校学生信息快速查询系统的实现
  • RocketMQ实现基于可靠消息的最终一致性
  • electron打包是没有正确生成electron.exe,x ENOENT: no such file or directory, rename:
  • 俄乌互指对方未遵守复活节临时停火提议
  • 西藏艺术来到黄浦江畔,“隐秘之门”艺术展外滩三号开幕
  • 人民日报:当阅读成为“刚需”
  • 陕西省药监局:未检出巨子生物“可复美”存在“表皮生长因子”
  • 金科股份:控股股东被动减持收警告处罚与上市主体无关,对重整工作没有影响
  • 文化中国行|从太公祭到刘基庙:何以文成,何以伯温