Dockerのネットワーク構成

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
enp0s3Ethernet NICホストの外部ネットワークへの接続10.0.2.15/24
docker0Linuxブリッジ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が標準で作成するネットワーク
Driverbridge―Linux bridgeを利用するネットワーク
Linux bridge名docker0dev docker0Dockerネットワークを実装するLinux bridge
Subnet172.17.0.0/16172.17.0.0/16 dev docker0Dockerコンテナが属するネットワーク
Gateway172.17.0.1src 172.17.0.1docker0に設定されたホスト側のIP
IPv4true172.17.0.1/16IPv4を使用
IPv6false―このDockerネットワークではIPv6を使用しない
MTU1500docker0 mtu 1500Ethernetフレームの最大サイズ
IP masqueradetrue―コンテナから外部ネットワークへ出る際にNATを利用する設定
Containers{}docker0 ... linkdown現在、このネットワークに接続されたコンテナがない

特に重要なのは、DockerのbridgeとLinuxのdocker0は別の名前を持つものだが、この設定では対応しているという点である。
Dockerの概念Linuxの実体
bridgedocker0
172.17.0.0/16docker0に接続されたネットワーク
172.17.0.1docker0のIP(DockerがGatewayとして使用)


@2026-09-27

Mathematics is the language with which God has written the universe.





















ELFプログラムヘッダーのデータ構造と型 kindのインストール Network Namespaceによる最小ネットワーク構成 固定式位置エンコーディング Model2Vec Virtualboxでavxを有効化