为了账号安全,请及时绑定邮箱和手机立即绑定

Docker容器内微服务向注册中心注册ip地址的问题

Docker容器内微服务向注册中心注册ip地址的问题

慕桂英4014372 2018-10-11 13:26:46
微服务启动的时候,会自动向服务注册中心报告自己的ip和端口。但是服务是在docker容器内运行的,注册的ip就成了172开头的docker内部ip, 这个地址是无法被其它机器访问的。这种情况是不是必须手动将服务注册的地址改成宿主机的地址和端口呢,有其它好方案没----- update -----docker 1.12版本以后engine有了swarm模式,经测试使用swarm的overlay网络可解决跨主机通讯问题,这种方案是否合适呢
查看完整描述

3 回答

?
慕用0266149

TA贡献1条经验 获得超0个赞

这里我是这样解决的 

因为docker是172的 而且即使修改了微服务注册到注册中心的ip改成了192也是不行

解决办法: 改变docker的网络模式 我这里改成了host模式 共用物理机的 就可以了 

在创建容器的时候 --net=host 就可以了


查看完整回答
反对 回复 2019-11-17
?
皈依舞

TA贡献1851条经验 获得超3个赞

有几个思路:
1、在启动服务的时候由宿主设备报告 ip
2、启动服务的时候向容器环境变量中注入宿主 ip 信息
3、注册中心收到注册请求时,从网络层拿 ip

查看完整回答
反对 回复 2018-10-29
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

docker swarm 提供的overlay network可以提供跨主机的容器内网络通讯,本机内容器可以在启动时指定network来组成内部网络,然后可以在swarm主机上用host模式部署nginx,使用etcd,consul等动态注册服务和更新nginx的反向代理配置来达到动态服务发现的目的。
不过overlay目前是所有跨主机通讯方式中性能损耗最大的,达到60%。网上有人做过测试,你可以找来看看。因此就目前来说,生产环境还是要考虑kubernetes或者mesos

查看完整回答
反对 回复 2018-10-29
  • 3 回答
  • 0 关注
  • 7817 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信