Docker数据卷定义
数据卷是一个特殊的目录。因为Docker通过宿主机文件系统上的数据卷数据ID与容器进行绑定挂载,所以在一定程度上,容器被映射的目录可以看成数据卷的目录。但是容器被映射的目录(不管非空与否)会被数据卷覆盖。
什么是数据卷
数据卷是将容器内数据可以挂载到本地目录中从而实现数据的持久化。
总结就是容器持久化和同步操作。
为什么需要数据卷
- 数据持久化
- 容器删除,容器内的数据将一并删除。这样会造成数据丢失。
- 共享数据
- 容器间共享数据。
使用数据卷
创建数据
- 方式一 直接命令
- 命令
docker run -v
挂载 docker run -itd -v 主机目录:容器目录 image
- 命令
- 方式二 使用DockerFile
- 创建镜像是指定数据卷
VOLUME ["volume01","volume02"]
具名与匿名挂载
- 具名挂载
- 在挂载时,给数据卷指定名称(且不能以
/
开始) - 例子:以创建MySQL容器为例子
docker run -itd --name container -P -v mysql-conf:/etc/mysql/conf.d mysql:5.7 ...
- 在挂载时,给数据卷指定名称(且不能以
- 匿名挂载
- 直接挂载,不给定名称
- docker 将会随机生成匿名挂载的数据卷名称
- 例子:依旧MySQL容器为例
docker run -itd --name container -P -v /etc/mysql/conf.d mysql:5.7 ...
- 指定路径挂载
- 使用绝对路径指定映射目录,将是匿名的数据卷名称
- 例子:
docker run itd --name contianer -P -v /[path]:/etc/mysql/conf.d mysql:5.7 ...
注意:
-
所有的数据卷的数据(不管是绝对路径还是具名或匿名挂载),它们将存放于
/var/lib/docker/volumes/[name]/_data
目录中。 -
常常使用具名挂载
数据卷的权限
这些权限旨在控制容器内的读写权限,宿主机不受影响。
- ro readonly 只读
- rw readwrite 可读可写
- 格式:
-v name:/etc/nginx:ro
只读-v name:/etc/nginx:rw
可读可写