2017-12-18 7 views
0

私は2つのドッカーコンテナを同じネットワークに持っています。 私がすることで、ネットワークを作成しました:MAC内のドッカーネットワーク

docker network create my_network 

は、私が使用して、このネットワークにLandoopコンテナを実行しています:

docker run --rm -it -p 2181:2181 -p 3030:3030 -p 8081:8081 -p 8082:8082 
-p 9092:9092 --net=my_network --name localkafka landoop/fast-data-dev 

を私は使用して1つの以上の容器実行しています:

docker run -it --rm --net=my_network --name containerB 
containerName. 

私はcontainerBの中にログインし、pingを試みますlocalkafka 使用:

container ping -c 5 localkafka 

それは成功します。 しかし私がするとき

ping -c 5 localkafka:8081 
ping: unknown host 

私はここで何が欠けていますか?どんな助けもありがとうございます。

PS:私はMACを使用しており、別のコンテナBに1つのコンテナで公開されているポートを使用する必要があります。

+0

があなたの 'の/ etc/resolv.conf'の内側に見たことがありますか?また、--dns = 127.0.0.1を追加してみてください。 正しく覚えていれば、Dockerはカスタムネットワークが設定されているときに、異なるDNS(内部リゾルバ)を使用します。 –

答えて

2

あなたの問題は、あなたがpingを悪用していることです。

これを読む:https://technet.microsoft.com/en-us/library/cc732509(v=ws.10).aspx

短い答えを - ピングは、ICMPエコー要求を経由して動作します。ポートはTCPのようなトランスポート層プロトコルのコンセプトなので、ポートにpingを実行することはできません。したがって、localkafka:8080はhost:portのペアではなく、その名前のホストとして扱われます。

代わりにnmapを使用するか、pingのように動作するが、トランスポート層プロトコルで動作する第三者アプリケーションを探すことができます。

+0

したがって、ping -c 5 localkafkaが成功した場合。それはポートも利用可能であることを意味しますか?または、ポート9092と8082の可用性を検証する方法はありますか? –

+0

'telnet localkafka:8081' - すばやく汚い –

+0

私はbashを試しました:telnet:command not found –

0

Macをお使いの場合は、netcat(nc)がインストールされている可能性があります。 Netcatを使用すると、ポートが開いているかどうかをテストできます。

nc -zw2 localkafka 8081 &>/dev/null && echo open || echo closed 

-zオプションを指定すると、データを転送せずにnetcatが接続されます。 -wオプションは、接続が確立できない場合、2秒後にnetcatにタイムアウトを通知します。

のnetcatが利用できない場合、/dev/tcpは、ポートが開いているかどうかをテストするために直接使用することができます。

{ echo > /dev/tcp/localkafka/8081; } > /dev/null 2>&1 && echo open || echo closed 
+0

これはDockerコンテナの中にあり、netcatを持たないため、失敗しています。とにかくありがとう。私はこれを確認する方法を理解する必要があります。 –

+0

テストのためにコンテナにnetcatを追加する価値があります。 –

+0

そうしようとしています。ありがとう –

関連する問題