Rabbitmq连接拒绝从Docker容器到本地主机
我有一个docker容器运行一个java进程,我试图连接到运行在本地主机上的rabbitmq。
以下是我迄今为止所做的步骤:
在我的本地机器上(运行Docker版本为1.13.0-rc3的macbook,在closures防火墙的情况下生成4d92237)
- 我已经更新了我的rabbitmq_env.conf文件,以删除RABBITMQ_NODE_IP_ADDRESS,所以我不绑定通过本地连接,我有一个pipe理rabbitmq用户。 (不要使用访客用户)
- 我在本地机器上通过telnettesting了这个,没有问题
telnet <local-ip> 5672
docker集装箱内
-
能ping通local-ip和curl rabbitmq admin api
curl -i -u username:password http://local-ip:15672/api/vhosts
返回成功[{ “名称”: “/”, “跟踪”:假}]
-
当我尝试从容器内部telnet时,我得到
“外部主机closures连接”
-
看着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
最好的祝愿
- 什么添加到我的SBT支持非播放项目的Docker镜像创build?
- 使用“etcdctl成员添加”时,CoreOS成员节点不会启动
- 设置Docket在CoreOS上用etcd2使用Flannelnetworking
- docker中的mqtt服务器 – 一种从DockerCompose.yaml运行<mosquitto_passwd -U>的方法
- 如何在Google Container Engine(GKE)中代理泊坞窗registry?
- 用于确定性CI构build的便携式docker守护程序
- docker覆盖networking可以绑定到一个特定的父networking接口吗?
- 在使用sbt-native-packager构builddocker软件包时使用重复映射
- 运行Dockerized Django应用程序时,Gunicorn'Worker'引导失败