封尘网

让学习成为一种习惯!

Docker实现两个容器之间互联

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,

提醒:本文最后更新于 2812 天前,文中所描述的信息可能已发生改变,请谨慎使用。