導入
最後に、ネットワークの中身を覗く inspect、あとから繋ぎ替える connect、使い終わったら消す rm を押さえて、ネットワーク操作を1周にします。「どのコンテナが、どのネットワークにいるか」を読めることは、トラブル調査の基本です。
説明
docker network inspect <名前> で、そのネットワークにどのコンテナが繋がっているかを確認できます。
docker network create appnet
docker run -d --network appnet --name web nginx
docker network inspect appnet
"Containers" の欄に、繋がっているコンテナ(ここでは web)が並びます。「この DB ネットワークに、想定外のコンテナが繋がっていないか?」を確かめるのに使います。
起動済みのコンテナを、あとから別のネットワークにも繋ぐには docker network connect を使います。
docker run -d --name db postgres:16
docker network connect appnet db
docker network inspect appnet
これで、既定 bridge で起動した db を、あとから appnet にも参加させられました。逆に外すのは docker network disconnect です。
使い終わったネットワークは docker network rm <名前> で消します。ただし——コンテナが繋がっていると消せません(ボリュームと同じ安全装置)。また、bridge・host・none の3つは Docker 標準なので消せません。
flowchart LR
A["docker network rm appnet"] --> B{"繋がっている<br/>コンテナがある?"}
B -->|"ある"| C["❌ has active endpoints<br/>先にコンテナを消す/外す"]
B -->|"ない"| D["✅ 削除"]
未使用のネットワークをまとめて掃除するには docker network prune です。ボリューム(第6章)と同じく、「作る→使う→片付ける」までが1周です。
やってみよう
docker network create appnet→docker run -d --network appnet --name web nginx→docker network inspect appnetで、webが繋がっていることを確認しましょう。docker run -d --name db postgres:16(既定bridge)をdocker network connect appnet dbで appnet に参加させ、inspectで2つになることを見てください。- 繋がったまま
docker network rm appnetを打つと断られること、docker network pruneで未使用が掃除できることも試しましょう。