Linux下的 docker proxy 不支持grpc代理转发,grpc服务访问报UNAVAILABLE: io exception

Centos7+docker26.1.4+宝塔中部署spring could微服务时,遇到docker部署的项目中需要调用外网的grpc服务时,无法连接grpc服务报UNAVAILABLE: io exception错误。最终发现问题是出现在docker proxy上。
解决方法一:
1、停止docker服务
2、修改Docker的启动参数,以禁用docker-proxy功能,找到Docker配置文件/etc/docker/daemon.json(如果文件不存在,则创建它)并添加以下内容:
{
“bridge”: “none”,
“iptables”: false
}
3、启动docker服务测试

解决方法二:
在运行容器时,使用–net=host参数来启用宿主机的host网络模式
docker run --net=host 。。。。。

解决方法三:
把用到grpc的微服务单独用宝塔中网站-》java项目-》使用JDK1.8以上版本单独部署。

### Nacos gRPC UNAVAILABLE 异常解决方案 当在Docker环境中部署Nacos并遇到`com.alibaba.nacos.shaded.io.grpc.StatusResourceManager: UNAVAILABLE: io exception`错误时,通常是因为网络配置不当或容器间通信存在问题[^1]。 #### 一、检查Nacos服务状态 确保Nacos服务已成功启动,并监听正确的端口。可以通过命令行工具访问宿主机验证Nacos实例是否可访问: ```bash curl http://<docker_host_ip>:8848/nacos/v1/ns/instance/list?serviceName=NACOS_SERVER ``` 如果返回有效JSON响应,则表示Nacos服务正常工作[^3]。 #### 二、修改应用配置文件 对于Spring Boot应用程序,默认情况下会尝试连接到localhost上的Nacos实例。为了适应不同环境下的需求,在实际生产环境中应通过指定外部IP地址替代默认设置。建议创建独立的`bootstrap.properties`文件用于覆盖默认行为: ```properties spring.application.name=your-service-name spring.profiles.active=prod spring.cloud.nacos.discovery.server-addr=<real_nacos_server_address> spring.cloud.nacos.config.server-addr=<real_nacos_server_address> ``` 其中 `<real_nacos_server_address>` 应替换为真实的Nacos服务器地址。 #### 三、调整防火墙规则与安全组策略 确认目标机器上是否有任何防火墙阻止了必要的TCP端口(如8848),必要时开放相应端口;如果是云平台还需注意检查虚拟私有云(VPC)内的安全组设置[^2]。 #### 四、优化Docker Compose配置 如果采用Docker Compose编排多个微服务,则需确保各服务之间能够互相解析域名。可以考虑使用自定义网络模式或将所有服务放置在同一桥接网络下以便于内部通讯[^4]: ```yaml version: '3' services: nacos: image: nacos/nacos-server container_name: nacos ports: - "8848:8848" networks: - mynetwork your_service: ... environment: SPRING_CLOUD_NACOS_DISCOVERY_SERVER_ADDR: nacos:8848 SPRING_CLOUD_NACOS_CONFIG_SERVER_ADDR: nacos:8848 depends_on: - nacos networks: - mynetwork networks: mynetwork: driver: bridge ``` 以上措施有助于解决由于gRPC不可用引起的异常情况,从而实现稳定的服务注册与发现功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心底的光

你的鼓励是专治疑难杂症的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值