当前位置: 首页 > 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的镜像存储是采用的是联合文件系统。

http://www.xdnf.cn/news/52381.html

相关文章:

  • get和post的区别
  • 基于 JavaWeb 的 SpringBoot 办公 ERP 管理系统设计与实现(源码+文档+部署讲解)
  • 1~4字节的CRC32非暴力破解,在线工具手工计算
  • 基于 Elasticsearch 8.12.0 集群热词实现
  • 大模型应用开发自学笔记
  • C++ 俄罗斯方块 | Tetris⚡YQW · Studio ⚡【无需下载图片】
  • 英式英语与美式英语的拼写差异
  • Cesium 地形加载
  • 如何部署MCP Sever【SSE通信方式】及调试
  • 从浏览器地址栏输入 URL 到网页显示,这中间发生了什么?
  • data_analysis29
  • seate TCC模式案例
  • 征程 6 VIO 通路断流分析
  • 基于FPGA的四层电梯设计系统设计和实现
  • 19年电赛D题硬件详解
  • C语言自增自减题目
  • 安全技术和防火墙
  • JVM 学习
  • SpringBoot集成Kafka详解
  • Python range 使用详解
  • P2505 [HAOI2012] 道路 Solution
  • 62页华为IPD-MM流程:市场调研理论与实践方案精读【附全文阅读】
  • Linux网络UDP与TCP
  • Matlab 五相电机仿真
  • Unity3D仿星露谷物语开发36之锄地动画2
  • DeepSeek 即将联合 vLLM 开源推理引擎
  • Chapter 3 Semiconductor Devices
  • Python多任务编程:进程全面详解与实战指南
  • RHCSA知识点
  • C++的spdlog异步日志windows配置教程