docker network の使い方

ネットワークを管理する

書き方

docker network create 名前
docker network ls
docker network inspect 名前
docker network connect 名前 コンテナ
docker network rm 名前

同じユーザー定義ネットワークにつないだコンテナは、コンテナ名で互いを呼べます(既定の bridge では名前で呼べない)。

よく使うオプション

オプション意味
create 名前ネットワークを作る(既定は bridge。--subnet で範囲も決められる)
ls一覧を出す
inspect 名前つながっているコンテナと IP アドレスを出す
connect 名前 コンテナ動いているコンテナを、ほかのネットワークにもつなぐ
disconnect 名前 コンテナネットワークから外す
rm 名前 / prune消す/使っていないものをまとめて消す

例

$ docker network create appnet

appnet という自分用のネットワークを作ります。ここにつないだコンテナどうしは、コンテナの名前で呼び合えます。

$ docker run -d --name db --network appnet redis

redis を appnet につないで動かします。同じネットワークのコンテナからは db という名前で届きます。

$ docker run --rm --network appnet alpine ping -c 1 dbPING db (172.18.0.2): 56 data bytes
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.112 ms

同じネットワークのコンテナから、名前で届くかを確かめます。

$ docker network lsNETWORK ID     NAME      DRIVER    SCOPE
1a2b3c4d5e6f   appnet    bridge    local
7f8e9d0c1b2a   bridge    bridge    local
3c4d5e6f7a8b   host      host      local
9a0b1c2d3e4f   none      null      local

ネットワークの一覧を出します。bridge・host・none は最初からあるものです。

よくある間違い・注意

  • --network を付けないと既定の bridge につながり、コンテナの名前では呼べません(IP アドレスなら届きます)。
  • コンテナの中の localhost はそのコンテナ自身です。ほかのコンテナにつなぐときはコンテナ名(compose ならサービス名)を使います。

実際に打って練習する

Docker コースの Lv29「船と船をつなぐ」で覚えます(第4章 港湾(ネットワーク))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る