Docker存储原理
1.Linux的Namespace、CGroups和UnionFS三大技术支撑了Docker的实现Namespace命名空间是容器隔离的基础它建立了容器间的安全边界。容器间的隔离使用到的命名空间包括User、Mnt、Network、UTS、IPC、Pid。CGroupControl Group 控制组是内核功能用于限制、记录和隔离进程组的 CPU、内存、磁盘 I/O 等资源的使用主要的 CGroup 子系统有 cpu、blkio、device、freezer、memory。UnionFS联合文件系统允许将多个不同的文件系统或目录称为分支合并成一个单一的、虚拟的文件系统视图UnionFS 在资源利用、系统维护、数据管理等方面有着重要的作用。2.UnionFSDocker的镜像通过分层机制构 建每个镜像层都是一个只读的模板记录了所需的文件系统和配置。当执行Docker命令时会 基于现有镜像层创建一个新的可写层用于构建容器运行时。这种分层机制使得镜像构建和部署 变得非常高效。每条 Dockerfile 命令都会生成一个新的镜像层使得镜像大小得以控制。Docker 使用UnionFS 技术实现了镜像的分层存储和容器的数据持久化。UnionFS 可以将多个目录合并为 一个虚拟文件系统使得不同层级的文件和目录得以保留和共享。在容器运行时可写层会覆盖 镜像层中的文件和目录但不会影响底层的数据这样既保证了容器的数据持久化又使得镜像 构建变得非常高效。