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 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。