ジャコ Lab

プログラミング関連のメモ帳的ブログです

Docker のネットワーク状態を調べる

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 に接続できるのも納得です。

まとめ

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