Docker ブリッジングモードはどのように機能しますか?
Dockerブリッジモードの実現原理は、ホスト上のNICに接続した仮想ブリッジ(bridge)デバイスを作成し、Dockerコンテナをその仮想ブリッジに接続することです。
具体的には次の手順に従います。
- Dockerデーモンが起動すると、docker0と呼ばれる仮想ネットワークブリッジデバイスが自動的に作成されます。
- Dockerデーモンは作成されるコンテナごとにユニークなIPアドレスを割り当て、コンテナのネットワークインターフェイス(vethペア)をdocker0ブリッジに接続します。
- Dockerはコンテナーが起動するとveth pairという仮想イーサネットインターフェイスを作成し、片方のエンドポイントがコンテナー、もう片方のエンドポイントがdocker0ブリッジに接続されます。
- Dockerは、コンテナーにIPアドレスを割り当て、そのIPアドレスとそのコンテナーの仮想イーサネットインターフェイスと関連付けます。
- Dockerはさらに、コンテナのIPアドレスとホストのdocker0ブリッジとの間でNAT変換を行うために、iptablesのルールをホスト上に作成します。これにより、コンテナが外部ネットワークと通信できるようになります。
これにより、Docker のブリッジモードではコンテナと外部ネットワークの通信が実現するとともに、コンテナ間の通信も実現されるようになります。コンテナは docker0 ブリッジを介してホストマシンやほかのコンテナと通信でき、また、ホストマシンやほかのコンテナも docker0 ブリッジを介してコンテナと通信できます。