Skip to content

Latest commit

 

History

History
17 lines (10 loc) · 1.45 KB

jing-xiang-shi-xian-yuan-li.md

File metadata and controls

17 lines (10 loc) · 1.45 KB

镜像实现原理

Docker 镜像是一个 ReadOnly 的 Docker 容器模板,含有 Docker 容器运行所需要的内容。

我们已经提过 Docker 镜像被设计为分层结构体系,Docker 通过 Union FS 将这些不同的镜像层组合在一个镜像中。Union FS 是实现 Docker 镜像的技术基础

目前 Docker 支持的联合文件系统种类包括:OverlayFS, AUFS, Btrfs, VFS, ZFSDevice Mapper。关于联合文件系统请参考底层实现中的章节:

{% page-ref page="../chapter-8-core-technology/union-file-system.md" %}

基本上搞懂了上面讲的联合文件系统,大致就明白了 Docker 镜像的实现原理,我们可以简单归纳出如下几个关键词:

  • 分层存储:基础镜像 + 父镜像机制;
  • 写时复制:即 copy-on-write,镜像启动时不需要单独复制一份镜像,而是将所有的镜像层以只读的方式挂载到同一个挂载点,然后在上面覆盖一个读写层即可
  • 联合加载:同一个挂载点挂载多个文件系统,将挂载点的原目录与被挂载内容进行整合,使得最终可见的文件系统将会包含整合之后各层的文件和目录;
  • 内容寻址:根据文件内容索引镜像和镜像层,对镜像层的内容进行校验和,生成一个 Hash 值并作为镜像层的唯一标识,提高了镜像的安全性,一定层度上避免了镜像层的 ID 冲突,增强了镜像的共享。