为什么Docker需要一个联盟文件系统

Man*_*har 25 filesystems containers docker

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

我正在寻找具体的技术细节/内部而不是高级答案.

Von*_*onC 31

它习惯于:

  • 每次将图像作为新容器运行时,请避免复制完整的文件集
  • 将更改隔离到其自己的层中的容器文件系统,允许从已知内容重新启动相同的容器(因为在删除容器时,具有更改的层将被解除)

的unionfs:

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

这允许文件系统显示为可写,但实际上不允许写入更改文件系统,也称为copy-on-write

如果您没有UnionFS,那么200个图像运行5次,因为5个容器分隔容器意味着1GB的磁盘空间.

有关详细信息,请参阅" Docker镜像如何工作? ".
有关更多技术细节,请参阅: