1,是什么

一句话:有点类似我们Redis 里面的 rdb 和 aof 文件

2,能干嘛

容器的持久化
容器间继承 + 共享数据

3,数据卷

1,直接命令增加

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
docker inspect 容器ID 查看数据卷是否挂载成功
image.png
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
image.png

2,DockerFile增加

根目录下新建mydocker文件并进入
可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
VOLUME[“/dataVolumeContainer”,”/dataVolumeContainer2”,”/dataVolumeContainer3”
说明:
出于可移植和分享的考虑,用-v 主机目录:容器目录这种方法不能够直接在Dockerfile中实现。
由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。
File构建
image.png

  1. # volume test
  2. FROM centos
  3. VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
  4. CMD echo "finished,--------success1"
  5. CMD /bin/bash
  1. build后生成镜像,获得一个新的镜像<br />run容器<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/10374550/1610455028013-f6264f8b-a77d-4900-ad42-ba8ae8ed23f4.png#align=left&display=inline&height=134&margin=%5Bobject%20Object%5D&name=image.png&originHeight=134&originWidth=404&size=35439&status=done&style=none&width=404)<br />**主机对应的默认的地址**<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/10374550/1610455116571-3887c1f0-a08f-4c2e-bae1-8d91d6bd5073.png#align=left&display=inline&height=252&margin=%5Bobject%20Object%5D&name=image.png&originHeight=252&originWidth=676&size=72630&status=done&style=none&width=676)

3,备注

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个—privileged=true参数即可

4,数据卷容器

1,是什么

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

2,容器间传递共享

容器间传递共享(—volumes-from)
结论:容器之是配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止