正文
容器可以读写 volume 中的数据。
volume 数据可以被永久的保存,即使使用它的容器已经销毁。
好,现在我们有数据层(镜像层和容器层)和 volume 都可以用来存放数据,具体使用的时候要怎样选择呢?考虑下面几个场景:
-
Database 软件 vs Database 数据
-
Web 应用 vs 应用产生的日志
-
数据分析软件 vs input/output 数据
-
Apache Server vs 静态 HTML 文件
相信大家会做出这样的选择:
-
前者放在数据层中。因为这部分内容是无状态的,应该作为镜像的一部分。
-
后者放在 Data Volume 中。这是需要持久化的数据,并且应该与镜像分开存放。
还有个大家可能会关心的问题:如何设置 voluem 的容量?
因为 volume 实际上是 docker host 文件系统的一部分,所以 volume 的容量取决于文件系统当前未使用的空间,目前还没有方法设置 volume 的容量。
在具体的使用上,docker 提供了两种类型的 volume:bind mount 和 docker managed volume。
bind mount
bind mount 是将 host 上已存在的目录或文件 mount 到容器。
例如 docker host 上有目录 $HOME/htdocs: