命名的容器掛載數(shù)據(jù)卷,其他容器通過掛載這個父容器實(shí)現(xiàn)數(shù)據(jù)共享辛掠,掛載數(shù)據(jù)卷的容器,稱之為數(shù)據(jù)卷容器释牺。
下面我們以上一步新建的鏡像lbb/centos為模板并運(yùn)行容器dc01/dc02/dc03萝衩。
我們通過前面新建的鏡像lbb/centos為模板,生成的容器是掛載著/dataVolumeContainer1和/dataVolumeContainer2兩個數(shù)據(jù)卷
- 先啟動一個父容器dc01,并在dataVolumeContainer2中新增內(nèi)容
[root@t-docker lbb]# docker images lbb/centos
REPOSITORY TAG IMAGE ID CREATED SIZE
lbb/centos latest a37b96c1c7a7 3 hours ago 200MB
[root@t-docker lbb]# docker run -it --name dc01 lbb/centos
[root@b786166d80d7 /]# ls
dataVolumeContainer1 dataVolumeContainer2
[root@b786166d80d7 /]# cd dataVolumeContainer1
[root@b786166d80d7 dataVolumeContainer1]# touch dc01_add.txt
[root@t-docker lbb]#
[root@t-docker lbb]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b786166d80d7 lbb/centos "/bin/sh -c /bin/bash" 8 minutes ago Up 8 minutes dc01
- dc02/dc03繼承dc01(--volumes-from參數(shù))
dc02 繼承 dc01
[root@t-docker lbb]# docker run -it --name dc02 --volumes-from dc01 lbb/centos
[root@e71e1991a17b /]# ls
anaconda-post.log dataVolumeContainer1 dev home lib64 mnt proc run srv tmp var
bin dataVolumeContainer2 etc lib media opt root sbin sys usr
[root@e71e1991a17b /]# cd dataVolumeContainer1
[root@e71e1991a17b dataVolumeContainer1]# ls
dc01_add.txt
[root@e71e1991a17b dataVolumeContainer1]# touch dc02_add.txt
[root@e71e1991a17b dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt
[root@t-docker lbb]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e71e1991a17b lbb/centos "/bin/sh -c /bin/bash" 3 minutes ago Up 3 minutes dc02
b786166d80d7 lbb/centos "/bin/sh -c /bin/bash" 14 minutes ago Up 14 minutes dc01
dc03 繼承 dc01
[root@t-docker lbb]# docker run -it --name dc03 --volumes-from dc01 lbb/centos
[root@69c4c254cb0f /]# cd dataVolumeContainer1
[root@69c4c254cb0f dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt
[root@69c4c254cb0f dataVolumeContainer1]# touch dc03_add.txt
[root@69c4c254cb0f dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt dc03_add.txt
[root@t-docker lbb]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69c4c254cb0f lbb/centos "/bin/sh -c /bin/bash" 2 minutes ago Up About a minute dc03
e71e1991a17b lbb/centos "/bin/sh -c /bin/bash" 7 minutes ago Up 7 minutes dc02
b786166d80d7 lbb/centos "/bin/sh -c /bin/bash" 18 minutes ago Up 18 minutes dc01
- 回到dc01可以看到dc02/dc03添加的數(shù)據(jù)
[root@t-docker lbb]# docker exec -it dc01 /bin/bash
[root@b786166d80d7 /]# ls
anaconda-post.log dataVolumeContainer1 dev home lib64 mnt proc run srv tmp var
bin dataVolumeContainer2 etc lib media opt root sbin sys usr
[root@b786166d80d7 /]# cd dataVolumeContainer1
[root@b786166d80d7 dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt dc03_add.txt
- 刪除dc01没咙,dc02修改后dc03可否訪問
[root@t-docker lbb]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69c4c254cb0f lbb/centos "/bin/sh -c /bin/bash" About an hour ago Up About an hour dc03
e71e1991a17b lbb/centos "/bin/sh -c /bin/bash" About an hour ago Up About an hour dc02
b786166d80d7 lbb/centos "/bin/sh -c /bin/bash" About an hour ago Up About an hour dc01
[root@t-docker lbb]#
[root@t-docker lbb]# docker rm -f dc01
dc01
[root@t-docker lbb]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69c4c254cb0f lbb/centos "/bin/sh -c /bin/bash" About an hour ago Up About an hour dc03
e71e1991a17b lbb/centos "/bin/sh -c /bin/bash" About an hour ago Up About an hour dc02
[root@t-docker lbb]# docker attach dc02
[root@e71e1991a17b dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt dc03_add.txt
[root@e71e1991a17b dataVolumeContainer1]# touch dc02_update.txt
[root@e71e1991a17b dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt dc02_update.txt dc03_add.txt
- 刪除dc02后猩谊,dc03仍然可以訪問
- 新建dc04繼承dc03后再刪除dc03
[root@t-docker lbb]# docker run -it --name dc04 --volumes-from dc03 lbb/centos
[root@7b7f4dd0c965 /]# cd dataVolumeContainer1
[root@7b7f4dd0c965 dataVolumeContainer1]# ls
dc01_add.txt dc02_add.txt dc02_update.txt dc03_add.txt
總結(jié):容器之間配置信息的傳遞。數(shù)據(jù)卷的生命周期一直持續(xù)到?jīng)]有容器使用它為止祭刚。