一、数据卷概念
1、数据卷是宿主机中的一个目录或文件
2、当容器目录和数据卷目录绑定后,对方的修改会立即同步
3、一个数据卷可以被多个容器同时挂载
4、一个容器也可以挂载多个数据卷
简单理解:有点类似我们的Redis里面的rdb和aof文件
二、数据卷的作用
1、容器数据持久化
2、外部机器和容器间接通信
3、容器之间数据交换
三、配置数据卷
docker run -id --privileged=true -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
注:文件目录不存在时会自动创建文件目录
四、容器卷和主机互通互联
1、在容器内/tmp/myhostdata目录下创建文件1.txt,并向文件写入内容,然后查看宿主机/myhostdata是否创建了同样文件1.txt
2、在宿主机内/myhostdata目录下创建文件2.txt,并向文件写入内容,然后查看容器/tmp/myhostdata目录是否创建了同样文件2.txt
3、查看数据卷是否挂载成功
docker inspect 容器ID
五、容器卷ro和rw读写规则
说明:默认情况下,容器卷是可读可写的,但是在特殊场景下,我们想要容器实例内部被限制,只能读取不能写,也就是容器内只能读取宿主机文件数据,如果宿主机写入内容,可以同步给容器内,容器可以读取到。
# 可读可写 docker run -id --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw --name=容器名 镜像名 # 只能读不能写 docker run -id --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro --name=容器名 镜像名
六、容器卷之间的继承
步骤一:容器1完成和宿主机的映射
步骤二:容器2继承容器1的卷规则
docker run -it --privileged=true --volumes-from 父类 --name=u2 ubuntu
说明:当容器1挂掉之后,宿主机和容器2之间依旧可以正常同步数据卷内容,当容器1重启之后,会自动同步宿主机和容器2的数据卷,只要实现了容器继承卷的规则,不管是在哪个容器或者宿主机上更新数据卷内容,都会同步其他几个数据卷