17-Docker的数据持久化介绍
回顾容器与镜像
容器是在镜像之上创建的一层运行时层,这一层是可以读写的,我们能够在容器内添加数据,读取数据。
也就是说我们在创建容器的时候,我们能够在容器内创建文件,安装软件等等,但是如果我们把这个容器停止并删除了,那在这个容器内的所有操作都会没有,镜像是不会发生变化的,除非我们重新提交了一个镜像。
持久化的产生
假如我们想创建一个数据库容器,比如mysql容器,那么这个数据库是要写一些数据文件在本地文件内的,如果数据库容器被删除了,数据库存储的数据也就不见了,这是很不合理的。
其实docker是提供了数据持久化的机制。
这个机制就是 Volume,默认情况下容器所产生的数据是写到容器这一层的,这一层会随着容器的销毁而销毁。
但是我们可以通 Volume 挂载到本地或者一个地方存储,那么数据和这个容器就隔离开了,也就是说容器销毁并不会销毁 Volume 的数据。
持久化数据的方案
- 基于本地文件系统的Volume。 可以在执行
Docker create
或者Docker run
时,通过-v
参数将主机的目录作为容器的数据卷。这部分功能便是基于本地文件系统的Volume管理。 - 基于plugin的Volume。支持第三方的存储方案,比如 NAS,aws。
aws是亚马逊云,NAS 是远程网络网盘
Volume的类型
- 受管理的data Volume,由docker后台自动创建。就是加不加
-v
参数,docker后台都会创建一个 Volume。 - 绑定挂载的Volume,具体挂载位置可以由用户指定。通过
-v
参数指定挂载的位置。