Rabbitmq连接拒绝从Docker容器到本地主机

我有一个docker容器运行一个java进程,我试图连接到运行在本地主机上的rabbitmq。

以下是我迄今为止所做的步骤:

在我的本地机器上(运行Docker版本为1.13.0-rc3的macbook,在closures防火墙的情况下生成4d92237)

  1. 我已经更新了我的rabbitmq_env.conf文件,以删除RABBITMQ_NODE_IP_ADDRESS,所以我不绑定通过本地连接,我有一个pipe理rabbitmq用户。 (不要使用访客用户)
  2. 我在本地机器上通过telnettesting了这个,没有问题telnet <local-ip> 5672

docker集装箱内

  1. 能ping通local-ip和curl rabbitmq admin api curl -i -u username:password http://local-ip:15672/api/vhosts返回成功

    [{ “名称”: “/”, “跟踪”:假}]

  2. 当我尝试从容器内部telnet时,我得到

    “外部主机closures连接”

  3. 看着rabbitmq.logs

    =错误报告====closuresAMQP连接<0.30526.1>(local-ip:53349 – > local-ip:5672):{handshake_timeout,handshake}

我的java stacktrace有帮助

由:java.net.ConnectException:连接被拒绝(连接>拒绝)在java.net.PlainSocketImpl.socketConnect(本地方法)在> java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)在> java.net。 AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl。> java:206)at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)at java.net.Socket.connect()java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) (Socket.java:589)at> com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.ja> va:32)at> com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newCon> nection(RecoveryAwareAMQConnectionFactory.java :35)

docker network inspect bridge

[{“Name”:“bridge”,“Id”:“716f935f19a107225650a95d06eb83d4c973b7943b1924815034d469164affe5”,“Created”:“2016-12-11T15:34:41.950148125Z”,“Scope”:“local”,“Driver” “EnableIPv6”:false,“IPAM”:{“Driver”:“default”,“Options”:null,“Config”:[{“Subnet”:“172.17.0.0/16”,“Gateway”:“172.17 “Containers”:false,“Containers”:{“9722a49c4e99ca5a7fabe56eb9e1c71b117a1e661e6c3e078d9fb54d7d276c6c”:{“Name”:“testing”,“EndpointID”:“eedf2822384a5ebc01e5a2066533f714b6045f661e24080a89d04574e654d841”,“MacAddress”:“ 02:42:ac:11:00:02“,”IPv4Address“:”172.17.0.2/16“,”IPv6Address“:”“}},”Options“:{”com.docker.network.bridge.default_bridge“ :“true”,“com.docker.network.bridge.enable_icc”:“true”,“com.docker.network.bridge.enable_ip_masquerade”:“true”,“com.docker.network.bridge.host_binding_ipv4”:“ com.docker.network.bridge.name“:”docker0“,”com.docker.network.driver.mtu“:”1500“},”Labels“:{}}]

我错过了什么?

重启后,一切正常。 我不认为兔子使用尊重.config的变化

对我来说这工作正常!

我已经安装了图像docker pull rabbitmq:3-management

并运行

 docker run -d --hostname haroldjcastillo --name rabbit-server -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin2017 -p 5672:5672 -p 15672:15672 rabbitmq:3-management 

最重要的是添加连接和pipe理端口-p 5672:5672 -p 15672:15672

看你在docker上的主机

 docker-machine ip 

在我的情况返回:

 192.168.99.100 

去pipe理http://192.168.99.100:15672

对于Spring Boot,您可以configuration它,或者适用于其他连接

 spring.rabbitmq.host=192.168.99.100 spring.rabbitmq.username=admin spring.rabbitmq.password=admin2017 spring.rabbitmq.port=5672 

最好的祝愿