web-dev-qa-db-ja.com

DockerコンテナからローカルホストへのRabbitmq接続が拒否されました

ローカルホストで実行されているrabbitmqに接続しようとしているJavaプロセスを実行しているDockerコンテナがあります。

これまでに行った手順は次のとおりです。

私のローカルマシン(Dockerバージョン1.13.0-rc3を実行しているmacbook、ファイアウォールをオフにしてビルド4d92237)

  1. 私はrabbitmq_env.confファイルを更新してRABBITMQ_NODE_IP_ADDRESSを削除したので、ローカルホスト経由で接続する必要がなく、管理者のrabbitmqユーザーがいます。 (ゲストユーザーでは試していない)
  2. ローカルマシンでtelnet経由でこれをテストしましたが、問題はありませんtelnet <local-ip> 5672

Dockerコンテナの内部

  1. local-ipにpingを実行し、rabbitmq adminapiをカールさせることができますcurl -i -u username:password http://local-ip:15672/api/vhosts正常に戻る

    [{"name": "/"、 "tracing":false}]

  2. コンテナ内からtelnetしようとすると、

    "接続は外部ホストによって閉じられました"

  3. rabbitmq.logsを見る

    =エラーレポート==== AMQP接続を閉じる<0.30526.1>(local-ip:53349-> local-ip:5672):{handshake_timeout、handshake}

私のJavaスタックトレースが役立つ場合

原因:Java.net.ConnectException:Java.net.PlainSocketImpl.socketConnect(Native Method)at> Java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.Java:350)at> Java.netで接続が拒否されました(接続> refused)。 AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl。> Java:206)at> Java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.Java:188)at Java.net.SocksSocketImpl.connect(SocksSocketImpl.Java:392)at Java.net.Socket.connect (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": "bridge" 、 "EnableIPv6":false、 "IPAM":{"Driver": "default"、 "Options":null、 "Config":[{"Subnet": "172.17.0.0/16"、 "Gateway": "172.17 .0.1 "}]}、"内部 ":false、"アタッチ可能 ":false、"コンテナ ":{" 9722a49c4e99ca5a7fabe56eb9e1c71b117a1e661e6c3e078d9fb54d7d276c6c ":{"名前 ":"テスト "、"エンドポイントID ":{"名前 ":"テスト "、"エンドポイントID ":{"名前 ":"テスト "、"エンドポイントID " 02:42:ac:11:00:02 "、" IPv4Address ":" 172.17.0.2/16 "、" IPv6Address ":" "}}、"オプション ":{" 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 "}、"ラベル ":{}}]

何が足りないのですか?

8
CandiedCode

私にとってこれはうまくいきます!

イメージをインストールしましたdocker pullrabbitmq: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でホストを参照してください

docker-machine ip

私の場合は戻る:

192.168.99.100

管理http://192.168.99.100:15672に移動

Spring Bootの場合、これを構成するか、別の接続に適しています

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

ご多幸を祈る

2
Harold Castillo

再起動後、すべてが機能していました。 Rabbitが.configの変更を尊重して使用していたとは思わない

0
CandiedCode