本文已参与「新人创作礼」活动,一起开启掘金创作之路
容器数据卷
什么是容器数据卷
定义:数据卷是可供一个或多个容器使用的特殊目录(实际上就是目录挂载)
意义:可以将容器内的数据同步到主机上,实现数据共享(容器间也可以进行数据共享)
注意:这里的数据共享是双向的即数据卷可以通过双方目录相互储存
使用数据卷
- 将目录”双向绑定“
docker run -v 主机目录:容器内目录
-v 主机目录:容器内目录 #将容器内的目录挂载到主机目录上
#例子
docker run -it -v /home/test:/home ubuntu
- 查看是否挂载成功(docker inspect)
- 测试数据卷
- 无论是在容器内的目录还是在本地的目录操作均可同步
- 只要容器存在不论有没有运行都能正常同步操作
具名和匿名挂载
- 匿名挂载
只是指定了容器内部的目录并没有指定卷名,所以会随机生成一个卷名
-v 容器内目录 #匿名挂载
#例如
docker run --name -P -v /etc/nginx nginx
docker volume
ls #列出所有的挂载(volume)信息
prune #删除所有未使用的本地卷
rm #删除一个或多个卷
inspect #查看卷(volume)的具体信息
- 具名挂载
指定了容器内部的目录也指定了主机上的目录
-v 卷名:容器内的目录 #具名挂载
#例如
docker run --name -P -v laotie666:/etc/nginx nginx
docker volume
ls #列出所有的挂载(volume)信息
prune #删除所有未使用的本地卷
rm #删除一个或多个卷
inspect #查看卷(volume)的具体信息
-
所有docker的卷没有指定目录的情况下,所有的卷都是放在
/var/lib/docker/volume/xxx/_data -
由此我们可以通过具体的卷名来找到我们挂载对应的路径(具名挂载)
- 拓展
#例子
docker run --name -P -v laotie666:/etc/nginx:ro nginx
docker run --name -P -v laotie666:/etc/nginx:rw nginx
#解释
ro readonly #只读权限
rw read & write #可读可写权限
#注意
一旦这样修改,我们从容器挂载出来的文件在对应的容器内就会被设置上相对应的权限
:ro #我们只能通过宿主机改变
总结
有了数据挂载,我们便可以解决进出容器的繁杂操作问题,有了数据挂载我么还能实时进行数据的同步共享,这样一来就算容器被删除,我们的数据依旧能够保留下来