【问题标题】:java.net.connectexception connection refused (connection refused) : not able to connect to local rabbitmq from docker containerjava.net.connectexception 连接被拒绝(连接被拒绝):无法从 docker 容器连接到本地 rabbitmq
【发布时间】:2019-11-12 13:17:05
【问题描述】:

您好,我正在 docker 容器中运行一个应用程序,并尝试从 docker 容器连接到本地 rabbitmq 服务器。但我做不到。

我尝试了很多解决方案,但都无法成功。

rabbitmq 凭据 -

主机 - 127.0.0.1,端口 - 5672,用户 - “guest”,密码 - “guest”

我收到此错误:

java.net.connectexception 连接被拒绝(连接被拒绝)

请帮助这里的人!

【问题讨论】:

  • RabbitMQ 是在另一个容器中,还是在主机上? Docker 中的 127.0.0.1 几乎总是意味着“这个容器”(不是 Docker 之外的主机或任何其他容器),所以你需要一些不同的名称。
  • @DavidMaze ,rabbitMQ 是本地设置的。我在 docker 容器内并运行一个 java 程序,并希望从那里连接到 rabbitMQ(在本地机器中)。
  • 'Connection denied' 表示目标 IP:port 上没有任何监听。所以要么是错误的,要么是监听过程没有开始。

标签: java docker rabbitmq


【解决方案1】:

您使用什么 IP 来访问 rabbitmq 实例?

不要在容器内使用 127.0.0.1。

如果您运行容器的主机是 192.168.x.y ,请从容器中 ping 该 IP 并查看它是否可以访问。

如果您的主机 IP 可以访问,请尝试“telnet hostip 15672”以查看在 15672 端口上的主机 IP 上是否可以访问 rabbitmq。

一切都好吗?然后尝试从 hostport:15672 上的容器连接到 rabbit

仍然有问题检查防火墙规则并允许所有内部路由到 erlang、epmd 等正在侦听的 5672、15672、25672、4562

【讨论】:

    【解决方案2】:

    您的主机操作系统和容器使用不同的网络命名空间,因此容器中的127.0.0.1 与您在主机操作系统中的地址127.0.0.1 不同。

    所以:

    • 在主机操作系统网络命名空间--net=host 中启动您的应用容器(我建议阅读此配置的文档和结果)

    • 从应用程序容器连接到(非本地主机,非 127.0.0.1)主机操作系统 IP,RabbitMQ 正在侦听该 IP

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 2021-06-27
      • 2017-08-10
      • 2020-01-19
      • 2015-05-18
      • 2018-06-10
      • 2015-07-30
      相关资源
      最近更新 更多