5.3 docker networkコマンド完全ガイド|create/ls/inspect/connect/disconnect の使い方

【第2章】イメージとコンテナの基本操作

docker networkコマンド完全ガイド|create/ls/inspect/connect/disconnect/rm/prune の使い方

5-1・5-2 でカスタムブリッジと名前解決の考え方を押さえました。今回はネットワーク操作コマンドの全カタログ。これらを使いこなせば、ネットワーク周りの「困った」の大半は自力で解決できます。

💡 この記事のゴール
docker network の7つのサブコマンドを網羅
inspect 出力の見方(サブネット・GW・コンテナ一覧)
③ サブネット・IP・MTU の手動指定
④ ラベル付けと prune での掃除

目次

  1. 7つのサブコマンド一覧
  2. create の基本
  3. create の応用(サブネット・GW・MTU)
  4. ls の便利フィルタ
  5. inspect の読み方
  6. connect / disconnect
  7. rmprune
  8. ラベル付けで整理する
  9. まとめ

1. 7つのサブコマンド一覧

サブコマンド 役割 頻度
docker network create <名前> ネットワーク作成 ★★★
docker network ls 一覧 ★★★
docker network inspect <名前> 詳細情報 ★★★
docker network connect <net> <ctr> コンテナをネットワークに参加 ★★
docker network disconnect <net> <ctr> ネットワークから切断 ★★
docker network rm <名前> ネットワーク削除 ★★
docker network prune 使われていないネットワークを一括削除

2. create の基本

$ docker network create app-net
abc123def456...

# ドライバを明示(デフォルトは bridge)
$ docker network create --driver bridge app-net

--driver を省略すると bridge。5-5 で扱う hostoverlaymacvlan 等を使いたいときだけ指定します。


3. create の応用(サブネット・GW・MTU)

# サブネット・ゲートウェイ・MTU を明示指定
docker network create \
  --driver bridge \
  --subnet 172.28.0.0/16 \
  --gateway 172.28.0.1 \
  --opt com.docker.network.driver.mtu=1450 \
  my-net
オプション 意味 使う場面
--subnet IPアドレス範囲(CIDR) ホスト側のLANと衝突回避、IP固定運用
--gateway ゲートウェイIP 通常省略可、明示したいとき
--ip-range DHCP割当範囲の制限 一部IPを予約したいとき
--opt mtu= MTUサイズ VPN越し等で MTU 制限がある環境
--internal 外部通信を禁止 完全内部専用ネットワーク
⚠️ --subnet は業務ネットワークと衝突させない
Docker デフォルトの 172.17.0.0/16 等が社内LANと被ると、Dockerからの通信がおかしくなります。衝突するようなら /etc/docker/daemon.jsondefault-address-pools でデフォルト自体を変えるか、個別 --subnet 指定で避けます。

4. ls の便利フィルタ

# 全ネットワーク一覧
$ docker network ls
NETWORK ID     NAME       DRIVER    SCOPE
abc123...      app-net    bridge    local
def456...      bridge     bridge    local
ghi789...      host       host      local
jkl012...      none       null      local

# ドライバで絞り込み
$ docker network ls --filter driver=bridge

# 使われていないネットワークだけ表示
$ docker network ls --filter dangling=true

# ラベルで絞り込み(後述)
$ docker network ls --filter label=env=prod

5. inspect の読み方

$ docker network inspect app-net
[
    {
        "Name": "app-net",
        "Id": "abc123def456...",
        "Created": "2026-04-20T12:34:56Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Config": [{"Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1"}]
        },
        "Containers": {
            "xxx1": {"Name": "app", "IPv4Address": "172.18.0.2/16", ...},
            "xxx2": {"Name": "db",  "IPv4Address": "172.18.0.3/16", ...}
        },
        "Options": {},
        "Labels": {}
    }
]
フィールド 意味
IPAM.Config サブネット・ゲートウェイ(IP Address Management)
Containers このネットワークに参加中のコンテナ一覧+IP
Driver bridge / host / overlay / macvlan 等
Scope local(単一ホスト)/ swarm(クラスタ)

実用例:コンテナのIPだけ抜く

$ docker inspect -f '{{.NetworkSettings.Networks.app-net.IPAddress}}' app
172.18.0.2

6. connect / disconnect

既存コンテナをネットワークに参加させる

docker network connect app-net web
docker network connect --alias api app-net web     # エイリアス付き
docker network connect --ip 172.18.0.50 app-net web # IPを明示指定

切り離す

docker network disconnect app-net web

# 強制切断(動作中でも)
docker network disconnect -f app-net web
💡 実行中のコンテナで connect/disconnect できる
コンテナを停止・再起動せずに、ライブでネットワーク構成を変えられます。ブルーグリーン切替や、本番サーバで緊急的に通信を遮断したいときに有用。

7. rmprune

# 単一削除
$ docker network rm app-net

# 使われていないネットワーク全部削除
$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
old-net-1
old-net-2
⚠️ 参加コンテナがあると rm できない
Error: network app-net has active endpoints と出たら、先に関係するコンテナを docker rm するか、docker network disconnect -f で強制切断してから削除します。

docker network prunedefault の bridge/host/none は削除しません。ユーザー定義のネットワークのうち、現在どのコンテナからも使われていないものだけを対象にします。


8. ラベル付けで整理する

ネットワークが増えてきたらラベルで分類しておくと後で楽です。

# ラベル付きで作成
docker network create --label env=prod --label project=shop prod-shop-net

# ラベルで一覧フィルタ
docker network ls --filter label=env=prod
docker network ls --filter label=project=shop

# ラベルで一括削除(慎重に)
for id in $(docker network ls --filter label=env=dev -q); do
  docker network rm "$id"
done
💡 Docker Compose は自動でラベルを付ける
Compose が作るネットワークには com.docker.compose.network=<netname> 等のラベルが付きます。ラベルフィルタを使えば Compose 関連だけを絞って操作できます。

9. まとめ

やりたいこと コマンド
作成 docker network create [--subnet ...] [--driver ...] name
一覧 docker network ls [--filter ...]
詳細 docker network inspect name
参加 docker network connect [--alias] [--ip] net ctr
切断 docker network disconnect [-f] net ctr
削除 docker network rm name
一括掃除 docker network prune
✅ 次のステップ
5-4 ポートバインディング完全ガイドで、外部からコンテナへのアクセス制御を深掘り。-p-P・ホストIP指定・UDP・範囲指定・セキュリティの話まで一気にまとめます。

参考リンク


Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

タイトルとURLをコピーしました