Feign调用容器内服务超时(局域网与宿主机容器通讯)

来源:12-1 运行第一个docker容器

慕先生4222854

2018-05-08

原因已确认,网络不通。

    1. ip段说明

        192.168开头为局域网

        10.42开头为宿主机内的容器网段

    2. 说明

        容器内部能ping通局域网

        容器之间能ping通容器

        宿主机能ping通全部网段

        局域网不能ping通容器网段(造成服务之间无法通讯)

    3. 情况说明

        开发好一部分服务后,部署到容器。

        IDE开发新的服务并直接运行,需要调用到已部署在容器内的服务。

        通过宿主机暴露出的端口注册到eureka,通过feign调用eureka上面的服务,网络不通响应超时。


        //img.mukewang.com/szimg/5af252500001a9c905380313.jpg

写回答

3回答

慕先生4222854

提问者

2018-05-22

目前的方式是使用hostname注册,指定宿主机IP,这样开发环境就能访问到已部署好的服务。

eureka.instance.hostname=192.168.0.131

eureka.instance.prefer-ip-address=false

1
0

慕先生4222854

提问者

2018-05-16

有道友遇到诸如此类问题没,求解决方案。
1. 打通网络

2. 三个环境

0
1
廖师兄
通过宿主机暴露出的端口注册到eureka,通过feign调用eureka上面的服务,网络不通响应超时 这是因为服务所在的机器有多个网卡/IP,注册的时候用了容器的 ip, 应该用宿主机的 ip, 其实也就是这个配置的问题eureka.instance.prefer-ip-address: true 关于这一点,我在后面的课程 rancher 部署有讲哦,可以继续往下看。 局域网不能ping通容器网段(造成服务之间无法通讯) 这个是正常的,也不需要 ping 通,为什么 docker run 要加 -p 8080:8080,因为 docker 容器默认使用的是桥接
2018-05-17
共1条回复

殇腥黯皓

2018-05-10

你的用法不对,环境要隔离,不能混用,本地服务都注册到本地eureka,容器里的服务注册到容器的eureka;如果你是把容器里的当生产环境,那么你就是没有把开发环境和生产环境分开

0
3
慕先生4222854
回复
殇腥黯皓
你好!这样就引发出了一个资源问题,此时会存在三个环境。 开发环境、测试环境、生产环境。 一个局域网环境(开发环境),不通过docker部署开发好的99个服务,然后项目开发中,调用这里面的服务。 一个测试环境,模拟线上,通过docker部署服务 一个线上生产环境。 这样不说资源,光是服务同步就得花费大量精力。 大神请问你在工作中是如何解决这类问题的,还是就这样整。谢谢!
2018-05-16
共3条回复

SpringCloud Finchley(M2+RELEASE+SR2)微服务实战

SpringCloud组件实现微服务,【已升级Finchley.Release】

5673 学习 · 2489 问题

查看课程