2017-02-02 8 views
7

MacOSで実行しています。net.socket()を使用してnode.jsアプリケーションからCentOSの下にC++ソケットサーバーを含む同じホストで動作するDockerコンテナに接続しています。ドッカーのコマンドを実行している:Dockerへのソケット接続が最初に成功した後に失敗しました

docker run -it --rm -p 14000-14010:14000-14010 -v /Users/me/Development/spdz:/spdz spdz/spdzdev 

ドッキングウィンドウでC++サーバがない実行されているとき、私はノードに成功接続はソケットクローズメッセージによって後で3msのに続い参照してください。

コンテナの前にあるプロキシが要求を受け入れているように見えますが、Dockerに渡して拒否されます。しかし、これは接続が成功したと思う私のフロントエンドのアプリケーションで誤ったメッセージにつながります。

私は単純な接続が拒否されたことを確認したいと思います。これがどのように矯正され、より良く理解されるかについての示唆は有用であろう。

Dockerの外でコンポーネントを実行すると接続時に予期せぬ即時障害が発生するため、この動作がDockerによって導入されたと確信しています。また、エクスポートされたポートをlocalhostではなく外部のネットワークインターフェイスにマッピングしようとしましたが、同じ動作が見られます。

+1

どのようなプロキシを使用していますか?そのプロキシのログをいくつか提供できますか? – Shawyeok

+1

私はプロキシを実行していません、私はこの動作がDockerによって導入されたと思います。私の現在の理解は、Dockerがリクエストをコンテナに転送するブリッジネットワークを導入したことです。私はこの動作の原因となるドッカープロキシ(http://windsock.io/tag/docker-proxy/を参照)に出くわしました。 – Jonathan

+0

1.クライアントとサーバの両方で 'port 14000 or port 14001 or port .... 'のような' tcpdump'を使って監視してください。 2.サーバマシンのlisten状態を 'netstat'で確認してくださいOS) –

答えて

0

サーバーアプリケーションからエラーが発生していないかどうかを確認することをお勧めします。あなたは、ターミナルを開き、ホストコンピュータ(MacOSの)から14000

その後、 nc -l 14000 これは、ポートで待機TCPサーバーソケットを作成します。あなたのドッカーコンテナにソケットを開くためのnetcatコマンドラインを使用することができます

telnetで接続しようとしています telnet -e q localhost 14000

関連する問題