存储数据的2中方式
1. 由storage driver 管理镜像层和容器层,实现多层数据的堆叠并为用户提供单一的合并后的统一视图。(不保存数据)
2. data volume(保存数据,提供独立于容器外的持久化存储)
storage driver
由于多层的镜像层是只读的,最上层的容器层是可读写。
1. 新数据放在最上面的容器层
2. 修改现有数据,从镜像层拷贝,修改后放到容器层
3. 如果多层中有相同的文件,用户只看到上面那层的文件
查看信息:docker info
Ubuntu 默认aufs ,底层文件系统是extfs,各层数据放在/var/lib/docker/aufs
data volume
volume 持久化数据,本质上是docker host文件系统中的目录或文件mount到容器中。即相当于挂载一个U盘到容器中,数据可以永久保存在U盘(使用它的容器已经销毁),能够存储的数据的大小取决于U盘的大小
挂载方式
1. bind mount
将host上已存在的文件或目录mount到容器
实例:
docker run -d -v <host path>:<container path>:ro
设置权限:默认可读可写,可设置为可读(容器无法对数据修改)
注意:
挂载文件时,必须保证文件存在,否则当做目录
2. docker managed volume
不需要指明路径,只要指明mount point
实例:
docker run -d -v <container path>
注意:
每次容器申请mount docker managed volume,docker都会在var/lib/docker/volumes随机生成一个目录,再把container 的指定目录挂在到这里,如果指定目录已存在,则将数据复制到随机目录
查看具体挂载点:docker inspect