回顾:绑定数据卷是将容器内产生的数据持久化的一个操作
什么是数据卷容器:
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
简单来说 ,硬盘上面挂载硬盘,实现数据的依赖
启动容器 名称为 zhy ,打开新的交互式窗口 ,指定主机路径和容器内路径的数据卷绑定 相当于挂载一个硬盘
docker run -it —name zhy -v /a1:/dataVolumeContainer1 -v /a2:/datavolumeContainer2 centos:1.1
多个数据依赖:
centos1.1是用dockerfile创建的包含两个数据卷的镜像文件
设置 zhy为父容器
docker run -it —name zhy centos:1.1
以相同的模板运行 zhy2
docker run -it —name zhy2 —volumes-from zhy centos:1.1
再以相同的模板运行 zhy2
docker run -it —name zhy3 —volumes-from zhy2 centos:1.1
无论在 zhy容器还是zhy2,zhy3任意一个容器中新增文件,另外两个容器都会同步更新文件
并且在已经形成的关系链中删除中间某个容器,其他的容器的数据共享功能不受影响。
创建多个容器形成数据共享
[root@test 12345]# docker run -it --name zhy centos:1.1
[root@test 12345]# docker run -it --name zhy2 --volumes-from zhy centos:1.1
[root@294d3f8affb7 /]#
[root@test 12345]#
[root@test 12345]# docker run -it --name zhy3 --volumes-from zhy2 centos:1.1
[root@109f696367a0 /]#
[root@test 12345]# docker run -it --name zhy4 --volumes-from zhy3 centos:1.1
将链条中间某个容器删除也不会影响其他容器时间的数据共享
[root@test 12345]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d046741ebf31 centos:1.1 "/bin/sh -c /bin/bash" 3 minutes ago Up 3 minutes zhy4
109f696367a0 centos:1.1 "/bin/sh -c /bin/bash" 4 minutes ago Up 4 minutes zhy3
294d3f8affb7 centos:1.1 "/bin/sh -c /bin/bash" 21 hours ago Up 21 hours zhy2
f1dff44fd34a centos:1.1 "/bin/sh -c /bin/bash" 21 hours ago Up 21 hours zhy
[root@test 12345]# docker attach zhy4
[root@d046741ebf31 /]# cd datavolumeContainer2/
[root@d046741ebf31 datavolumeContainer2]# touch 1.rxr
[root@d046741ebf31 datavolumeContainer2]# read escape sequence
[root@test 12345]# docker attach zhy1
Error: No such container: zhy1
[root@test 12345]# docker attach zhy
[root@f1dff44fd34a /]# cd datavolumeContainer2/
[root@f1dff44fd34a datavolumeContainer2]# ls
1.rxr
[root@f1dff44fd34a datavolumeContainer2]# read escape sequence
[root@test 12345]# docker attach zhy3
[root@109f696367a0 /]# cd datavolumeContainer2/
[root@109f696367a0 datavolumeContainer2]# ls //容器zhy zhy3 zhy4中都共享了相同的文件
1.rxr
[root@109f696367a0 datavolumeContainer2]# read escape sequence
[root@test 12345]# docker rm zhy3
Error response from daemon: You cannot remove a running container 109f696367a0b4ffc0158d80747d1889f10ffa702bce040946d48f52e945a35d. Stop the container before attempting removal or force remove
[root@test 12345]# docker stop zhy3
zhy3
[root@test 12345]# docker start zhy3
zhy3
[root@test 12345]# docker rm -f zhy3 //强制删除运行中的容器
zhy3
[root@test 12345]# docker attach zhy2
[root@294d3f8affb7 /]# cd datavolumeContainer2/
[root@294d3f8affb7 datavolumeContainer2]# ls
1.rxr //容器zhy2种也有相同的文件
[root@294d3f8affb7 datavolumeContainer2]# touch 2.txt
[root@294d3f8affb7 datavolumeContainer2]# read escape sequence
[root@test 12345]# docker attach zhy4
[root@d046741ebf31 datavolumeContainer2]# ls
1.rxr 2.txt //容器zhy4种也产生了容器zhy2新建的文件
[root@d046741ebf31 datavolumeContainer2]# read escape sequence
[root@test 12345]# docker attach zhy
[root@f1dff44fd34a datavolumeContainer2]# ls
1.rxr 2.txt
//容器4继承容器3,但是3号容器被删除了,
//但容器zhy2中新建的文件容器zhy4中也生成了,说明容器3,4之间虽然可以通过继承来创建
//但容器2和容器4的数据共享也是互通的。
[root@test 12345]# docker attach zhy4
[root@d046741ebf31 datavolumeContainer2]# ls
1.rxr 2.txt