このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Dockerで学ぶネットワークの種類と管理コマンドまとめ

Dockerで学ぶネットワークの種類と管理コマンドまとめ

 Dockerを使うとき、意外とつまづきやすいのが「ネットワーク」です。コンテナがどうやって通信しているのか、どんな種類のネットワークがあるのかを理解しておくと、トラブルシューティングもぐっと楽になります。ここではDockerネットワークの基本と、よく使う管理コマンドを一気にまとめていきましょう。

作業前のクリーンアップ

 学習や検証を始める前に、不要なコンテナやイメージが残っていると挙動がわかりにくいことがあります。そんなときは以下のコマンドで一気に整理するのが便利です。コマンドの前に実行中のコンテナがあれば、すべて停止させておきます。

docker system prune -a
  • 停止済みコンテナ、未使用のネットワーク、イメージなどを削除してくれます
  • 「Are you sure you want to continue? [y/N]」と聞かれるので「y」と答えればOK

ボリュームが残っているようであれば、ここで削除しておきましょう。

実行結果

PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N] y

これでスッキリした状態からネットワークの学習を始められます。

Dockerのネットワーク種類

 Dockerをインストールすると、すでに 3つのデフォルトネットワーク が作られています。これを確認するには次のコマンドを実行します。

docker network ls

実行結果

PS C:\Users\joeac> docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
97ffa7624a4c   bridge    bridge    local
edc5f4ea708e   host      host      local
0b1b4553af27   none      null      local

それぞれの意味は以下の通りです。

ネットワーク名機能使用例
noneネットワークなし(ループバックのみ)docker run --network=none busybox
hostホストと同じネットワーク空間を共有docker run --network=host nginx
bridge仮想ブリッジを経由してコンテナを接続docker run --network=bridge redis

none ネットワーク

ネットワークが必要ない場合に使います。
 例えば、以下のように busybox コンテナを none ネットワークで起動すると、ループバックしか持たない状態になります。

docker run -it --network none busybox

実行結果

PS C:\Users\joeac> docker run -it --network none busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
80bfbb8a41a2: Pull complete
Digest: sha256:d82f458899c9696cb26a7c02d5568f81c8c8223f8661bb2a7988b269c8b9051e
Status: Downloaded newer image for busybox:latest
/ # ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # exit
PS C:\Users\joeac>

コンテナ内で ifconfig を実行すると lo(ループバック)だけが確認できます。

host ネットワーク

ホストと同じネットワークスタックを共有する仕組みです。

  • コンテナがホストのIPアドレスをそのまま使います。
  • 高速ですが、コンテナの分離が弱まるので注意

bridge ネットワーク

デフォルトでコンテナがつながるネットワークです。

  • Dockerが自動で仮想ブリッジ docker0 を作成
  • コンテナには仮想IPが割り当てられ、NATを通して外部と通信

「特定のネットワークを指定しなかった場合はbridgeにつながる」というのもポイントです。

ネットワーク管理コマンド

Dockerのネットワークを管理するために、以下のコマンドが用意されています。

コマンド意味
docker network ls既存ネットワークを一覧表示
docker network inspectネットワークの詳細情報を表示
docker network create新しいネットワークを作成
docker network rmネットワークを削除
docker network connectコンテナを既存ネットワークに接続
docker network disconnectコンテナをネットワークから切断

コマンド使用例

ネットワーク一覧

docker network ls

現在利用可能なネットワークが確認できます。

実行結果

PS C:\Users\joeac> docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
97ffa7624a4c   bridge    bridge    local
edc5f4ea708e   host      host      local
0b1b4553af27   none      null      local

ネットワーク詳細

docker network inspect bridge

サブネットやゲートウェイの情報、接続されているコンテナなどがJSON形式で表示されます。

実行結果

PS C:\Users\joeac> docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "97ffa7624a4c273c74e0c8b27cf001703ed127f1ed6cbfd65fb545313a3a4004",
        "Created": "2025-10-02T09:41:06.886841383Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv4": true,
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
(省略)
]

新しいネットワークを作成

docker network create my_network

実行結果

PS C:\Users\joeac> docker network create my_network
fb5a2fc1171c065790d1e5ac258283066e7091bd7c6bfa05c86e5821443f5ece

PS C:\Users\joeac> docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
97ffa7624a4c   bridge       bridge    local
edc5f4ea708e   host         host      local
fb5a2fc1171c   my_network   bridge    local
0b1b4553af27   none         null      local

ネットワーク削除

docker network rm my_network

実行結果

PS C:\Users\joeac> docker network rm my_network
my_network

使わなくなったネットワークを消すと環境が整理されます。

コンテナをネットワークに接続

docker network connect my_network my_container

実行結果

 再度、「my_network」というネットワークを作成して、このネットワークに接続させる「my_container」コンテナを作成してから、コマンドを実行します。

PS C:\Users\joeac> docker network create my_network
9c781f5f5c1d2a1f23307d6489ecfac3200060f096a4f8d1974c92957304e47c

PS C:\Users\joeac> docker run -d -p 80:80 --name=my_container nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
4f4e50e20765: Pull complete
5f825f15e2e0: Pull complete
16d05858bb8d: Pull complete
375a694db734: Pull complete
5c32499ab806: Pull complete
08cfef42fd24: Pull complete
3cc5fdd1317a: Pull complete
Digest: sha256:8adbdcb969e2676478ee2c7ad333956f0c8e0e4c5a7463f4611d7a2e7a7ff5dc
Status: Downloaded newer image for nginx:latest
3895b33c09b58aca2b8ac5b09e737dcd25e1b216d6160963811bb85894bd206e

PS C:\Users\joeac> docker network connect my_network my_container

コンテナを「my_network」のネットワークに参加させます。

コンテナをネットワークから切断

docker network disconnect my_network my_container

実行結果

PS C:\Users\joeac> docker network disconnect my_network my_container

接続を解除すると、そのネットワークとの通信ができなくなります。

まとめ

  • Dockerには none / host / bridge の3つの基本ネットワークがある。
  • docker network ls で一覧、docker network inspect で詳細を確認できる。
  • docker network create で独自ネットワークを作れる。
  • connectdisconnect でコンテナを柔軟に接続・切断できる。
  • 使わなくなったネットワークは docker network rm で整理する。

これらを覚えておけば、Dockerネットワークを自在に操れるようになります!