从Docker容器连接到本地主机上的rabbitmq

时间:2016-12-28 14:51:51

标签: java docker rabbitmq dockerfile

我有一个在docker容器中运行的java应用程序和一个在本地主机(mac)中运行的rabbitmq。该应用程序需要与本地主机上的rabbitmq进行通信,有人可以指出我该如何实现这一目标?

2 个答案:

答案 0 :(得分:3)

如果您使用--net="bridge",Docker引擎会将虚拟网络接口作为getway。这是一个标准值。在linux上,您可以使用ifconfig命令知道接口的名称。

docker0   Link encap:Ethernet  IndirizzoHW 02:42:56:6c:95:26  
      indirizzo inet:172.17.0.1  Bcast:0.0.0.0  Maschera:255.255.0.0
      indirizzo inet6: fe80::42:56ff:fe6c:9526/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:28267 errors:0 dropped:0 overruns:0 frame:0
      TX packets:25451 errors:0 dropped:0 overruns:0 carrier:0
      collisioni:0 txqueuelen:0 
      Byte RX:52948314 (52.9 MB)  Byte TX:25718113 (25.7 MB)

在我的容器中,我只使用 172.17.0.1 作为访问我的主机的网关。

在容器内部,您还可以使用route命令显示路线,并查看默认网关是什么

root@15fae92c516f:/# route
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use      Iface
 default         172.17.0.1      0.0.0.0         UG    0      0        0  eth0
 172.17.0.0      *               255.255.0.0     U     0      0        0  eth0
root@15fae92c516f:/# 

答案 1 :(得分:2)

@Giorgio感谢您的回答,它给我看了正确的地方。我无法使用您的解决方案运行,因为我在Mac上使用Docker并且您的解决方案适用于Linux环境。

Mac上Docker的Ne​​tworing功能不支持docker0接口,如https://docs.docker.com/docker-for-mac/networking/中所述

我按照第34节中的给定解决方案;我想从容器连接到主机上的服务"以上链接。

在lo0上创建别名 并调整rabbitmq.config来监听IP解决了我的问题。