虚拟机中docker承载的微服务注册到nacos无法访问问题

这篇具有很好参考价值的文章主要介绍了虚拟机中docker承载的微服务注册到nacos无法访问问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天将一个项目中的部分子系统部署,部署到虚拟机的docker里运行,结果外部无法访问。查看nacos,显示服务已经成功注册。
虚拟机中docker承载的微服务注册到nacos无法访问问题
后来发现,该服务的IP地址外部无法访问:
虚拟机中docker承载的微服务注册到nacos无法访问问题
估计172.17.0.0是docker自身的网段,在上面跑的程序,注册到nacos,直接就用到了docker里的地址。因为对于应用程序来说,docker是容器,就是一个操作系统。解决办法是,在虚拟机的宿主机上添加对该地址的路由。我的虚拟机装在windows下,即在windows里添加路由。
虚拟机中docker承载的微服务注册到nacos无法访问问题
操作步骤:

一、查看虚拟机的ip情况

运行命令:ip addr,得到
虚拟机中docker承载的微服务注册到nacos无法访问问题

二、宿主机上添加路由

C:\Users\cq>route add -p 172.17.0.0/16 192.168.144.128
 操作完成!

注意地址来自于虚拟机的ip信息。172.17.0.0/16,说明该IP的子网掩码为16位,172.17.0.0是子网地址,172.17.0.255是该子网的广播地址。192.168.144.128是虚拟机对外地址。见步骤一。

如果要删掉该路由,就是

route delete 172.17.0.0

如此,搞定矣。

参考文章:
Windows访问Linux虚拟机里面的Docker容器


2023.04.23

三、一劳永逸的做法

创建docker容器的时候,指定用主机网络模式

--network=host
例如:
docker run -d --network=host --name app-demo registry.cn-hangzhou.aliyuncs.com/zhengqing/app-demo

这样注册到nacos,用的就是主机的地址,而不是docker地址。

参考文章:
运维(10) 解决Nacos服务注册使用Docker容器内网ip问题(指定注册ip或–network=host)


2023.05.10
但是方案三是有问题的,不一定能成功。因为使用host模式,意味着docker容器直接居于宿主机网络,完全暴露于宿主机,安全性和区隔性都被削弱;更重要的是,应用程序需要使用的端口有可能已经被占用,从而导致无法运行。最好的办法,还是添加路由,或者需要注册到nacos的其他容器,与nacos共享网络配置,即–net=container:nacos;如果nacos不在同一台机器,可以看看overlay模式。详见拙作:
采用docker部署时kafka共享zookeeper的网络配置文章来源地址https://www.toymoban.com/news/detail-424979.html

到了这里,关于虚拟机中docker承载的微服务注册到nacos无法访问问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nacos注册中心服务注册后,使用服务名无法访问,使用ip+端口号可以访问

    环境: 名称 版本 springBoot 3.0.3 springCloud 2022.0.1 springCloudAlibaba 2022.0.0.0-RC1 nacos客户端 2.2.0 nacos中服务已经注册成功  并且使用RestTemplate进行了负载均衡,加入了@LoadBalanced注解,在使用服务名进行访问时出现以下错误 \\\"timestamp\\\": \\\"2023-03-03T03:57:50.409+00:00\\\",     \\\"status\\\": 500,     \\\"err

    2023年04月20日
    浏览(42)
  • 多个网卡,nacos注册的服务ip有误,导致服务无法访问

    首先出现这种情况可能是电脑中有多个网卡,并且网卡都启动了,比如打开了移动热点   那么这个时候注册到nacos中的可能就是使用的无线网卡的ip地址,导致服务无法访问; 解决方法有两种: 1. 在启动服务前修改application文件,添加如下配置 spring.cloud.inetutils.preferred-netwo

    2024年02月11日
    浏览(40)
  • 解决SpringBoot项目war部署到tomcat下无法Nacos中注册服务问题

           怎么解决Spring Boot项目部署到tomcat下无法Nacos中注册服务问题\\\",希望能够解决您遇到有关问题。 在使用Nacos作为注册中心的Spring Boot项目,以war包形式部署到服务器上,启动项目发现该服务无法在Nacos中注册。     查看源码,需从nacos的注册类找起,查找后发现,naco

    2024年02月10日
    浏览(42)
  • 解决docker项目部署之Nacos服务注册IP选择

    前段时间为了方便项目的快速部署,我便将其项目部署到了docker中,后来有一次项目调试的时候我发现我在本地启动的项目,无法通过fegin调用我部署在docker里面的服务 我就立刻去nacos里查看项目的启动情况,突然发现其注册的地址是docker内部的物理机地址 然后我就去查了一

    2023年04月08日
    浏览(43)
  • Spring boot3.x 无法向 Nacos2.x进行服务注册的问题

    一:问题描述 配置中心都是可用的,但是就是无法向nacos进行服务注册。 二:问题可能出现的原因有如下两种 1.Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加2个端口。除了8848还需要开放9848,9849端口。 官方文档说明:Nacos 2.0.0 兼容性文档 | Nacos 2.maven依赖版本的问题

    2024年01月24日
    浏览(34)
  • 解决vmware虚拟机中的linux系统新增硬盘后无法启动

    以 redhat7.4为例,网上的解决方案多是针对ubuntu的,需要进入ubuntu的预览系统,redhat好像没这个东西 问题:新添磁盘后开机无法进入系统。 似乎是因为计算机将新增的空硬盘作为了系统盘进行启动,所以无法启动系统。 解决方案:只要让计算机将装有linux系统的硬盘进行启动

    2024年02月04日
    浏览(55)
  • 服务注册与发现:Nacos为例 (内附最新版基于Mysql存储Docker Compose部署)

    在现代微服务架构中, 服务注册与发现 中间件已经成为了一个重要的分布式系统协调工具。为什么我们需要这样一个工具?分布式系统需要有效和可靠的工具来管理配置数据、服务发现和协调。 Nacos 作为一体化服务发现与配置管理工具,扮演着服务注册与发现中间件的重要

    2024年02月19日
    浏览(42)
  • IDEA无法连接虚拟机中的Redis的解决方案,无法连接Jedis,无法ping通虚拟机的解决方案

    首先,笔者先说明一下自身的情况,怎么连接都连不上,网上的教程全部都看了一遍,基本上没用得上的,这篇文章里面的解决方案包括了笔者能在网上找到了最全面的办法总结,最后终于是连上了 目录 一.连接Jedis出错 二.解决方案 1.确保虚拟网卡的存在 2.主机和虚拟机之间

    2024年04月08日
    浏览(41)
  • Docker容器与虚拟化技术:Docker consul 实现服务注册与发现

    目录 一、理论 1.Docker consul 二、实验 1.consul部署 2. consul-template部署 三、总结 (1)服务注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服务的压力承载,服务之间调用单纯的通过接口访问。直到后来出现

    2024年02月11日
    浏览(40)
  • 【Java项目】SpringCloud项目注册到Nacos中心时显示的是内网IP导致不同服务器之间无法互相调用接口的解决并发

    微服务项目地址—动动你发财的小手点一个stars吧 出现这个问题是之前我也就遇到过的,这个问题的情况就是: 我们知道微服务项目是可以把不同的项目部署在不同的服务器上从而减少某一台服务器的压力,我们只需要为每一个服务配置一个注册中心即可,然后一个服务需要

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包