• Docker容器学习与分享09


    Docker容器之间的相互通信

    先新建两个不同的网段,就用分享08里的两个网段作为新建的网段。

    [root@promote ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    b6a32ec430e9        bridge              bridge              local
    9ab80c94885b        host                host                local
    0470e5b1d2ad        new2_net            bridge              local
    236f3139821f        new_net             bridge              local
    c42335728d98        none                null                local
    

    接着查看一下这两个网段的具体信息。
    先看一下new_net网段,网段是172.18.0.0/24

    [root@promote ~]# docker network inspect new_net
    [
        {
            "Name": "new_net",
            "Id": "236f3139821f765d4d5572e81065645796bdb32675bdba41da706ca612625ae8",
            "Created": "2018-07-10T02:21:53.602649029-04:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": {},
                "Config": [
                    {
                        "Subnet": "172.18.0.0/16",
                        "Gateway": "172.18.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    

    再查看一下new2_net网段,网段是192.168.1.0/24

    [root@promote ~]# docker network inspect new2_net
    [
        {
            "Name": "new2_net",
            "Id": "0470e5b1d2ad2fca704d8788f652b76a777f05df37e3894dd8351e9989c5f3d9",
            "Created": "2018-07-10T02:24:01.201554097-04:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": {},
                "Config": [
                    {
                        "Subnet": "192.168.1.0/24",
                        "Gateway": "192.168.1.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    

    接着创建两个容器,分别连接到new_netnew2_net两个不同的网段(使用Ctrl+P+Q让容器在后台运行)。

    [root@promote ~]# docker run -it --name busybox --network new_net docker.io/busybox
    / # 
    [root@promote ~]# docker run -it --name busybox2 --network new2_net docker.io/busybox
    / # 
    

    创建完成之后,先进busybox查看一下网络设备,再ping一下busybox2看看容器的连通性。

    [root@promote ~]# docker attach busybox
    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:02
            inet addr:172.18.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
            inet6 addr: fe80::42:acff:fe12:2/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:22 errors:0 dropped:0 overruns:0 frame:0
            TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:1879 (1.8 KiB)  TX bytes:3108 (3.0 KiB)
    
    lo        Link encap:Local Loopback
            inet addr:127.0.0.1  Mask:255.0.0.0
            inet6 addr: ::1/128 Scope:Host
            UP LOOPBACK RUNNING  MTU:65536  Metric:1
            RX packets:9 errors:0 dropped:0 overruns:0 frame:0
            TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000
            RX bytes:803 (803.0 B)  TX bytes:803 (803.0 B)          
    
    [root@promote ~]# docker attach busybox
    / # ping 192.168.1.2
    PING 192.168.1.2 (192.168.1.2): 56 data bytes
    ^C
    --- 192.168.1.2 ping statistics ---
    19 packets transmitted, 0 packets received, 100% packet loss
    

    发现ping不通,为了让它可以互相ping通,可以将busybox2连接到busybox所在的网络里。

    [root@promote ~]# docker network connect new2_net busybox
    [root@promote ~]#
    

    再进入busyboxping一下busybox2试试。

    [root@promote ~]# docker attach busybox
    / # ping 192.168.1.2
    PING 192.168.1.2 (192.168.1.2): 56 data bytes
    64 bytes from 192.168.1.2: seq=0 ttl=64 time=0.094 ms
    64 bytes from 192.168.1.2: seq=1 ttl=64 time=0.149 ms
    64 bytes from 192.168.1.2: seq=2 ttl=64 time=0.139 ms
    ^C
    --- 192.168.1.2 ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max = 0.094/0.127/0.149 ms
    

    发现可以ping通了。
    再看一下busybox2的网络设备。

    / # ifconfig
    eth0      Link encap:Ethernet  HWaddr 02:42:AC:12:00:02
            inet addr:172.18.0.2  Bcast:0.0.0.0  Mask:255.255.0.0
            inet6 addr: fe80::42:acff:fe12:2/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:22 errors:0 dropped:0 overruns:0 frame:0
            TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:1879 (1.8 KiB)  TX bytes:3108 (3.0 KiB)
    
    eth1      Link encap:Ethernet  HWaddr 02:42:C0:A8:01:03
            inet addr:192.168.1.3  Bcast:0.0.0.0  Mask:255.255.255.0
            inet6 addr: fe80::42:c0ff:fea8:103/64 Scope:Link
            UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
            RX packets:13 errors:0 dropped:0 overruns:0 frame:0
            TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:0
            RX bytes:1026 (1.0 KiB)  TX bytes:1026 (1.0 KiB)
    
    lo        Link encap:Local Loopback
            inet addr:127.0.0.1  Mask:255.0.0.0
            inet6 addr: ::1/128 Scope:Host
            UP LOOPBACK RUNNING  MTU:65536  Metric:1
            RX packets:9 errors:0 dropped:0 overruns:0 frame:0
            TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
            collisions:0 txqueuelen:1000
            RX bytes:803 (803.0 B)  TX bytes:803 (803.0 B)
    

    发现busybox2容器多出一个网络设备eth1,就相当于为了可以让两个容器互通,在busybox2中添加了一块虚拟网卡,然后分配给它一个IP地址使得他们可以互通。

  • 相关阅读:
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    动手动脑2
    动手动脑3
    每日日报
    每周总结
    Java学习
  • 原文地址:https://www.cnblogs.com/Timesi/p/9303156.html
Copyright © 2020-2023  润新知