数据卷的使用

命名的容器挂载数据卷,其他容器通过挂载这个父容器实现数据共享,挂载数据卷的容器,称之为数据卷容器。

下面我们以上一步新建的镜像lbb/centos为模板并运行容器dc01/dc02/dc03。

我们通过前面新建的镜像lbb/centos为模板,生成的容器是挂载着/dataVolumeContainer1和/dataVolumeContainer2两个数据卷

  1. 先启动一个父容器dc01,并在dataVolumeContainer2中新增内容
[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
  1. dc02/dc03继承dc01(--volumes-from参数)
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
  1. 回到dc01可以看到dc02/dc03添加的数据
[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
  1. 删除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
  1. 删除dc02后,dc03仍然可以访问
  2. 新建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

总结:容器之间配置信息的传递。数据卷的生命周期一直持续到没有容器使用它为止。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容