2016-10-12 21 views
0

ブリッジドドッカー0インターフェイスがどのように機能するのかを理解しようとしています。docker0ブリッジはホスト内部でどのように内部的に動作しますか?

  • ドッカーデーモンが起動すると、ブリッジドデバイスdocker0が作成されます。
  • コンテナが起動すると、それはインターフェースVthnとを作成し、

は、我々はそうapprently私のホストのeth0

[[email protected] app]# ping 130.49.40.130 
PING 130.49.40.130 (130.49.40.130) 56(84) bytes of data. 
64 bytes from 130.49.40.130: icmp_seq=1 ttl=52 time=11.9 ms 

容器の内部から外部ホストにpingコマンドを発行すると言うdocker0に結合しますこのピングバックを受け取っていますが、このパッケージはどのようにコンテナに転送されますか?

  • eth0とdocker0はブリッジされません。どのようにdocker0がeth0からパケットを取得するのですか。
  • docker0がパケットを取得しても、内部でvth0にパケットを送信する方法は?それは内部的にいくつかのマップを維持するので、異なるMACアドレス間でパケットを変換できますか?
  • ここでiptablesはどのように関連していますか?

乾杯。

+0

http://woosley.github.io/2017/07/25/understand-docker-iptables-rules.html –

答えて

1

Dockerはここで特に魔法をかけているわけではありません。あなたの質問は本当にドッカーに依存していません。

docker0は単なるネットワークブリッジです。このブリッジが作成されると(ドッカーサービスの開始時に)、新しいマシン(この場合はVM /ドッカー形式)がネットワークに参加したとみなすことができます。

ホストからドッキングコンテナにpingを実行する場合、またはその逆の場合、基本的にネットワーク内の別のマシンにpingを実行しています。

ドッカーに関して、あなたが基本的にあなた自身にpingをしている新しいネットワークインターフェイス(私はあなたがpingをに行っているので疑いがない)を作成していない限り。

あなたは、容器を実行する場合:

docker run -i -t --rm -p 10.0.0.99:80:8080 ubuntu:16.04

あなたはポート8080上のドッキングウィンドウのコンテナに10.0.0.99:80に行くすべてのパケットを転送するためのiptablesでNATルールを作成するためにドッキングウィンドウを語っています。

として、あなたは、コンテナを実行すると:あなたがホストするために行くすべてのパケットが、またあなたのドッキングウィンドウのコンテナに到着するように、ドッキングウィンドウコンテナはホストと同じネットワークスタックを持つべきであると言っている次に

docker run -i -t --rm -p --net=host ubuntu:16.04

docker0橋を介して。

+0

ええ、私の質問は本当にドッカーではありません。ドッカーのコンテナが外部ホストにpingを実行しているときに何が起きたかを調べようとしています。コンテナの横で、パケットが手の届くところに戻って戻ってきたら、それがホストのインターフェースを通り、ドッカーのコンテナの中にどのように変換されるのでしょうか? –

関連する問題