xiaohanliang
Docker
Docker
  • hi
  • STORAGE DRIVER
    • 1. 什么叫联合挂载
    • 2. 镜像ID是从哪来的
    • 3. 如何组装出一个镜像
    • 4. 为什么有这么多fs@aufs
    • 5. 为什么有这么多fs@overlay
    • 6. 为什么有这么多fs@dm
    • 7. 正确安装devicemapper
  • EXEC DRIVER
    • 1. 资源限制-cgroup
    • 2. 制造小型监狱
    • 3. 切换根目录是什么概念
    • 4. 标准极简容器runC
    • 5. 尝试安装runc工具
  • KUBERNETES NETWORK
    • 0. [WIP]我想串联容器网络的故事
    • 1. 容器网络是什么样的网络
    • 2. cnm认为应该怎样让容器组网
    • 3. 为什么会有一大堆cni插件
    • 4. 为什么要设计出pod
    • 5. 怎样形成一个服务
    • 6. Service就是iptables规则
    • 7. IPVS也能实现Service
    • 8. 从集群外访问服务-nodeport
    • 9. 从集群外访问服务-ingress
    • 10. 想要把域名变成IP
    • 11. DNS是怎么实现的
    • 12. 最常见的方案@flannel
    • 13. 使用tun设备封包@flannel
    • 14. 使用vxlan设备封包@flannel
    • 15. 可不可以不封包@flannel
Powered by GitBook
On this page

Was this helpful?

  1. STORAGE DRIVER

1. 什么叫联合挂载

PrevioushiNext2. 镜像ID是从哪来的

Last updated 4 years ago

Was this helpful?

Unifying filesystems with union mounts

本文译自 → , 并加上了一些我的理解

联合挂载的概念是指, 想要在同一个挂载点上挂载好几个文件系统, 呈现出来的效果是: 一个挂载点下同时出现了不同文件系统里的东西. 显然, 这说的是Docker, 所有人都知道镜像分成好多层, 将这些层做一次"融合"(merge)就形成了我们在容器里看到的东西. 我们从这个现象开始讨论.

在一次普通的挂载过程中, 比如你把目录A挂到挂载点B上, 那么B目录下的东西直接就会被隐藏起来, 进入B目录只能看到A的东西, B的东西不是说不存在了, 而是说被隐藏起来了. 只有在解除A挂载以后才能看到了.

在内核里, 几个文件系统按照他们被挂载的顺序被一层层的摞(stack)起来, 最先被挂载的文件系统会被放在最下层, 最后被挂载的则处在最上层, 很不幸, 在普通挂载模式下, 你只能访问最上层的文件系统. 但如果你用了联合挂载的功能, 那么上上下下所有文件你都是能看到的. (如果出现了重名文件, 只展示上面的)

我提一个有意思的场景, 我们都知道远古时代的DVD是一次性写入的, 没有修改的道理, 写错了这批货就废了. 假设你DVD里是红警的安装包. 过段时间游戏更新成v1.1了, 这种情况下, 你手上的v1.0该怎么卖呢? 如果用联合挂载的办法, 我们在碟片空白的地方写上一些重名文件作为更新包, 读碟的时候把v1.0与更新包摞起来, v1.0放在下面, 更新包放在上面, 这样重名文件就能覆盖老文件, 达到更新的效果

这里