Docker_数据卷容器

什么是数据卷容器?

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


以我上一篇文章Docker_容器数据卷新建的lgz/centos镜像运行容器,并取名字mycentos01

测试命令:docker run -it --name mycentos01 lgz/centos:build01

[root@localhost myDocker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
lgz/tomcat          build01             6ce2360a3c6c        2 hours ago         507MB
lgz/centos          build01             0b71e009561a        2 hours ago         203MB
tomcat              jdk8-openjdk        c81106060722        2 days ago          507MB
centos              7                   5e35e350aded        12 days ago         203MB
centos              latest              0f3e07c0138f        7 weeks ago         220MB
[root@localhost myDocker]# docker run -it --name mycentos01 lgz/centos:build01
[root@3586d60e5c03 /]# ls
anaconda-post.log  bin  data1  data2  data3  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

可以看到这个容器中自带有三个数据卷,data1 data2 data3。(具体怎么回事,请阅读上一篇文章Docker_容器数据卷)

运行另一个mycentos02容器,挂载mycentos01

命令格式:docker run -it --name [容器名称] --volumes-from [需要挂载的容器名称或者id] [镜像名[:TAG]]

测试命令:docker run -it --name mycentos02 --volumes-from 3586d60e5c03 lgz/centos:build01

[root@localhost myDocker]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
3586d60e5c03        lgz/centos:build01   "/bin/sh -c /bin/bash"   4 minutes ago       Up 4 minutes                            mycentos01
[root@localhost myDocker]# docker run -it --name mycentos02 --volumes-from 3586d60e5c03 lgz/centos:build01
[root@df2b623b245e /]# ls
anaconda-post.log  bin  data1  data2  data3  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
运行第三个容器,mycentos03,同样挂载mycentos01
[root@localhost myDocker]# docker run -it --name mycentos03 --volumes-from 3586d60e5c03 lgz/centos:build01
[root@04f891897f25 /]# ls
anaconda-post.log  bin  data1  data2  data3  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@04f891897f25 /]# 

三个容器同样带有data1 data2 data3 数据卷,因为他们都来自于同一个镜像。

现在来测试在mycentos01中的data1里面添加文件,其他两个容器里面是否会改变
[root@04f891897f25 /]# [root@localhost myDocker]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
04f891897f25        lgz/centos:build01   "/bin/sh -c /bin/bash"   3 minutes ago       Up 3 minutes                            mycentos03
df2b623b245e        lgz/centos:build01   "/bin/sh -c /bin/bash"   8 minutes ago       Up 8 minutes                            mycentos02
3586d60e5c03        lgz/centos:build01   "/bin/sh -c /bin/bash"   14 minutes ago      Up 14 minutes                           mycentos01

#打开 mycentos01 并且新建centos01AddFile.txt文件
[root@localhost myDocker]# docker attach mycentos01
[root@3586d60e5c03 /]# cd /data1
[root@3586d60e5c03 data1]# ll
total 0
[root@3586d60e5c03 data1]# touch centos01AddFile.txt
[root@3586d60e5c03 data1]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 24 14:14 centos01AddFile.txt

#打开 mycentos02
[root@localhost myDocker]# docker attach mycentos02
[root@df2b623b245e /]# cd data1
[root@df2b623b245e data1]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 24 14:14 centos01AddFile.txt

#打开 mycentos03
[root@localhost myDocker]# docker attach mycentos03
[root@04f891897f25 /]# ls /data1 -l
total 0
-rw-r--r--. 1 root root 0 Nov 24 14:14 centos01AddFile.txt

可以看到,在mycentos01中创建文件,其他两个容器的data1数据卷中会同步共享这个文件。

现在来测试删除mycentos01容器后,对其他两个容器的数据卷会不会有影响
[root@localhost myDocker]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
04f891897f25        lgz/centos:build01   "/bin/sh -c /bin/bash"   4 hours ago         Up 4 hours                              mycentos03
df2b623b245e        lgz/centos:build01   "/bin/sh -c /bin/bash"   4 hours ago         Up 4 hours                              mycentos02
3586d60e5c03        lgz/centos:build01   "/bin/sh -c /bin/bash"   4 hours ago         Up 4 hours                              mycentos01
[root@localhost myDocker]# docker rm -f mycentos01
mycentos01
[root@localhost myDocker]# docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS               NAMES
04f891897f25        lgz/centos:build01   "/bin/sh -c /bin/bash"   4 hours ago         Up 4 hours                              mycentos03
df2b623b245e        lgz/centos:build01   "/bin/sh -c /bin/bash"   4 hours ago         Up 4 hours                              mycentos02

#打开mycentos02容器,并创建一个文件
[root@localhost myDocker]# docker attach mycentos02
[root@df2b623b245e data1]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 24 14:14 centos01AddFile.txt
[root@df2b623b245e data1]# touch centos02AddFile.txt
[root@df2b623b245e data1]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 24 14:14 centos01AddFile.txt
-rw-r--r--. 1 root root 0 Nov 24 14:23 centos02AddFile.txt

#打开mycentos03容器
[root@localhost myDocker]# docker attach mycentos03
[root@04f891897f25 /]# ls /data1 -l
total 0
-rw-r--r--. 1 root root 0 Nov 24 14:14 centos01AddFile.txt
-rw-r--r--. 1 root root 0 Nov 24 14:23 centos02AddFile.txt

可以看到,数据卷共享并没有因为删除mycentos01而失效,可以得出结论:容器之间配置信息的传递,数据卷的生命周期会一直持续到没有容器使用它为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值