docker真实IP解决

背景

在微服务的环境中使用docker部署各个应用,部分应用使用容器内的真实ip暴露出服务。会导致微服务之间调用出现网络超时,要解决这个问题需要让微服务暴露为宿主机的ip

解决

方式一

使用docker-compose的配置 network_mode: "host"

bash 复制代码
emqx-auth:
    container_name: "xxApp"
    network_mode: "host"
    image: image
    restart: always
    environment:
      TZ: "Asia/Shanghai"
      APP_SERVICE: "gateway-v3-3.0.1-SNAPSHOT"
      START_COMMAND: "--spring.config.location=classpath:bootstrap.yml,/conf/base.yml,/conf/emqx-auth.yml"
      JAVA_OPTS: "-Xms512m -Xmx1024m"
      NACOS_IP: $NACOS_IP
    volumes:
      - "/cloud/service:/cloud/service"
    networks:
      - bridge1

方式二

使用docker 创建容器时指定参数 --network host

bash 复制代码
docker run image --network host --port 8080:8080 --name xxApp -d

方式三

如果使用的是nacos做注册中心、可在各个应用内部通过配置项指定host参数

bash 复制代码
spring.cloud.nacos.discovery.ip=192.168.12.32

在使用dubbo时也可以通过下面两种方式解决

暴露服务指定host

bash 复制代码
<dubbo:protocol name="dubbo" port="20890" host="主机地址"/>

设置环境变量

bash 复制代码
# DUBBO_IP_TO_BIND = 主机地址
docker run -e DUBBO_IP_TO_BIND=30.5.97.6  -p 30.5.97.6:20881:20880 --name xxApp -d
复制代码
不在docker环境直接设置系统的环境变量即可。

总结:

复制代码
1、	可以通过dubbo.protocol或dubbo.provider的host属性对host进行配置,
	支持IP地址和域名.但此时注册到注册中心的IP地址和监听IP地址是同一个值
	
2、	为了解决在虚拟环境或局域网内consumer无法与provider通信的问题,可以通过 环境变量 分别设置注册到注册中心的IP地址和监听IP地址,
	其优先级高于dubbo.protocol或dubbo.provider的host配置

官网参考:主机自定义

相关推荐
晚风吹长发5 小时前
Docker基础——Docker Network(网络详解)
linux·运维·网络·ubuntu·docker·容器
ai_xiaogui7 小时前
PanelAI没有域名也能装?IP安装+自签HTTPS+安全加固全攻略(私有化部署必备)
tcp/ip·安全·https·私有化部署·自签证书·panelai·自带https自动续证
oradh8 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
treesforest9 小时前
如何解决IP定位精度不足导致的投放偏差
网络·网络协议·tcp/ip·ip属地·查ip归属地
ji_shuke9 小时前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
张忠琳10 小时前
【NVIDIA】k8s-device-plugin v0.19.3 标签管理模块 (internal/lm) 深度分析之六
云原生·容器·架构·kubernetes·nvidia
小匠石钧知10 小时前
02_在多个RockyLinux10虚拟机上安装k8s集群
云原生·容器·kubernetes·k8s
小此方11 小时前
Linux网络(一):揭秘从网络发展哲学到 TCP/IP 协议栈分层设计的设计哲学
linux·网络·tcp/ip
霁月的小屋12 小时前
Docker 工程化实践(六):Docker Compose 管理多容器应用
运维·docker·容器
江湖有缘13 小时前
Docker实战 | 使用Docker部署EasyNode服务器面板工具
服务器·docker·容器