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

2024-03-21 22:50

本文主要是介绍虚拟机中docker承载的微服务注册到nacos无法访问问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

一、查看虚拟机的ip情况

运行命令:ip addr,得到
在这里插入图片描述

二、宿主机上添加路由

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的网络配置

这篇关于虚拟机中docker承载的微服务注册到nacos无法访问问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/834028

相关文章

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

MYSQL事务死锁问题排查及解决方案

《MYSQL事务死锁问题排查及解决方案》:本文主要介绍Java服务报错日志的情况,并通过一系列排查和优化措施,最终发现并解决了服务假死的问题,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录问题现象推测 1 - 客户端无错误重试配置推测 2 - 客户端超时时间过短推测 3 - mysql 版本问

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

大数据小内存排序问题如何巧妙解决

《大数据小内存排序问题如何巧妙解决》文章介绍了大数据小内存排序的三种方法:数据库排序、分治法和位图法,数据库排序简单但速度慢,对设备要求高;分治法高效但实现复杂;位图法可读性差,但存储空间受限... 目录三种方法:方法概要数据库排序(http://www.chinasem.cn对数据库设备要求较高)分治法(常

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4