一、数据卷
数据卷使用和作用:
宿主机目录/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 11月 26 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