解决docker容器部署dubbo服务时,注册到注册中心的地址是docker容器内的地址

解决docker容器部署dubbo服务时,注册到注册中心的地址是docker容器内的地址

今天遇到一个问题,我们用docker容器部署springboot的应用程序,当我们跨机器调用服务时,会出现无法调用到服务。经过排查出现问题的原因如下:

1、Aservice使用docker部署,注册到zk上的ip地址为172.17.0.5(这是容器内部的ip地址)

2、Bservice从zk取到Aservice的地址为Aservice容器内的地址

3、当Aservice和Bservice不在同一个主机时,就出现无法互通

要解决上述的问题,主要就是将docker容器管理的应用注册到zk上的地址弄成宿主机的ip地址。经过查找资料,尝试了两种解决方案。

1、通过docker网络模式为主机模式(默认网桥)

docker run -d –name xxx –net “host” –restart=always xxx

这里可以不用配置端口映射,并且我们用docker ps也看不到该容器的绑定的端口

2、通过-e 设置一些dubbo注册到注册中心的ip地址,可通过下面参数指定

DUBBO_IP_TO_REGISTRY — 注册到注册中心的IP地址

DUBBO_PORT_TO_REGISTRY — 注册到注册中心的端口

DUBBO_IP_TO_BIND — 监听IP地址

DUBBO_PORT_TO_BIND — 监听端口

假设我们的宿主机的ip是29.36.100.95

那么在根据镜像创建容器的时候,我们可以通过-e设置DUBBO_IP_TO_REGISTRY的值,下面是我的测试环境的创建设置语句

docker run -d –name xxx -e DUBBO_IP_TO_REGISTRY=29.36.100.95 -p 10010:10010 xxx

配置成功后,可以通过dubbo控制台,或者直接读取zk的节点信息,可以看到注册到zk上的ip地址为宿主机ip地址

想了解docker四种网络模式可参考(https://blog.csdn.net/qq_43570369/article/details/91504306

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111208.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Docker(一):Docker的安装与常用命令

    Docker(一):Docker的安装与常用命令

    2021年9月26日
    50
  • docker-compose 集群_hadoop完全分布式搭建步骤

    docker-compose 集群_hadoop完全分布式搭建步骤前言实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器。我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有

    2022年7月28日
    21
  • 不同宿主机docker 通信_如何设置同网段IP

    不同宿主机docker 通信_如何设置同网段IP依赖包net-toolsiproute2bridge-utilsgitcurl权限需要在root下执行脚本dnet.shj脚本内容#likebr0要创建的桥接设备名BRNAME=$1#likeeth0要矫健的网络接口名IFNAME=$2#192.168.1.2/24当前主机IPLOCALIP=$3#192.168.1.1当前主机…

    2022年8月20日
    7
  • 如何保证docker2375端口的安全

    如何保证docker2375端口的安全情景再现:之前有很多朋友提过,当使用docker-maven-plugin打包SpringBoot应用的Docker镜像时,服务器需要开放2375端口。由于开放了端口没有做任何安全保护,会引起安全漏洞,被人入侵、挖矿、CPU飙升这些情况都有发生,今天我们来聊聊如何解决这个问题。问题产生的原因首先我们要明白问题产生的原因,才能更好地解决问题!Docker为了实现集群管理,提供了远程管理的端口。DockerDaemon作为守护进程运行在后台,可以执行发送到管理端口上的Docker命令。当我们修改do

    2022年6月13日
    46
  • ubuntu安装教程_ubuntu docker安装

    ubuntu安装教程_ubuntu docker安装卸载docker1.删除某软件,及其安装时自动安装的所有包sudoapt-getautoremovedockerdocker-cedocker-enginedocker.iocontainerdrunc2.删除docker其他没有没有卸载dpkg-l|grepdockerdpkg-l|grep^rc|awk'{print$2}’|sudoxargsdpkg-P#删除无用的相关的配置文件3.卸载没有删除的docker相关插件(…

    2022年8月30日
    3
  • Docker卸载_退出docker容器命令

    Docker卸载_退出docker容器命令##1)进入docker的安装目录cd/usr/local/bin/##2)删除与docker相关的文件夹sudorm-rfdocker*sudorm-rfcom.docker.*sudorm-rfhub-tool*sudorm-rfkube*sudorm-rfvpnkit*完成!

    2022年9月8日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号