
【Docker入門】Dockerのネットワークの構成
Dockerのネットワーク構成について、前提知識としてNICとブリッジ接続についても触れながら解説します。

NIC (Network Interface Controller)
NICは、ネットワークインターフェースコントローラーの略で、コンピューターがネットワークに接続するためのハードウェアデバイスです。Linuxシステムでは、NICは通常、eth0
、eth1
、wlan0
などの名前で識別されます。
ブリッジ接続
ブリッジ接続は、異なるネットワークセグメントを接続するための方法です。これにより、複数のネットワークが単一のネットワークに見えるようになります。ブリッジ接続には、ソフトウェア的な方法とハードウェア的な方法があります。
ソフトウェア的なブリッジ
ソフトウェア的なブリッジは、通常、オペレーティングシステムのカーネルレベルで実装されます。これは、Linuxのbridge
モジュールやWindowsの仮想ブリッジ、またはソフトウェアで提供される他のブリッジを使用して実現されます。これにより、異なるネットワークインターフェースを持つデバイスが同じネットワークに接続されます。
ハードウェア的なブリッジ
ハードウェア的なブリッジは、物理的なハードウェアデバイスで構成され、ネットワークトラフィックを制御します。これは、イーサネットスイッチやルーターを使用して実現されます。
ブリッジネットワークモード
Dockerでは、コンテナがネットワークとどのように接続されるかを制御するために、いくつかのネットワークモードやドライバが提供されています。一般的なネットワークモードには、ブリッジモード、ホストモード、macvlanモード、および none モードなどがあります。
これらのモードは、コンテナのネットワーク接続を制御し、コンテナがホストシステムや他のコンテナとどのように通信するかを決定します。
Dockerのブリッジネットワークモードについて説明します。
Dockerのブリッジネットワークモードは、デフォルトのネットワークモードであり、コンテナがネットワーク上で独立した仮想ネットワークインターフェースを持つことを可能にします。
以下はブリッジネットワークモードの構成要素です。
Docker0:ブリッジ
Dockerデーモンが起動すると、docker0
という名前のブリッジが作成されます。このブリッジは、ホストマシン上のすべてのブリッジ接続されたインターフェース(例:eth0)とコンテナの仮想イーサネットインターフェースを接続します。
コンテナのeth0:仮想インターフェース
Dockerがコンテナを作成すると、各コンテナには独自のネットワークインターフェースが割り当てられます。このインターフェースは通常、eth0
と呼ばれます。これらのインターフェースは、Dockerデーモンが管理するブリッジに接続され、コンテナが他のコンテナやホストマシンと通信できるようにします。
- プライベートIPアドレス
各コンテナには、Dockerデーモンが管理する仮想ネットワーク内でプライベートIPアドレスが割り当てられます。このIPアドレスは、コンテナ内から他のコンテナやホストOSへの通信に使用されます。このIPアドレスは、ホストマシンのネットワークから直接アクセスできません。 - ホストOSによって作成された仮想NIC
Dockerは、ホストOS 上で実行され、コンテナを管理するために様々な技術を使用します。これには、仮想NIC(Network Interface Controller)デバイスも含まれます。各コンテナのeth0
は、この仮想NICデバイスに関連付けられ、コンテナがネットワーク上で通信できるようになります。
NAT(Network Address Translation)
コンテナの仮想インターフェースは、ホストのIPアドレス空間から分離されています。これにより、コンテナがホストのネットワークと通信できるようになりますが、外部からはコンテナに直接アクセスすることができません。ネットワークトラフィックは、ホストのIPアドレスを持つ docker0
ブリッジ経由でコンテナに転送されます。
ブリッジネットワーク
Dockerがデフォルトで提供するブリッジネットワークは、bridge0
という名前であり、コンテナが接続されます。これにより、複数のコンテナが同じネットワークに接続され、相互に通信できます。
ブリッジネットワークモードは、Docker上で複数のコンテナを実行し、それらがホストおよび他のコンテナと通信するための効果的な方法を提供します。これにより、疎結合性やスケーラビリティが向上し、アプリケーションの展開と管理が容易になります。