什么是容器数据卷
容器之间可以有个数据共享的技术,docker 容器中产生的数据,可以自动同步到本地; - - 说白了就是将我们容器内的目录,挂载到linux服务器上面;
如图:
总结:容器的持久化和操作,容器间也是可以共享的;
使用数据卷
# 直接使用命令来挂载 -v
docker run -it -v 主机目录 容器目录
# 测试
[root@liulihui home]# docker run -it -v /home/cehis:/home centos /bin/bash
# 启动起来之后 docker inspect 容器id 查看挂载信息
[root@liulihui home]# docker inspect c02a39d00952
查看挂载信息
测试文件同步 成功;
再来测试
1、停止容器
2、宿主机修改文件
3、启动容器
4、容器内的数据依旧是同步的!
具名和匿名挂载
# 匿名挂载
-v 容器内路径!
docker run -d -P --name nginx01 -v /etc/nginx nginx
# 查看所有的volume 的情况
[root@liulihui ~]# docker volume ls
DRIVER VOLUME NAME
local f45bf873cacf6bc73c503f616390df9543f996fb000ee29be6605da7e754db13
# 这里发现,这种就是匿名挂载,我们在 -v 只写了容器的路径,没有写容器外的路径
# 具名挂载
[root@liulihui ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
5af22231a669c23773489a40d76417696624d3967cccce894eb4336f4ca5e206
[root@liulihui ~]# docker volume ls
DRIVER VOLUME NAME
local f45bf873cacf6bc73c503f616390df9543f996fb000ee29be6605da7e754db13
local juming-nginx
# 通过 -v 卷名:容器内路径
# 查看一下这个卷
所有的docker容器内的卷,没有指定目录的情况都是在/var/lib/docker/volumes/xxxx/_data
我们通过具名挂载可以方便的找到我们的一个卷,大多数的情况使用的 具名挂载;
-v 容器内路径 # 匿名挂载
-v 卷名:容器内路径 # 具名挂载
-v /宿主机路径:容器内路径 # 指定路径挂载
拓展
# 通过-v 容器内路径: ro rw 改变读写权限
ro readonly # 只读
rw readwrite # 可读可写
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!