Docker超入門:DockerとLinuxネットワークの関係を理解する:docker0とeth0の役割

 DockerをLinuxにインストールすると、裏側で「ネットワークの仕組み」が自動的に準備されます。コンテナを起動したときにスムーズに通信できるのは、docker0コンテナのeth0 がそれぞれ役割を果たしているからです。ここでは、Dockerが作り出すネットワークの流れを整理しながら、docker0とeth0の役割をわかりやすく解説します。

DockerがインストールされたLinux環境

 LinuxにDockerを導入すると、バックグラウンドで Dockerデーモン(dockerd) が動作します。
このデーモンがコンテナの作成・実行・停止・削除といったライフサイクルを管理しており、その際にLinuxカーネルの仮想化機能(namespacesやcgroupsなど)を利用します。

docker0の役割

 Dockerは単に「コンテナを動かすだけ」ではなく、ネットワークの設定も自動で用意してくれるのが特徴です。

Dockerが起動すると、自動的に docker0 という名前の仮想ブリッジが作成されます。

 これは、ホストマシンの物理NICとコンテナを仲介する「ハブ」のような存在で、コンテナが外部や他のコンテナと通信できるようにするための仮想ネットワークです。

項目説明
名前docker0
種類仮想ブリッジ(ソフトウェア的なブリッジ)
役割コンテナの仮想インターフェースとホストNICをつなぐ
通信対象コンテナ同士、コンテナとホストOS、外部ネットワーク

 docker0に接続されたコンテナは、同じサブネット内でプライベートIPを持ち、直接通信することができます。外部に出ていく際は、ホストOSのNICを通じてNAT変換されます。

コンテナのeth0の役割

 各コンテナが起動されると、その中に自動的に eth0 という仮想ネットワークインターフェースが割り当てられます。

 このeth0は、ホストOSが作成した仮想NIC(vethペアの一方)とdocker0に接続され、コンテナ内のアプリケーションが通信を行うための窓口になります。

項目説明
名前eth0(コンテナ内)
種類仮想NIC(vethペアの片側)
役割コンテナ内アプリケーションの通信インターフェース
IPアドレスDockerネットワーク内のプライベートIPが自動割り当てされる

 これにより、コンテナ内のアプリケーションは curlping などを実行すると、eth0を通じてdocker0へ、さらにホストOSや外部ネットワークへと通信が流れます。

まとめ

DockerがLinuxで動作するとき、

  • docker0 が「ホストとコンテナをつなぐ仮想ブリッジ」になり、
  • コンテナのeth0 が「コンテナ内部のアプリケーションのネットワーク窓口」として機能します。

 この2つの役割が組み合わさることで、コンテナはホストや他のコンテナと通信でき、さらに外部ネットワークともやり取りできるようになっているのです。