容器中的应用读写数据都是发生在容器的读写层,镜像层+读写层映射为容器内部文件系统、负责容器内部存储的底层架构。当我们需要容器内部应用和外部存储进行交互时,还需要一个外置存储,容器数据卷即提供了这样的功能。
另一方面,容器本身的存储数据都是临时存储,在容器销毁的时候数据会一起删除。而通过数据卷将外部存储挂载到容器文件系统,应用可以引用外部数据,也可以将自己产出的数据持久化到数据卷中,因此容器数据卷是容器实现数据持久化的主要实现方式。
容器存储组成:只读层(容器镜像) + 读写层 + 外置存储(数据卷)
容器数据卷从作用范围可以分为:单机数据卷 和 集群数据卷。其中单机数据卷即为容器服务在一个节点上的数据卷挂载能力,docker volume 是单机数据卷的代表实现;
Docker Volume 是一个可供多个容器使用的目录,它绕过 UFS,包含以下特性:
- 数据卷可以在容器之间共享和重用;
- 相比通过存储驱动实现的可写层,数据卷读写是直接对外置存储进行读写,效率更高;
- 对数据卷的更新是对外置存储读写,不会影响镜像和容器读写层;
- 数据卷可以一直存在,直到没有容器使用。
-