从Docker容器连接到本地主机上的rabbitmq
问题描述:
我有一个在泊坞窗容器中运行的java应用程序和在本地主机(mac)中运行的rabbitmq。该应用程序需要与本地主机上的rabbitmq进行通信,有人能指出我如何实现这一目标?从Docker容器连接到本地主机上的rabbitmq
答
@Giorgio谢谢您的回答,这表明我看在正确的地方。由于我在Mac上使用Docker并且您的解决方案适用于Linux环境,因此我无法使用您的解决方案来运行它。
Networing功能的码头工人对Mac不支持docker0接口为https://docs.docker.com/docker-for-mac/networking/
解释我也跟着下部分给出的解决方案:“我想从一个容器连接到服务的主机上的”上面的链接的。
在lo0 上创建一个别名并调整rabbitmq.config以侦听该IP,从而解决了我的问题。
答
如果您使用--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
命令路线,看看什么是默认网关
[email protected]:/# 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
[email protected]:/#
请注意,iproute2可用于查询大多数linux'现在'IP链路显示''IP地址显示''IP路由显示'的网络信息 – Matt