Dockerコンテナを動かしているLinuxマシン(ホスト)のネットワークデバイスを確認する。なお、一般に、「ある仮想化・コンテナ化された環境を提供する側のマシン」をhost、その上で動く側をguestやcontainerという。
ip address
Dockerをインストールしただけの段階では3つのデバイスが表示される。
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3:mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:96:36:d7 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic enp0s3
valid_lft 86338sec preferred_lft 86338sec
inet6 fe80::5054:ff:fe96:36d7/64 scope link
valid_lft forever preferred_lft forever
3: docker0:mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:d1:7e:0e:b0 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
整理すると、
| 名称 | 種類 | 役割 | IPアドレス |
|---|---|---|---|
| lo | ループバック | ホスト自身との通信 | 127.0.0.1/8 |
| enp0s3 | Ethernet NIC | ホストの外部ネットワークへの接続 | 10.0.2.15/24 |
| docker0 | Linuxブリッジ | Dockerのデフォルトbridgeネットワーク | 172.17.0.1/16 |
続いて、ルーティングテーブルを確認する。
ip route
宛先ごとに、どのインターフェースから、どこを経由して通信するかが表示される。
default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
10.0.2.2 dev enp0s3 proto dhcp scope link src 10.0.2.15 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
整理すると、
| ip route | 対応するインターフェース | 対応するIP | 意味 |
|---|---|---|---|
| default via 10.0.2.2 dev enp0s3 | enp0s3 | 10.0.2.15 | 外部ネットワークへの通信は10.0.2.2を経由してenp0s3から送る |
| 10.0.2.0/24 dev enp0s3 | enp0s3 | 10.0.2.15 | 10.0.2.0/24内の機器とはenp0s3から直接通信する |
| 10.0.2.2 dev enp0s3 | enp0s3 | 10.0.2.15 | 10.0.2.2(デフォルトゲートウェイ)はenp0s3と同じネットワーク上にあり、enp0s3から直接通信する |
| 172.17.0.0/16 dev docker0 | docker0 | 172.17.0.1 | 172.17.0.0/16のDockerネットワークへdocker0から送る |
次に、bridgeネットワークの中身を確認する。
docker network inspect bridge
出力は、
[
{
"Name": "bridge",
"Id": "424cbf92006db7785db9a63a637579ca082d2d65f461d492efb157b94ba7a763",
"Created": "2026-09-26T21:28:24.827757976+09:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv4": true,
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {},
"Containers": {}
}
]
ip routeとこのDockerネットワーク情報を合わせると、bridge、docker0、172.17.0.0/16、172.17.0.1の関係が明確になる。
| 項目 | Docker情報 | ip route / ip address | 意味 |
|---|---|---|---|
| Dockerネットワーク名 | bridge | ― | Dockerが標準で作成するネットワーク |
| Driver | bridge | ― | Linux bridgeを利用するネットワーク |
| Linux bridge名 | docker0 | dev docker0 | Dockerネットワークを実装するLinux bridge |
| Subnet | 172.17.0.0/16 | 172.17.0.0/16 dev docker0 | Dockerコンテナが属するネットワーク |
| Gateway | 172.17.0.1 | src 172.17.0.1 | docker0に設定されたホスト側のIP |
| IPv4 | true | 172.17.0.1/16 | IPv4を使用 |
| IPv6 | false | ― | このDockerネットワークではIPv6を使用しない |
| MTU | 1500 | docker0 mtu 1500 | Ethernetフレームの最大サイズ |
| IP masquerade | true | ― | コンテナから外部ネットワークへ出る際にNATを利用する設定 |
| Containers | {} | docker0 ... linkdown | 現在、このネットワークに接続されたコンテナがない |
特に重要なのは、DockerのbridgeとLinuxのdocker0は別の名前を持つものだが、この設定では対応しているという点である。
| Dockerの概念 | Linuxの実体 |
|---|---|
| bridge | docker0 |
| 172.17.0.0/16 | docker0に接続されたネットワーク |
| 172.17.0.1 | docker0のIP(DockerがGatewayとして使用) |
Mathematics is the language with which God has written the universe.