
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が自動割り当てされる |
これにより、コンテナ内のアプリケーションは curl や ping などを実行すると、eth0を通じてdocker0へ、さらにホストOSや外部ネットワークへと通信が流れます。
まとめ
DockerがLinuxで動作するとき、
- docker0 が「ホストとコンテナをつなぐ仮想ブリッジ」になり、
- コンテナのeth0 が「コンテナ内部のアプリケーションのネットワーク窓口」として機能します。
この2つの役割が組み合わさることで、コンテナはホストや他のコンテナと通信でき、さらに外部ネットワークともやり取りできるようになっているのです。
