springcloud微服务docker部署跨主机无法访问的解决方案

本文介绍了解决微服务采用Docker部署时,跨主机无法访问的问题。提供了三种解决方案:1.设置net为主机模式;2.利用桥接模式下的容器互联;3.通过端口映射并指定注册IP,确保服务间正确访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微服务采用docker部署,一般采用net=bridge桥接的模式来进行部署,这样就导致了,跨主机无法访问(本机可以)。原因是桥接模式情况下,docker会自动分配一个地址,该地址和另外主机分配的不是一个网段,导致无法相互访问。

解决方案

1. net设置为host模式

这中方式直接采用主机网络,无法产生网络隔离的效果,但是只要主机之间能够互相访问,各个docker之间就能互相访问。不过这种访问模式貌似并不推荐。

2. 桥接模式下的docker容器互联

这种模式,在互联网上的解决方案比较多,我这里就不多说了。大家可以自行网络查询。

3. 端口映射

在实际的docker部署的过程种我们都会进行和主机的端口映射,然后就可以通过主机的指定端口进行访问了,这里我说的是springcloud微服务下的解决。

我们的服务在向注册中心注册的时候可以指定注册ip,这样就不会自动注册docker容器的ip。举个例子:

我使用的是nacos的注册中心,所以我指定 spring.cloud.nacos.discovery.ip=【指定的ip地址(一般是主机ip)】,这样我注册到注册中心的服务ip就是我指定的ip,进行服务间访问的时候走的就是这个ip,就不会因不同主机之间docker容器ip网段不同无法访问了(各个主机之间互通)。

(eureka好像是 eureka.instance.hostname 我没有测试这个)

这样就轻松解决掉了微服务docker部署跨主机无法互通了。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值