【笔记于学习尚硅谷课程所作】
5、Docker容器数据卷
5.1 容器数据卷概述
类似我们Redis里面的rdb和aof文件。
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
特点:
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
作用:实现容器的持久化、实现容器间继承+共享数据
5.2 添加数据卷
在容器里添加数据卷的两种方法:直接命令添加、DockerFile添加
1.直接命令添加
#容器停止退出后,主机修改后数据依然同步
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
#加入只读权限(容器只读,主机可读可写)
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
#查看数据卷是否挂载成功
docker inspect 容器ID
注意:Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个–privileged=true参数即可
2.DockerFile添加
(1)创建Dockerfile脚本,名为dockerfile(在根目录下)
# volume test
#可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
(2)使用build生成新镜像,名为lfuser/centos
docker build -f dockerfile -t lfuser/centos:1.3 .
(3)启动容器
docker run -it lfuser/centos:1.3
(4)查看是否挂载成功,并查看主机文件默认存储位置
docker inspect 容器ID
5.3 数据卷容器
定义:命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
#让容器dc02继承dc01
docker run -it --name dc02 --volumes-from dc01 lfuser/centos
容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止