• docker--container之间的link,bridge create


    container的name和ID一样,也是唯一的,当不知道container的IP时,可以用name替代,但需要先配置link

    下面创建两个container 时,未配置link所以ping name 不通。

    [root@localhost ~]# docker container ls
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
    f81ab807503c        busybox             "/bin/sh -c 'while t…"   5 hours ago         Up 5 hours                              test2
    cba625871070        busybox             "/bin/sh -c 'while t…"   5 hours ago         Up 5 hours                              test1
    [root@localhost ~]# docker exec test1 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        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
    18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    [root@localhost ~]# docker exec test2 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        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
    20: eth0@if21: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    [root@localhost ~]# docker exec test1 ping 172.17.0.3
    PING 172.17.0.3 (172.17.0.3): 56 data bytes
    64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.074 ms
    64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.114 ms
    ^C
    [root@localhost ~]# docker exec test1 ping test2
    
    
    ^C
    [root@localhost ~]# docker exec test2 ping 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.077 ms
    64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.100 ms
    ^C
    [root@localhost ~]# docker exec test2 ping test1
    
    
    ^C
    [root@localhost ~]# 

    把test2删了重下创建,并指定link,link具有单向性

    [root@localhost ~]# docker stop test2
    test2
    [root@localhost ~]# docker rm test2
    test2
    [root@localhost ~]#
    [root@localhost ~]# docker run --name test2 -d --link test1  busybox /bin/sh -c "while true;do sleep 3600;done"
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    68789fa4dc47ce821337c64898c11693e24dcc47ff06641e89feabd9a7ffe21d
    [root@localhost ~]# docker exec test2 ping test1
    PING test1 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.073 ms
    64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.071 ms
    64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.071 ms
    ^C
    [root@localhost ~]# docker exec test1 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        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
    18: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    [root@localhost ~]# docker exec test2 ping 172.17.0.2
    PING 172.17.0.2 (172.17.0.2): 56 data bytes
    64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.076 ms
    64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.161 ms
    ^C
    [root@localhost ~]# docker exec test2 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        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
    22: eth0@if23: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
        inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    [root@localhost ~]# docker exec test1 ping 172.17.0.3
    PING 172.17.0.3 (172.17.0.3): 56 data bytes
    64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.087 ms
    64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.085 ms
    ^C
    [root@localhost ~]# docker exec test1 ping test2
    
    
    ^C
    [root@localhost ~]# 

    创建bridge

    [root@localhost ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    4e8172ef8e01        bridge              bridge              local
    9e8c9ce3e33b        host                host                local
    6d01f937585b        none                null                local
    [root@localhost ~]# docker network create -d bridge my-bridge
    b190bd600feb9ab1293e882b4b5c5b828ab4dda1215fd25e9a1921ac8e2f2f07
    [root@localhost ~]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    4e8172ef8e01        bridge              bridge              local
    9e8c9ce3e33b        host                host                local
    b190bd600feb        my-bridge           bridge              local
    6d01f937585b        none                null                local
    [root@localhost ~]# 

    create container 并指定docker network

    [root@localhost ~]# brctl show #br-b190bd600feb即刚才create的my-bridge
    bridge name    bridge id        STP enabled    interfaces
    br-b190bd600feb        8000.0242e6e2a884    no        
    docker0        8000.0242e850c76c    no        veth59c00fa
                                vethfdefc77
    virbr0        8000.525400105abe    yes        virbr0-nic
    [root@localhost ~]# docker run -d --name test3 --network my-bridge busybox /bin/sh -c "while true;do sleep 3600;done" #增加network参数
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    cec10f0cd32dc6c059bf29173572a34d0d41c2ff5602d0b8ccac0032a4ac2911
    [root@localhost ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br-b190bd600feb        8000.0242e6e2a884    no        veth75fc0ca
    docker0        8000.0242e850c76c    no        veth59c00fa
                                vethfdefc77
    virbr0        8000.525400105abe    yes        virbr0-nic
    [root@localhost ~]#

     再create container 网络连接my-bridge

    [root@localhost ~]# docker run -d --name test4 --network my-bridge busybox /bin/sh -c "while true;do sleep 3600;done"
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    19216c85489ee71d68bff33ff1ce64a6aff4f035e91659acd08ec9349e3440f3
    [root@localhost ~]# docker network inspect my-bridge
    [
        {
            "Name": "my-bridge",
            "Id": "b190bd600feb9ab1293e882b4b5c5b828ab4dda1215fd25e9a1921ac8e2f2f07",
            "Created": "2019-07-18T20:11:48.739837987-07: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,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {
                "19216c85489ee71d68bff33ff1ce64a6aff4f035e91659acd08ec9349e3440f3": {
                    "Name": "test4",
                    "EndpointID": "9411999854b328be4ad2362a38967f770635bfda8cbf34190e0a61fad83bd815",
                    "MacAddress": "02:42:ac:12:00:03",
                    "IPv4Address": "172.18.0.3/16",
                    "IPv6Address": ""
                },
                "cec10f0cd32dc6c059bf29173572a34d0d41c2ff5602d0b8ccac0032a4ac2911": {
                    "Name": "test3",
                    "EndpointID": "e6470a84504340d4668c0c66b6c4d068898ac9c177e0caf51d8869198349f84a",
                    "MacAddress": "02:42:ac:12:00:02",
                    "IPv4Address": "172.18.0.2/16",
                    "IPv6Address": ""
                }
            },
            "Options": {},
            "Labels": {}
        }
    ]
    [root@localhost ~]#

    同个bridge同网段,能ping通,不同bridge不同网段,不能ping通

    [root@localhost ~]# docker exec test3 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        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
    25: eth0@if26: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
        inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    [root@localhost ~]# docker exec test4 ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1
        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
    27: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
        link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
        inet 172.18.0.3/16 brd 172.18.255.255 scope global eth0
           valid_lft forever preferred_lft forever
    [root@localhost ~]# docker exec test3 ping 172.18.0.3
    PING 172.18.0.3 (172.18.0.3): 56 data bytes
    64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.077 ms
    64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.138 ms
    ^C
    [root@localhost ~]# 
    [root@localhost ~]# docker exec test3 ping 172.17.0.3


    ^C
    [root@localhost ~]#

    如果container是在用户自定义的bridge上,则默认是link的

    [root@localhost ~]# docker exec test3 ping test4
    PING test4 (172.18.0.3): 56 data bytes
    64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.042 ms
    64 bytes from 172.18.0.3: seq=1 ttl=64 time=0.149 ms
    ^C
    [root@localhost ~]# docker exec test4 ping test3
    PING test3 (172.18.0.2): 56 data bytes
    64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.060 ms
    64 bytes from 172.18.0.2: seq=1 ttl=64 time=0.065 ms
    ^C
    [root@localhost ~]# 

    如果把别的bridge也连接到用户创建的bridge上,那也是默认link上的

    [root@localhost ~]# docker network connect my-bridge test1
    [root@localhost ~]# docker network inspect 
    bridge     host       my-bridge  none       
    [root@localhost ~]# docker network inspect my-bridge 
    [
        {
            "Name": "my-bridge",
            "Id": "b190bd600feb9ab1293e882b4b5c5b828ab4dda1215fd25e9a1921ac8e2f2f07",
            "Created": "2019-07-18T20:11:48.739837987-07: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,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {
                "19216c85489ee71d68bff33ff1ce64a6aff4f035e91659acd08ec9349e3440f3": {
                    "Name": "test4",
                    "EndpointID": "9411999854b328be4ad2362a38967f770635bfda8cbf34190e0a61fad83bd815",
                    "MacAddress": "02:42:ac:12:00:03",
                    "IPv4Address": "172.18.0.3/16",
                    "IPv6Address": ""
                },
                "cba62587107007983d45a4383598dbec18a37d33e415f2325572e8f98f36a32a": {
                    "Name": "test1",
                    "EndpointID": "2b5c94ee7d8f5c76ae531e023190528e16cf18f3291298610f3b601511130c32",
                    "MacAddress": "02:42:ac:12:00:04",
                    "IPv4Address": "172.18.0.4/16",
                    "IPv6Address": ""
                },
                "cec10f0cd32dc6c059bf29173572a34d0d41c2ff5602d0b8ccac0032a4ac2911": {
                    "Name": "test3",
                    "EndpointID": "e6470a84504340d4668c0c66b6c4d068898ac9c177e0caf51d8869198349f84a",
                    "MacAddress": "02:42:ac:12:00:02",
                    "IPv4Address": "172.18.0.2/16",
                    "IPv6Address": ""
                }
            },
            "Options": {},
            "Labels": {}
        }
    ]
    [root@localhost ~]# docker exec test4 ping test1
    PING test1 (172.18.0.4): 56 data bytes
    64 bytes from 172.18.0.4: seq=0 ttl=64 time=0.082 ms
    64 bytes from 172.18.0.4: seq=1 ttl=64 time=0.170 ms
    ^C
    [root@localhost ~]# 
  • 相关阅读:
    手脱UPX v0.89.6
    手脱ASPack v2.12
    为什么每次进入命令都要重新source /etc/profile 才能生效?
    解决maven update project 后项目jdk变成1.5
    关于dubbo服务的xml配置文件报错的问题
    dubbo实际应用中的完整的pom.xml
    部署Maven项目到tomcat报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener【转】
    web.xml配置文件中<async-supported>true</async-supported>报错
    eclipse在线安装maven插件
    centos安装eclise启动报错
  • 原文地址:https://www.cnblogs.com/laonicc/p/11210349.html
Copyright © 2020-2023  润新知