gpt4 book ai didi

java - Ping 工作但 Java 代码失败,主机在 Docker 中无法访问

转载 作者:行者123 更新时间:2023-12-03 18:23:28 31 4
gpt4 key购买 nike

我对 docker 和 Java 网络问题感到困惑。我有几个通过 docker-compose 启动的容器。有些人需要与其他人交谈。例如,一个容器启动 RabbitMQ,另一个连接到它。如果我在与容器名称连接的 URL 中使用,一切正常。但是,我想使用实际的 docker 主机名地址(以便我使用的配置文件可以从 docker 容器之外的外部机器使用)并且这很奇怪地失败了。假设我有两个容器:

  • rabbitmq
  • 消息消费者

如果 messageconsumer 配置为访问 amqp://rabbitmq:5672,它连接正常。但是我的容器在主机 docker.mycompany.com 上运行。如果我使用 amqp://docker.mycompany.com:5672 作为 url,我的 messageconsumer java 代码 barfs 带有 java.net.NoRouteToHostException: Host is unreachable

但是,如果我在 messageconsumer 容器中启动一个 shell,ping docker.mycompany.com 就可以了!为什么shell和ping能找到主机地址,Java却找不到?我的图像基于 openjdk:alpine。

感谢任何帮助!

最佳答案

我刚刚经历了同样的事情。我没有深入的答案,而且可能不会,但看起来使用 HOST 网络解决了这个问题。

我不会声称这是理想的,但在有人想出更好的答案之前,它应该会让你继续下去。

关于java - Ping 工作但 Java 代码失败,主机在 Docker 中无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461393/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com