Docker 容器的连接(linking)系统是除了端口映射外【让容器的端口暴露到宿主机上】,另一种跟容器中应用交互的方式。该系统会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。
本次基于两个容器之间创建一个安全隧道实现容器互联。
首先建立两个新容器,分别命令为:
web02和db02,如果不命令就要使用容器默认的名字连接【不推荐,因为不好识别】
第一个容器:web02
[swper@Docker ~]$ docker run -i -t --name web02 centos:centos7.1.1503 /bin/bash
查看web02容器的IP地址:
[root@f608d7cc7650 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
77: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:25 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.37/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:25/64 scope link
valid_lft forever preferred_lft forever
第二个容器:db02
[swper@Docker ~]$ docker run -i -t --name db02 --link=web02:web02 centos:centos7.1.1503 /bin/bash
主要参数:—link=【要接连的容器名,可指定】:【别名】,创建容器时不加此参数无法互联。
查看db02容器IP地址:
[root@3590b0ba685f /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
79: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:11:00:26 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.38/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:26/64 scope link
valid_lft forever preferred_lft forever
此时,在容器上就可以互样ping通了,此处Ping名字或者IP地址都可以的。
[root@3590b0ba685f /]# ping web02
PING web02 (172.17.0.37) 56(84) bytes of data.
64 bytes from web02 (172.17.0.37): icmp_seq=1 ttl=64 time=0.092 ms
64 bytes from web02 (172.17.0.37): icmp_seq=2 ttl=64 time=0.100 ms
64 bytes from web02 (172.17.0.37): icmp_seq=3 ttl=64 time=0.091 ms
Ctrl+P && Ctrl+Q
让容器在后台继续运行。
在不进入容器下查看容器的IP地址:
[swper@Docker ~]$ docker inspect web02|grep IPA
"IPAddress": "172.17.0.37",
"SecondaryIPAddresses": null,