容器互联

容器互联


–Link

思考一个场景,我们编写了一个微服务,database url=ip:,项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以名字来进行访问容器
[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker exec -it tomcat03 ping tomcat02
ping: tomcat02: Name or service not known

# 如何可以解决?
# 通过--link可以解决网络联通问题
[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker run -d -P --name tomcat04 --link tomcat03 tomcat
511a06550fd96d3ca2999590a21df77b3154bc12346ec0553fb52113f91afb3a
[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker exec -it tomcat04 ping tomcat03
PING tomcat03 (172.17.0.9) 56(84) bytes of data.
64 bytes from tomcat03 (172.17.0.9): icmp_seq=1 ttl=64 time=0.169 ms
64 bytes from tomcat03 (172.17.0.9): icmp_seq=2 ttl=64 time=0.081 ms
64 bytes from tomcat03 (172.17.0.9): icmp_seq=3 ttl=64 time=0.087 ms
64 bytes from tomcat03 (172.17.0.9): icmp_seq=4 ttl=64 time=0.083 ms
64 bytes from tomcat03 (172.17.0.9): icmp_seq=5 ttl=64 time=0.079 ms
64 bytes from tomcat03 (172.17.0.9): icmp_seq=6 ttl=64 time=0.088 ms
--- tomcat03 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5ms
rtt min/avg/max/mdev = 0.079/0.097/0.169/0.034 ms

# 反向可以ping通吗?
[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker exec -it tomcat03 ping tomcat04
ping: tomcat04: Name or service not known

探究:inspect

[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
1c2a18e67a4a        bridge              bridge              local
04c9de8ad10f        host                host                local
97cf7fc6ccad        none                null                local
[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker network inspect 1c2a18e67a4a
[
    {
        "Name": "bridge",
        "Id": "1c2a18e67a4afd52ea52db417d05da7f3ecfc39ac8fa28376184b2eaf86057c0",
        "Created": "2020-07-04T13:52:02.954048731+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "3715f7b1291339490262b73773c6f10ae6ef17178c788562b72cc1c8bba9b7af": {
                "Name": "nginx02",
                "EndpointID": "89288cf0fed0564abf73482ebb8726e1df75b9b296703bbd7c8a1ceecf8d3ba9",
                "MacAddress": "02:42:ac:11:00:05",
                "IPv4Address": "172.17.0.5/16",
                "IPv6Address": ""
            },
            "46ca82801394db3fd67805b07ff7a51c93d89f7fefef0b33e750d6eee0b599ab": {
                "Name": "tomcat02",
                "EndpointID": "4d2daf000accf173d6a22bbe9ab5d1d451687f8a1c86c447acf46bb9d215fa3c",
                "MacAddress": "02:42:ac:11:00:08",
                "IPv4Address": "172.17.0.8/16",
                "IPv6Address": ""
            },
            "4f6fc35ee63d398601d145be53c1a862cc0bf1bd041c2d1337233661f8a96dc3": {
                "Name": "docker01",
                "EndpointID": "de1d3bd14187420cbec68da6d9c1df85929d4de9cf36a7eccb52e3c969344035",
                "MacAddress": "02:42:ac:11:00:07",
                "IPv4Address": "172.17.0.7/16",
                "IPv6Address": ""
            },
            "511a06550fd96d3ca2999590a21df77b3154bc12346ec0553fb52113f91afb3a": {
                "Name": "tomcat04",
                "EndpointID": "22524fac8df598adc9bc900b237b1eef69d6f4cef9c20ab3d640288c7cf8f7e6",
                "MacAddress": "02:42:ac:11:00:0a",
                "IPv4Address": "172.17.0.10/16",
                "IPv6Address": ""
            },
            "785486a2586d009cf6656e6b897ab088a0710a57cffa3125d290aca48148dd66": {
                "Name": "nginx01",
                "EndpointID": "188e4ca11836af9d4732f6b0fc96008fc4d339d2ed4463c26bfc9188de6906cf",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            },
            "a1d183718d527e6e47d374f82b0c652cb2a625f7579776f6e1774e0c4e3cb2e0": {
                "Name": "tomcat03",
                "EndpointID": "e14736e1bdbc1926f5a9c3ff34535824b3df097f8f3c4bb696d910f688a78e1e",
                "MacAddress": "02:42:ac:11:00:09",
                "IPv4Address": "172.17.0.9/16",
                "IPv6Address": ""
            },
            "bff663350fad9fb586e424fb39dc42132360989b2c9fe8bc5c4706fae9dc72ae": {
                "Name": "tomcat01",
                "EndpointID": "f53cd3608ad2cdd1fdd873ab05bad4a9a7bf34762eef878771bee056e88c430f",
                "MacAddress": "02:42:ac:11:00:06",
                "IPv4Address": "172.17.0.6/16",
                "IPv6Address": ""
            },
            "c73282dbda9410dec4e499d5559f668d3e89e1f76842151883b4db147555ec08": {
                "Name": "hzytomcat2",
                "EndpointID": "a744565f1b18091dc55ceb2446180131819b2342cef1dc605b6e766a5e7d0aed",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "f87c270d5ddacfe91f2464809284d6679560d2334474f313310b6546bcd345fa": {
                "Name": "mysql01",
                "EndpointID": "96da0a0f82229be8d8794b71b6118c4194df2173d0da5275c129a81e6fdca11d",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

其实这个tomcat04就是在本地配置了tomcat03的配置

# 查看hosts配置,在这里原理发现
[root@iZ2zedtw714kk6kmn4p41qZ ~]# docker exec -it tomcat04 cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.9	tomcat03 a1d183718d52
172.17.0.10	511a06550fd9

本质探究:–link就是在我们的hosts配置中增加了一个172.17.0.9 tomcat03 a1d183718d52

我们现在玩docker已经不建议使用–link了,我们需要的自定义网络,不使用docker0

docker0的缺点:它不支持容器名连接访问

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值