详解Docker中的数据卷、数据卷容器、容器互联概念

一、数据卷

数据卷使用和作用:
宿主机目录/var/www挂载容器中的/data1,/var/www 和 /data1,即可共享和同步彼此的目录文件。

原理图:
在这里插入图片描述
实例

#运行centos:7容器,创建数据卷,并进入容器,web10为容器名
[root@server1 ~]# docker run -v /var/www:/data1 --name web10 -it centos:7 /bin/bash

#已进入容器,查看是否生成/data1目录
[root@5943a586ff0d /]# ll  
total 12
-rw-r--r--.   1 root root 12114 Nov 13 01:55 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Nov 13 01:53 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Nov 26 08:16 data1  #由数据卷创建成功
drwxr-xr-x.   5 root root   360 Nov 26 08:17 dev

#测试数据卷作用
#在数据卷目录下建文件
[root@5943a586ff0d ~]# cd /
[root@5943a586ff0d /]# cd data1/
[root@5943a586ff0d data1]# touch test1
[root@5943a586ff0d data1]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 26 08:20 test1

#退出容器,并在宿主机目录查看是否同步
[root@server1 ~]# cd /var/www/
[root@server1 www]# ll
总用量 0
-rw-r--r--. 1 root root 0 1126 16:20 test1  #同步成功

二、数据卷容器

数据卷容器是两个容器共享同步数据卷目录,容器1 创建/data1、/data2,容器2 挂载容器1,两个容器的目录互相共享和同步。
在这里插入图片描述

实例

#运行一个容器 web20 并创建两个数据卷目录
[root@server1 ~]# docker run --name web20 -v /data1 -v /data2 -it centos:7 /bin/bash
[root@16f913ec00b8 /]# ll
total 12
-rw-r--r--.   1 root root 12114 Nov 13 01:55 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Nov 13 01:53 bin -> usr/bin
drwxr-xr-x.   2 root root     6 Nov 26 08:41 data1
drwxr-xr-x.   2 root root     6 Nov 26 08:41 data2
drwxr-xr-x.   5 root root   360 Nov 26 08:41 dev
#创建测试文件
[root@16f913ec00b8 /]# touch /data1/testa
[root@16f913ec00b8 /]# touch /data2/testb

#运行容器web30,挂载使用web20的数据卷
[root@server1 ~]# docker run -it --volumes-from web20 --name web30 centos:7 /bin/bash
[root@a826366e043a /]# ll 
total 12
-rw-r--r--.   1 root root 12114 Nov 13 01:55 anaconda-post.log
lrwxrwxrwx.   1 root root     7 Nov 13 01:53 bin -> usr/bin
drwxr-xr-x.   2 root root    19 Nov 26 08:42 data1  #自动生成了web20的数据卷
drwxr-xr-x.   2 root root    19 Nov 26 08:42 data2
#查看是否同步了文件
[root@a826366e043a /]# ll /data1
-rw-r--r--. 1 root root 0 Nov 26 08:42 testa
[root@a826366e043a /]# ll /data2
-rw-r--r--. 1 root root 0 Nov 26 08:42 testb

查看两个容器

[root@server1 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
a826366e043a        centos:7            "/bin/bash"              7 minutes ago       Exited (0) 3 seconds ago                             web30
16f913ec00b8        centos:7            "/bin/bash"              8 minutes ago       Exited (0) 7 minutes ago                             web20

三、容器互联

使用link可以连接两个容器,使两个容器互通,可以ping通
实例

#运行容器web111,放入后台,-P,随机指定端口
[root@server1 ~]# docker run -itd -P --name web111 centos:7 /bin/bash  
e2bb9e2a0d3f39e623fcbaa59fc7b4fa52e5a8633db34589c46bd3add681d0c4

#运行容器web222,连接web111
[root@server1 ~]# docker run -it -P --name web222 --link web111 centos:7 /bin/bash

#测试
[root@ae19c889f714 /]# ping web111
PING web111 (172.17.0.3) 56(84) bytes of data.
64 bytes from web111 (172.17.0.3): icmp_seq=1 ttl=64 time=0.146 ms
64 bytes from web111 (172.17.0.3): icmp_seq=2 ttl=64 time=0.055 ms
64 bytes from web111 (172.17.0.3): icmp_seq=3 ttl=64 time=0.053 ms
64 bytes from web111 (172.17.0.3): icmp_seq=4 ttl=64 time=0.054 ms
64 bytes from web111 (172.17.0.3): icmp_seq=5 ttl=64 time=0.053 ms
^C
--- web111 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4000ms
rtt min/avg/max/mdev = 0.053/0.072/0.146/0.037 ms

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值