29、容器数据卷是什么
挂载主机目录访问出现权限不够 加一个–privileged=true
docker容器数据
使用
容器数据卷方式完成数据的持久化重要资料backup
完全独立于容器的生存周期
30、能干什么
docker run -it --privileged=true -v /宿主机绝对路径目录:容器内目录 镜像名
产生原因
容器产生的数据不备份,容器实例删除后,数据就没了。
特点
1 可以在容器间共享和重用数据
2、卷中的更改可以实时生效
3、数据卷更改不包含在镜像更新中
4 生命周期一直到没有容器使用它为止
31、容器卷和主机互联
1 宿主vs容器之间映射添加容器卷
docker run -it privileged=true -v /宿主机绝对路径目录:容器内目录 镜像名
docker run -it privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
docker容器内新建一个文件
cd /tmp/docker_data/
ls
touch dockerin.txt
ls
从主机查看对应目录下是否存在文件
cd /tmp/host_data/
ls
容器中写入
echo 'hello docker'>a.txt
ls -l
cat a.txt
主机中查看并修改文件
vi a.txt
容器中再次查看文件
可以看到有变化
cat a.txt
查看是否挂载成功
docker inspect 容器id
容器和宿主机之间数据共享
停掉容器
docker stop 容器id
docker ps
主机修改文件c.txt
touch c.txt
重启docker容器
docker ps
docker start 容器id
docker exec -it 容器id /bin/bash
cd /tmp/docker_data/
ls -l
实现数据的双线同步
32 ro和rw规则
不重要
33 容器卷继承和共享
容器2继承容器1的卷规则
docker run -it --privileged=true --volumes-from 父类 --name u2 ubuntu
实际
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu
u2新建文件
touch host.txt
主机上发现也可以同步
ls -l
停掉父容器u1
结论
u2继承的是u1挂载路径的规则,至于容器u1的死活,和u2无关。
u1回来,不在期间的数据仍在同步
docker start u1
docker exec -it u1 /bin/bash
cd /tmp/u
ls -l