Docker のネットワーク状態を調べる (original) (raw)

docker networkというコマンドがあり色々見れるみたいです

$ docker network --help

Usage: docker network COMMAND

Manage networks

Commands: connect Connect a container to a network create Create a network disconnect Disconnect a container from a network inspect Display detailed information on one or more networks ls List networks prune Remove all unused networks rm Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

docker network ls

$ docker network ls NETWORK ID NAME DRIVER SCOPE abeed581a6dc bridge bridge local a53060f39b69 host host local 555a7ecb66ff mysql_default bridge local e09306dcac9b none null local f3be66c87503 plantuml_default bridge local

今あるネットワーク一覧が見れるようです。これは1つ勉強になった!

docker network inspect {NAME}

$ docker network inspect mysql_default | jq '.[] | {Name, Containers: (.Containers | map_values({Name, IPv4Address}) | to_entries | map(.value))}' { "Name": "mysql_default", "Containers": [ { "Name": "mysql", "IPv4Address": "172.19.0.2/16" }, { "Name": "app", "IPv4Address": "172.19.0.3/16" } ] }

必要な情報だけ取り出しましたが、mysql_default ネットワークに、2つのコンテナが所属していることがわかります。
これにより、app コンテナから mysql コンテナが見えていた ということになります。

なるほどーー。同一ネットワーク内にコンテナが2つ所属しているというのはこういう意味だったのか!これなら app コンテナから MySQL に接続できるのも納得です。

まとめ

コンテナ間通信について理解が深まった気がします。