2016-12-11 132 views
1

我有一個docker容器正在運行一個java進程,我試圖連接到運行在本地主機上的rabbitmq。拒絕從Docker容器到本地主機的Rabbitmq連接

這裏是我到目前爲止已經完成的步驟:(MacBook上運行多克爾版本1.13.0-RC3,建立4d92237防火牆關閉)

  1. 我已經

    在我的本地機器更新我rabbitmq_env.conf文件以刪除RABBITMQ_NODE_IP_ADDRESS,所以我沒有綁定通過本地主機連接,我有一個管理rabbitmq用戶。 (不與來賓用戶嘗試)

  2. 我我的本地機器通過telnet測試這一點,並沒有問題telnet <local-ip> 5672

在我的搬運工容器

  • 能平本地IP和捲曲的RabbitMQ管理員API curl -i -u username:password http://local-ip:15672/api/vhosts回報成功地

    [{ 「Name」: 「/」, 「跟蹤」:假}]

  • 當我嘗試從容器內遠程登錄,我得到

    「連接被國外主機關閉」

  • 看rabbitmq.logs

    =錯誤報告==== 關閉AMQP連接< 0.30526.1>(local-ip:53349 - > local-ip:5672): {handshake_timeout,handshake}

  • 我的Java堆棧跟蹤櫃面有用

    造成的:java.net.ConnectException:拒絕連接(連接>拒絕) 在java.net.PlainSocketImpl.socketConnect(本機方法) 在> java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 在> java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl>的java:206) 在> java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 在java.net.SocksSocketImpl.connect(SocksSocketImpl.java:3 92) at> com.rabbitmq.client>(com.rabbitmq.client.impl.FrameHandlerFactory.create(FrameHandlerFactory.ja> va:32) >在java.net.Socket.connect(Socket.java:589) 。 impl.recovery.RecoveryAwareAMQConnectionFactory.newCon> nection(RecoveryAwareAMQConnectionFactory.java:35)

    docker network inspect bridge

    [ { 「名稱」: 「橋」, 「ID」: 「716f935f19a107225650a95d06eb83d4c973b7943b1924815034d469164affe5」, 「Created」:「201 6-12-11T15:34:41。950148125Z」, 「範圍」: 「本地」, 「驅動程序」: 「橋」, 「EnableIPv6」:假的, 「IPAM」:{ 「驅動程序」: 「默認」, 「選項」:空, 「配置」:[{ 「子網」: 「172.17.0.0/16」, 「網關」: 「172.17.0.1」 } ] }, 「內部」:假, 「可拆卸的」: 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」:「0.0.0.0」, 「com.docker.network.bridge.name」:「docker0」, 「com.docker .network.driver.mtu「:」1500「 }, 」Labels「:{} } ]

    我在想什麼?

    +0

    什麼是'本地ip'到底是什麼?你可以將'docker ps'的輸出粘貼到你的容器中運行,還可以'docker inspect'? – YoungSpice

    +0

    這是我的本地ip地址,它是192.168.1.XXX – CandiedCode

    +0

    docker ps 容器ID圖像命令創建狀態端口名稱 9722a49c4e99 e9096fc4f5ff「/ bin/sh」3小時前上載2小時5672/tcp,7888/tcp測試 – CandiedCode

    回答

    0

    重新啓動後,所有工作。我不認爲兔子使用尊重.config的變化

    0

    對我來說這工作正常!

    我已經安裝了圖像泊塢窗拉的RabbitMQ:3管理

    和運行

    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 
    

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

    看你的主機在搬運工

    docker-machine ip 
    

    回報在我的情況:

    192.168.99.100 
    

    Go to management http://192.168.99.100:15672

    對於春季啓動可以通過配置或做工不錯另一個連接

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

    相關問題