解决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)
上一篇 2021年8月3日 下午8:00
下一篇 2021年8月3日 下午9:00


相关推荐

  • docker导出所有镜像_怎么把docker镜像复制出来

    docker导出所有镜像_怎么把docker镜像复制出来背景由于工作需要,要一次性导出机器上全部的镜像。导出命令:dockersave$(dockerimages–format'{{.Repository}}:{{.Tag}}’)-oallinone.tar

    2025年9月19日
    6
  • docker dockerfile详解_进入docker容器命令

    docker dockerfile详解_进入docker容器命令前言Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。Dockerfile简介Dockerfile是用来构建Docker镜像的构建文件,是由一系列

    2022年7月30日
    10
  • kafka集群搭建-docker版本[通俗易懂]

    kafka集群搭建-docker版本[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档kafka集群搭建文章目录kafka集群搭建前言一、kafka是什么?二、集群1.集群2.负载均衡3.扩容4.ZookeeperLeader选举kafka架构集群搭建下载安装zookeeper前言kafka是个高吞吐的消息中间件,为啥快啊?1顺序读写20拷贝3批量提交和批量ACK4分片和副本消息队列高可用就得用集群。提示:以下是本篇文章正文内容,下面案例可供参考一、kafka是什么?kafka理论参

    2022年5月2日
    86
  • centos安装指定版本docker或软件

    centos安装指定版本docker或软件

    2021年6月1日
    118
  • 群晖自带内网穿透_群晖内网解析

    群晖自带内网穿透_群晖内网解析1.打开docker程序,注册表搜索blichus找到blichus/wyc_linux_64双击下载2.下载完成在左侧映像找到刚才下载的镜像,双击配置启动3.点高级设置4.勾选启用自动重新启动5.网络勾选使用与dockerhost相同的网络6.环境选项卡点加号前边大写TOKEN(务必大写一致)后边值填写你的隧道token7.最后点应用完成就可以了,每次在网页端修改隧道之后要记得重…

    2022年8月31日
    10
  • docker疑难杂症:docker命令Tab无法自动补全[通俗易懂]

    docker疑难杂症:docker命令Tab无法自动补全[通俗易懂]今天在敲命令时,发现docker无法自动补全镜像名和其他参数,这样使用效率大大降低,然后百度找方法,下面是解决方法一、安装bash-completeyuminstall-ybash-completion二、刷新文件source/usr/share/bash-completion/completions/dockersource/usr/share/bash-completio…

    2022年5月13日
    318

发表回复

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

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