首页/新闻资讯/正文详情

Docker系列---Docker 镜像底层原理:分层存储、联合文件系统与写时复制

发布时间:2026/11/7 14:20:00 来源:云帆数科 栏目:资讯中心
Docker系列---Docker 镜像底层原理:分层存储、联合文件系统与写时复制
文章目录Docker 镜像底层原理分层存储、联合文件系统与写时复制下一节Docker镜像Dockerfile一、镜像分层Layer1.分层存储2.独立存储二、联合文件系统三、容器可写层镜像与容器的关系四、写时复制Copy-on-Write五、总结Docker 镜像底层原理分层存储、联合文件系统与写时复制下一节Docker镜像Dockerfile一、镜像分层Layer1.分层存储分层存储LayerDocker镜像不是一个完整的大文件而是由多个只读层构成当我们拉取一个镜像的时候我们可以看到下面这样这就是镜像分层一个镜像分为好多层下载的时候是分层下载的就如下图所示base image、image1、image2、image3镜像有两个特征1镜像层是只读的2镜像层可以复用对于镜像层复用我们举一个例子比如我们先下载了Ubuntu镜像现在我们又下载一个镜像到本地我们下载这个镜像的时候Docker就会发现第一层和第二层和之前下载Ubuntu的时候一样也就是LayerA LayerB本地已经有了那么这两层Docker会直接复用复用多个镜像通过引用共享同一份镜像层数据2.独立存储我们先来举一个例子我们放课本第一本放《数据结构》在上面放第二本《计算机网络》在这上面放《计算机组成原理》如果我们想把《计算机网络》换成《操作系统》1先找到《计算机网络》我们先看最上面一层这一层不是我们把它拿起来放一边发现下一层才是2更换为《操作系统》我们找到《计算机网络》之后把它拿走然后把《操作系统》放上去3保持原位把《操作系统》放上去之后我们还需要把原来的《计算机组成原理》放上去我们上面提到镜像是分层的是只读的如果向上面这样每个层是摞起来的1Docker想找到某一个镜像总不能向上面那样一层一层去找这样很麻烦2如果我想更新镜像的某一个层就算我能找到这一层但镜像是只读的怎么办是这样解决的底层镜像层是独立存储的”平铺并列“但是逻辑上仍然有依赖关系和叠加顺序我们来看右边再次理解这句话底层镜像层都是独立存储的这时候1找到一个镜像很容易因为没有摞起来盖住从左到右就很容易找到2想要更新一个镜像很容易直接在原有镜像层上面再加一层我们结合上面这个图来理解我们看到镜像的每一层有很多文件第一层第二层的文件都是平铺并列的而且第二层也没有覆盖第一层第二层的三个文件和第一层的三个文件是错位的如果我们想要更新第二层我们只是要对文件5进行了修改但是镜像是只读的不能修改那怎么办我们把文件5的最新版作为文件7再给镜像加一层在第三层对应第二层文件5的上方放文件7文件5和文件7就像上面我们摞书一样这时候Docker看到的就是文件7文件5被覆盖了到这里就完成了镜像的更新我们没有在原镜像文件上面直接改我们也不可以改因为镜像是只读的但是通过覆盖新的文件覆盖旧的文件完成了镜像的更新二、联合文件系统上面了解到镜像的分层独立存储那么问题来了当容器启动的时候它是如何使用这些分散存储的镜像层呢它怎么知道这些文件是第一层那些文件是第二层Docker是如何将这些独立的镜像层组合起来的联合文件系统 应运而生联合文件系统Union File System将多个镜像层组合起来对外呈现为一个完整的文件系统联合文件系统可以将多个不同的文件系统联合挂载到同一个目录下对外呈现一个统一的文件系统视图OverlayFSLinux 提供的一种联合文件系统实现其底层依赖 Linux OverlayFS三、容器可写层镜像与容器的关系上面镜像的修改问题解决了问题又来了镜像层是只读的那么容器运行过程中如果我们需要修改文件、创建目录或者删除文件这些操作应该如何实现呢例如我们启动一个 Ubuntu 容器在容器中创建一个/home/test.txt文件。这个文件应该存放在哪里难道要直接修改 Ubuntu 镜像中的某个只读层吗显然不行镜像层只读不能修改Docker是这样解决的在镜像层上面再加一层容器可写层这样容器运行过程中产生的文件变更就可以保存在自己的可写层不会修改镜像也不能修改镜像我们使用同一个镜像创建两个容器的时候他们是有各自独立的容器可写层的四、写时复制Copy-on-Write上面我们知道了容器可写层但到底是怎么实现的Docker采用了写时复制Copy-on-Write机制写时复制Copy-on-Write当容器需要修改镜像只读层中的文件时不会直接修改原始文件而是先将文件复制到容器的可写层再对副本进行修改注意这里是容器对镜像的修改我们前面描述的是我们自己对镜像层的更新或修改具体分为三种情况情况一创建文件如果创建一个原本不存在的文件例如/home/test.txtDocker 直接将它写入容器可写层不需要从镜像层复制文件情况二修改文件如果修改一个原本存在于镜像只读层中的文件Docker 将原文件复制到容器可写层在可写层中修改这个副本原始镜像层中的文件保持不变情况三删除文件如果删除一个镜像层中的文件Docker 不会直接修改只读层而是通过删除标记whiteout等机制让联合文件系统视图中不再显示这个文件五、总结Docker 通过联合文件系统将多个只读镜像层组合成统一的文件系统视图当容器需要修改只读镜像层中的文件时OverlayFS 会利用写时复制机制将文件复制到容器的可写层再在可写层中完成修改从而保证原始镜像层不受影响完结撒花~

相关推荐

