莱芜十七中网站,中国临海门户网站工程建设,中国社交网站做多外国人的,证券公司网站建设方案一、概念
1.定义
卷就是目录或文件#xff0c;存在于一个或多个容器中#xff0c;由docker挂载到容器#xff0c;但不属于联合文件系统#xff0c;因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。 卷的设计目的就是数据的持久化#xff0c;完全独…一、概念
1.定义
卷就是目录或文件存在于一个或多个容器中由docker挂载到容器但不属于联合文件系统因此能够绕过Union File System提供一些用于持续存储或共享数据的特性。 卷的设计目的就是数据的持久化完全独立于容器的生存周期因此Docker不会在容器删除时删除其挂载的数据卷
2.作用
将运用与运行的环境打包镜像run后形成容器实例运行 但是我们对数据的要求希望是持久化的。 Docker容器产生的数据如果不备份那么当容器实例删除后容器内的数据自然也就没有了。 为了能保存数据在docker中则使用卷。
3.特点
数据卷可在容器之间共享或重用数据卷中的更改可以直接实时生效数据卷中的更改不会包含在镜像的更新中数据卷的生命周期一直持续到没有容器使用它为止
二、添加容器卷
运行一个带有容器卷存储功能的容器实例 docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录 镜像名 Docker挂载主机目录访问如果出现cannot open directory .: Permission denied 解决办法在挂载目录后多加一个–privilegedtrue参数 1.宿主vs容器之间映射添加容器卷
容器操作
hongcaixiahongcaixiadeMacBook-Pro ~ % docker run -it --privilegedtrue -v /Users/hongcaixia/Documents/host_data:/tmp/docker_data --namemy_centos centos
[rootc61d4745b6e8 /]# cd /tmp/docker_data
[rootc61d4745b6e8 docker_data]# ls
[rootc61d4745b6e8 docker_data]# touch docker.txt
[rootc61d4745b6e8 docker_data]# ls
docker.txt
[rootc61d4745b6e8 docker_data]# ls -- 宿主机在该目录建立了host.txt
docker.txt host.txt
[rootc61d4745b6e8 docker_data]# echo write in dockerdocker.txt
[rootc61d4745b6e8 docker_data]# cat docker.txt
write in docker
[rootc61d4745b6e8 docker_data]# cat docker.txt -- 宿主机在该文件写入了write in host
write in docker
write in host
[rootc61d4745b6e8 docker_data]# 主机操作
hongcaixiahongcaixiadeMacBook-Pro ~ % cd /Users/hongcaixia/Documents/host_data
hongcaixiahongcaixiadeMacBook-Pro host_data % ls
docker.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % touch host.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % ls
docker.txt host.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % vi docker.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % cat docker.txt
write in docker
write in host
hongcaixiahongcaixiadeMacBook-Pro host_data % 使用docker inspect 容器id 命令查看容器挂载信息
hongcaixiahongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd1b08d9fd2a centos /bin/bash 14 minutes ago Up 14 minutes docker_centos
hongcaixiahongcaixiadeMacBook-Pro ~ % docker inspect dd1b08d9fd2a
[
...Mounts: [{Type: bind,Source: /Users/hongcaixia/Documents/host_data,Destination: /tmp/docker_data,Mode: ,RW: true,Propagation: rprivate}],
...
]如果容器停止了主机在挂载目录修改内容当容器启动之后依旧可以同步到信息 容器操作
hongcaixiahongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd1b08d9fd2a centos /bin/bash 22 minutes ago Up 22 minutes docker_centos
hongcaixiahongcaixiadeMacBook-Pro ~ % docker stop dd1b08d9fd2a
dd1b08d9fd2a
hongcaixiahongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hongcaixiahongcaixiadeMacBook-Pro ~ % docker start dd1b08d9fd2a
dd1b08d9fd2a
hongcaixiahongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd1b08d9fd2a centos /bin/bash 24 minutes ago Up 2 seconds docker_centos
hongcaixiahongcaixiadeMacBook-Pro ~ % docker exec -it dd1b08d9fd2a bash
[rootdd1b08d9fd2a /]# cd /tmp/docker_data/
[rootdd1b08d9fd2a docker_data]# ls
docker.txt docker_in.txt docker_in.txt~ docker_in.txz~ host.txt host1.txt
[rootdd1b08d9fd2a docker_data]#主机操作在容器停止之后创建host1.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % touch host1.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % ls
docker.txt docker_in.txt docker_in.txt~ docker_in.txz~ host.txt host1.txt
hongcaixiahongcaixiadeMacBook-Pro host_data % 2.添加读写映射规则
默认是可读可写
设置只读限制容器实例内部被限制只能读取不能写 docker run -it --privilegedtrue -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
容器操作
hongcaixiahongcaixiadeMacBook-Pro ~ % docker run -it --privilegedtrue -v /Users/hongcaixia/Documents/host_data2:/tmp/docker_data2:ro --namehcx_centos2 centos
[rootf12971f08fb1 /]# ls
bin dev etc home lib lib64 lostfound media mnt opt proc root run sbin srv sys tmp usr var
[rootf12971f08fb1 /]# cd /tmp/docker_data2/
[rootf12971f08fb1 docker_data2]# ls -- 在主机中创建的文件
host.txt
[rootf12971f08fb1 docker_data2]# touch docker.txt
touch: cannot touch docker.txt: Read-only file system
[rootf12971f08fb1 docker_data2]# 主机操作
hongcaixiahongcaixiadeMacBook-Pro Documents % cd host_data2
hongcaixiahongcaixiadeMacBook-Pro host_data2 % ls
hongcaixiahongcaixiadeMacBook-Pro host_data2 % touch host.txt
hongcaixiahongcaixiadeMacBook-Pro host_data2 % ls
host.txt
hongcaixiahongcaixiadeMacBook-Pro host_data2 %三、卷的继承和共享
docker run -it --privilegedtrue --volumes-from 父类 --name 容器名 镜像名
第一个容器my_centos3:
hongcaixiahongcaixiadeMacBook-Pro ~ % docker run -it --privilegedtrue -v /Users/hongcaixia/Documents/host_data3:/tmp/docker_data3 --namemy_centos3 centos
[root1e7c088b1b4d /]# cd /tmp/docker_data3
[root1e7c088b1b4d docker_data3]# ls
[root1e7c088b1b4d docker_data3]# touch docker3.txt
[root1e7c088b1b4d docker_data3]# ls
docker3.txt
[root1e7c088b1b4d docker_data3]# ls
docker3.txt docker4.txt
[root1e7c088b1b4d docker_data3]# ls
docker3.txt docker4.txt host.txt
[root1e7c088b1b4d docker_data3]#-- 停掉父容器不影响子容器和主机的同步
hongcaixiahongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
671ef51c2961 centos /bin/bash 6 minutes ago Up 6 minutes my_centos4
hongcaixiahongcaixiadeMacBook-Pro ~ % docker stop 671ef51c2961
671ef51c2961
hongcaixiahongcaixiadeMacBook-Pro ~ % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hongcaixiahongcaixiadeMacBook-Pro ~ % -- 父容器恢复主机和子容器的操作可以同步过来
hongcaixiahongcaixiadeMacBook-Pro ~ % docker start 671ef51c2961
671ef51c2961
hongcaixiahongcaixiadeMacBook-Pro ~ % docker exec -it 671ef51c2961 /bin/bash
[root671ef51c2961 /]# cd /tmp/docker_data3/
[root671ef51c2961 docker_data3]# ls
docker3.txt docker4.txt host.txt host2.txt
[root671ef51c2961 docker_data3]#第二个容器my_centos4: 继承3的容器卷
hongcaixiahongcaixiadeMacBook-Pro ~ % docker run -it --privilegedtrue --volumes-from my_centos3 --namemy_centos4 centos
[root671ef51c2961 /]# cd /tmp/docker_data3
[root671ef51c2961 docker_data3]# ls
docker3.txt
[root671ef51c2961 docker_data3]# touch docker4.txt
[root671ef51c2961 docker_data3]# ls
docker3.txt docker4.txt host.txt
[root671ef51c2961 docker_data3]# -- 停掉父容器不影响子容器和主机的同步
[root671ef51c2961 docker_data3]# ls
docker3.txt docker4.txt host.txt host2.txt
[root671ef51c2961 docker_data3]# 主机
hongcaixiahongcaixiadeMacBook-Pro Documents % cd host_data3
hongcaixiahongcaixiadeMacBook-Pro host_data3 % ls
hongcaixiahongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt
hongcaixiahongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt docker4.txt
hongcaixiahongcaixiadeMacBook-Pro host_data3 % touch host.txt
hongcaixiahongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt docker4.txt host.txt
hongcaixiahongcaixiadeMacBook-Pro host_data3 % hongcaixiahongcaixiadeMacBook-Pro host_data3 % touch host2.txt
hongcaixiahongcaixiadeMacBook-Pro host_data3 % ls
docker3.txt docker4.txt host.txt host2.txt
hongcaixiahongcaixiadeMacBook-Pro host_data3 % 父容器stop不会影响子容器和主机之间的同步