29-33容器卷
29、是什么
容器卷记得加入
--privileged=true
是一个权限扩容,保证有用户权限的
实现容器内部和宿主机之间的信息互通
docker run -d -p 5000:5000 -v /zzyyuse/myregistry/:/tmp/registry --priviledged=true registry
docker容器数据
容器数据卷完成数据持久化重要资料
备份+持久化
有点类似于redis rdb aof
卷是什么
卷是目录或者文件,存在于一个或多个容器,由docker挂载到容器,但不属于联合文件系统,因此能绕过系统提供一些持续存储或共享数据的特性。完全独立于容器的生命周期
30、能干嘛
docker run -it --priviledged=true -v /宿主机绝对路径:/容器内目录 镜像名
能够在docker中保存数据
特点
在容器中共享和重用数据
直接实时生效
数据卷的更改不会包含在镜像的更新中、
周期一直持续到没人用
31、容器卷和主机互通互联
公式:docker run -it --name myu3 --priveledge=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash
宿主和容器之间映射添加容器卷
1、直接命令添加
docker run -it --priviledged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --priviledged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
生成容器成功z
cd /tmp/docker_data
ls
touch dockerin.txt
//回到原先的位置
cd /tmp/host_data/
ls
touch hostin.txt
//发现两个文件同步一致
2、查看数据卷是否挂在成功
docker inspect djld4k4j6hj
"Mount"[
{
"type":"bind",
"source":"/tmp/myHostData",
.....
}
]
-v v可以有多个,挂载的数量相关
3、容器和宿主机之间数据共享
//假设容器听了,是否能够继续收到数据
docker ps
docker stop dh4hhujh654
//在主机做修改
touch c.txt
//重启docker,并看看是否能够获取到新增的c.txt
docker start
docker exec -it dkgsklg4jh4 /bin/bash
cd /tmp/docker_data
ls
//
可以看到c.txt
32、ro和rw读写规则
docker run -it --priviledge=true -v /tmp/host_data:/tmp/docker_data:rw --name=u1 ubuntu
只读
docker run-it --priviledged=true -v /tmp/host_data:/tmp/docker_data:ro --name=u1 ubuntu
此时,主机写入的内容,可以同步给容器,容器可以读取到。
33、容器卷之间的继承和共享
1、容器1完成和宿主机之间的映射
docker ps
docker run -it --priviledged=true -v /mydocker/u:/tmp/u --name u1 ubuntu /bin/bash
cd /tmp/u
ll
touch u1data.txt
//回到主机
touch host.txt
2、容器2继承容器1的卷规则
docker run -it --priviledged=true --volumes-from 父类 --name u2 ubuntu
实际应用
docker run -it --priviledged=true --volumns-from u1 --name u2 ubuntu
cd /tmp/u
ls -;
主机中,1,2 实现了数据共享
//退出u1
看看此时u2和主机的关系
在主机中新建host2.txt
touch host2.txt
touch u2datav2.txt
此时主机中也可以收到
docker ps -n 2
最近两个
如果u1回来了,有没有哪些数据
docker start u1
docker exec -it u1 /bin/bash
cd /tmp/u
ls -l
此时发现,所有数据都接收到
相当于一个主机挂了两个硬盘,谁坏了都没事。