ollama v0.40.13更新:LFM3正式覆盖Linux与Windows,语音能力接入llama-server
ollama v0.40.13更新:LFM3正式覆盖Linux与Windows,语音能力接入llama-server

发布时间与版本概览 ollama v0.40.13 为 Latest 版本,发布时间为 2026 年 10 月 31 日。 本次更新的核心焦点是 Liquid AI 的 LFM3 模型支持范围扩大。此前相关能力主要面向 Apple silicon,而在 v0.40.13 中,LFM3 模型现已能够运行于 Linux 和… · 2026/11/5 17:05:03

页面500报String.hashCode?真相:switch变量是null
页面500报String.hashCode?真相:switch变量是null

页面500报String.hashCode?真相:switch变量是null 页面 500,控制台报错停在 String.hashCode——代码看着没毛病,switch 里的字符串也写得清清楚楚。真相是:那个字符串变量是 null。 原理:switch 对字符串做… · 2026/11/5 8:55:30

超级鹰版免登录实战(一):Chaojiying.py + DrissionPage 实现【古诗文网图片验证码自动识别免登录】保姆级实战教程
超级鹰版免登录实战(一):Chaojiying.py + DrissionPage 实现【古诗文网图片验证码自动识别免登录】保姆级实战教程

一、 前置回顾(承接上篇文章)承接上篇:超级鹰账号注册、充值、获取 softid 💡 核心重点: 1. 使用现成 Chaojiying_Client 超级鹰打码 2. DrissionPage 操控浏览器,元素截图提取验证码 3. 题型编码 1004&… · 2026/11/5 3:06:05

电工证快速办理北京,真实经历告诉你学历不高也能报上名
电工证快速办理北京,真实经历告诉你学历不高也能报上名

电工证快速办理北京,真实经历告诉你学历不高也能报上名 你是不是也担心自己学历不高,考不了电工证?别急,我来跟你唠唠,我身边就有一个和你一样的人, 学历不高怕报不上名… · 2026/11/7 14:19:10

电工证考试vip题库值不值得考?别怕考不过白交培训费
电工证考试vip题库值不值得考?别怕考不过白交培训费

电工证考试vip题库值不值得考?别怕考不过白交培训费 怕考不过白交培训费?很多电工同行都问过我,电工证考试vip题库值不值得考?尤其是像你这样的漯河劳务班组负责人,手里握着一堆项目,但证书没到手,项目就卡在审批环节。现在市场上特种作业证越来… · 2026/11/7 14:19:10

学校考电工证麻烦吗怎么报名怕考不过白交培训费
学校考电工证麻烦吗怎么报名怕考不过白交培训费

学校考电工证麻烦吗怎么报名怕考不过白交培训费 怕考不过白交培训费?这是很多想在学校考电工证的小伙伴最担心的事。其实,只要选对方法、掌握好报名流程,考试并不像你想象的那么难。本文就来帮你解决【学校考电工证麻烦吗】这个问题,手把手教你怎么报名,… · 2026/11/7 14:19:10

如何查电工证等级低证全国通用吗
如何查电工证等级低证全国通用吗

电工证等级低怎么办?急需特种作业证才能上岗找工作,良心建议来了 你正为电工证等级低发愁?手上有个电工证却无法上岗?这事儿不少焦作房建工程从业者都碰过。别急,今天就给你一条 良心建议… · 2026/11/7 14:19:10

高配电工证样式怎么看?证书过期了不知道怎么复审延期?官方报名入口在这
高配电工证样式怎么看?证书过期了不知道怎么复审延期?官方报名入口在这

高配电工证样式怎么看?证书过期了不知道怎么复审延期?官方报名入口在这 证书过期了不知道怎么复审延期?别慌,这期内容就帮你理清 高配电工证样式 到底长什么样,怎么辨别真假,以及最重要的——到期后该怎么通过 官方报名入口 进行复审延期。… · 2026/11/7 14:19:10

胶南电工证怎么考试 电工证全国通用怎么快速通过
胶南电工证怎么考试 电工证全国通用怎么快速通过

胶南电工证怎么考试 电工证全国通用怎么快速通过 工地太忙根本没时间复习考试,这几乎是所有一线电工的真实写照。尤其是像胶南这种施工项目密集的地区,电工证的考试和年审都成了大家绕不开的话题。但你有没有想过,这张 全国通用… · 2026/11/7 14:18:09

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?
澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄?

澳洲水电工证考试:证书过期了不知道怎么复审延期?电子证书怎么弄? 证书过期了不知道怎么复审延期?别慌,很多人在拿到【澳洲水电工证考试】的电子证书后,一不小心就忽略了复审时间,结果证书失效,工作受阻,甚至被单位追责。今天就从【澳洲水电工证考试… · 2026/11/7 0:00:41

电工作业提示版通过率揭秘:怎么考才能一次过?
电工作业提示版通过率揭秘:怎么考才能一次过?

电工作业提示版通过率揭秘:怎么考才能一次过? 怕考不过白交培训费?别急,今天我就从驻马店应届工程类毕业生的视角,带你全面了解电工作业提示版的考试流程、备考要点和真实通过率,帮你少走弯路、提高一次通过率。… · 2026/11/7 0:00:41

电工证年审报名千万别踩坑 外省证转过来要搞清这几点
电工证年审报名千万别踩坑 外省证转过来要搞清这几点

电工证年审报名千万别踩坑 外省证转过来要搞清这几点 之前考的证在外省能不能转过来?这个问题是很多电工从业者最关心的,特别是像你这样在商丘从事公路工程的人员,经常需要跨省流动,证书的 有效性 和 可迁移性… · 2026/11/7 0:00:41

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 11:25:08

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/7 12:02:18

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 10:29:23

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码