当前位置: 首页 > 面试题库 >

Docker为什么需要联合文件系统

萧秋月
2023-03-14
问题内容

Docker对Union File系统(例如AUFS)创建容器究竟做了什么?如果Docker必须使用常规文件系统而不是联合文件系统,那么会有什么缺点?

我正在寻找具体的技术细节/内部信息,而不是高水平的答案。


问题答案:

它用于:

  • 避免在每次将图像作为新容器运行时复制一组完整的文件
  • 在其自己的层中隔离对容器文件系统的更改,从而允许从已知内容重新启动同一容器(因为移除容器后,具有更改的层将被取消)

该UnionFS:

为其他文件系统实现联合安装。它允许透明地覆盖独立文件系统(称为分支)的文件和目录,从而形成单个一致的文件系统。
合并分支内具有相同路径的目录的内容将在新的虚拟文件系统内的单个合并目录中一起看到。

这样可以使文件系统看起来可写,但实际上不允许写入更改文件系统,也称为
写时复制

如果没有UnionFS,一个200MB的映像将运行5次,因为5个独立的容器意味着1GB的磁盘空间。

请参阅“ Docker映像如何工作? ”。
有关更多技术细节,请参见:

  • “ Docker存储驱动程序 ”
  • “ 容器的解剖:命名空间,的cgroup&一些文件系统魔术 ”从杰罗姆Petazzoni( )jpetazzo


 类似资料:
  • 联合文件系统 联合文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。 联合文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),

  • 我正在查看的源代码,在api文件夹中有一个文件,内容如下: 我听说这个文件是打字稿类型定义。这是什么?为什么需要它?

  • 我将把我的Android项目从Ant转换为Gradle。 我的Eclipse工作区非常简单: 当我添加构建时。MyApp中的gradle文件,我想引用我的Android库项目: 当我运行gradle build时,出现了一个错误“Project with path”:在根项目中找不到MyApp AndroidLibrary“,我在Google上搜索了一下,发现我需要在我的工作区目录中设置一个“se

  • 问题内容: 据我了解,Lombok使用Java的注释处理器来生成其他方法。 与Maven 3.5它完全无需添加任何额外的配置,只需添加dependecy龙目岛,并把一些注解一样,。 但是,如果我在IntelliJ IDEA 2018.2中打开此项目,则生成的吸气剂/设置剂的所有用法都会突出显示为错误。我启用了注释处理,我试图在IntelliJ中构建项目或在Maven中构建,然后在IntelliJ中

  • 作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。 更快速的启动时间 传统的虚拟机技术启动应用服务往往需要数

  • 互联网是超文本标记语言(HTML)页面的集合,它们彼此链接以形成概念性信息网络。随着时间的推移,静态资源数量增加,图像等更丰富的项目开始成为Web结构的一部分。 高级服务器技术允许动态服务器页面 - 其内容基于查询生成的页面。 很快,需要拥有更多动态网页才能获得动态超文本标记语言(DHTML)。一切都归功于JavaScript。在接下来的几年中,我们看到了跨帧通信,试图避免页面重新加载,然后在帧内