2017-06-28 6 views
0

私はDockerコンテナを使用するプロジェクトに取り組んでいます。 Dockerは、Windows 10ホストマシンにインストールされます。このプロジェクトの目的は、ホストで受信したデータパケットをドッカーコンテナに転送して、コンテナ機能がそれらのデータパケットを利用し、それらを他のリンクされたコンテナに転送することです。ホストコンピュータからDockerコンテナにデータを転送するにはどうすればいいですか?

例えば、任意の機能を実行する2つのコンテナ(コンテナ1とコンテナ2)があるとします。以下を達成しなければならない。------>今のようにパケット転送(コンテナ機能がそれらに仕事の後)

を表し、パケットがホストでのWiresharkを使用

Host(Windows 10)----->Container 1------->Container 2------->Host 

受信されますこれは単にパケットを受信し、パケットの詳細を表示します。これらの受信パケットは、ホストからDockerコンテナに転送され、あるコンテナから他のコンテナにどのように転送されますか? Scapy(ホストからコンテナ)を使用して実行できますか?コンテナネットワークを使って異なるコンテナをリンクすることはできますが、データパケットをそれらの間で転送することはできますか?

また、任意のコンテキストでホストや内部でコンテナ内でPythonやJavaソケットプログラミングを使用できますか?この目的のためにlibpcapなどのライブラリを使用できますか?

答えて

0

ホストブリッジのコンテナがホストコンピュータのネットワークに表示されるように、ネットワークブリッジを作成する必要があるようです。

+0

あなたは、このようなこれを実現できる方法として、より具体的だろうか? –

0

ドッカーを実行しているときに-p引き数を使用できます。例:

docker run -p 127.0.0.1:80:8080 ubuntu 

詳細: https://docs.docker.com/engine/userguide/networking/default_network/binding/

+0

これは、コンテナのポート8080をlocalhostのポート80にマップするだけです。私が尋ねたのは、パケットをホストからコンテナに転送する方法でした。 –

+0

私が知る限り、コンテナとホストの両方が同じポートであれば、両方がパケットを受信します。処理後に要求を転送する場合は、コンテナ上の別のポートを使用して、パケットを処理した後にホストからlocalhost:を呼び出します。 – Him

+0

私はドッカーとネットワーキングには新しく、あなたが意味することを正確には追いついていません。どのようにこれを達成することができるかの例を説明できますか?ホストでも私は物理マシンを意味し、ドッカーが稼働している仮想マシンではありません。 –

0

あなたがコンテナを実行すると、それはデフォルトでbridgeネットワークを使用します。

コンテナでホストインターフェイスを使用する場合は、ネットワークhostを使用してコンテナを開始できます。

docker run network=host ... 

https://docs.docker.com/engine/userguide/networking/

+0

)。しかし、ホストコンピュータがキャプチャしたデータパケットはどのようにインターネット/他のネットワークはコンテナに転送できますか? –

+0

'network = host'を使うと、コンテナはあなたのホストネットワークインターフェースを使います。そして、あなたはコンテナ内から直接パケットを取り込むことができます。 Wiresharkはパケットを転送することはできませんが、すべてのトラフィックをファイルに記録し、そのファイルをコンテナにマウントすることはできます。パケットをコンテナに転送する場合は、ブリッジネットワークを使用し、tcpdumpやnetcatのようなものを使用します。 – theRemix

関連する問題