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

时间:2017-01-04 10:19:43

标签: java networking docker docker-compose

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

  • 的RabbitMQ
  • 的MessageConsumer

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

但是,如果我在messageconsumer容器中启动shell,ping docker.mycompany.com可以正常工作!为什么shell和ping找到主机地址,而不是Java?我的图片基于openjdk:alpine。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

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

我不会声称这个理想,但它应该让你去,直到有人得到更好的答案。