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

Docker超入門:Dockerコンテナのネットワークを理解する①(bridge・host・noneの違いと基本操作)


🌐 Dockerコンテナのネットワークを理解する①(bridge・host・noneの違いと基本操作)

 Dockerを使っていると、「コンテナ同士がどうやって通信しているの?」「ネットワークって何?」という疑問を持つこと、ありますよね。
 Dockerのネットワークは、コンテナ間通信を支える“裏方”の仕組みです。ここでは、Dockerが提供する3つのデフォルトネットワーク(bridge、host、none)と、ネットワークの基本操作について、わかりやすく解説していきます!

🧩 Dockerのネットワークの概要

 Dockerをインストールすると、最初から 3つのネットワーク(bridge、host、none) が自動的に作成されます。
 基本的に、新しいコンテナを起動するときにネットワークを指定しなければ、自動的に bridgeネットワーク に接続されます。

 この仕組みにより、Dockerはコンテナ同士の通信をコントロールしたり、ネットワークを分離してセキュリティを保つことができます。

ネットワーク名説明
bridgeデフォルトのネットワーク。新しいコンテナが自動的に接続される。コンテナ同士はこのネットワーク内で通信可能。
hostホスト(物理マシン)と同じネットワークを共有。ネットワークの隔離は行われない。
noneネットワークに接続しない。ネットワークを完全に遮断した状態。

🔌 仮想ネットワークとは?

Dockerは、コンテナを接続するために仮想ネットワークを作っています。
 たとえば、WordPressコンテナがMariaDBコンテナに接続してデータを保存するとき、この仮想ネットワークが通信経路として働きます。

つまりDockerは、ネットワーク仮想化技術を使って、
「独立したネットワーク環境」をコンテナごとに用意しているんです。

bridgeネットワークの特徴

 bridgeネットワークは、コンテナ間通信に使用されるデフォルトのネットワークです。このネットワークでは、Dockerデーモンがホスト上に仮想ブリッジを作成し、コンテナがそのブリッジに接続されます。ブリッジは、ホストの物理ネットワークと接続され、コンテナ間通信を仲介します。

🧱 bridge・host・noneの違い

それぞれのネットワークモードの仕組みを、もう少し詳しく見てみましょう。

モード特徴通信範囲主な用途
bridge仮想ブリッジを介してコンテナ同士が通信できる。同じbridge内のコンテナ通常のコンテナ間通信に最適
hostホストのネットワークをそのまま使う。ホストと同じ高速な通信が必要な場合(例:ゲームサーバーなど)
noneネットワークに接続しない。なしテストや完全分離が必要な場合

イメージで表すとこんな感じです👇

作業前のクリーンアップ

 まず、Docker環境をクリーンにしておきます。作業前に一度だけ実行しておくと、古い検証イメージや停止済みコンテナが整理され、以降の挙動が分かりやすくなります。
コマンドを実行する前に実行中のコンテナがあれば、すべて停止させておきます。

実行コマンド

docker system prune -a --volumes

このコマンドは、未使用のコンテナ・イメージ・ボリュームを一括で削除します。

 残っているボリュームがあれば、コマンドやDocker Desktop のGUIで削除しておくとさらにスッキリします。

オプション説明
-aすべての未使用イメージを削除
--volumes未使用のボリュームも削除

💡 Docker DesktopのGUIを使えば、削除対象を視覚的に確認しながらクリーンアップすることもできます。
CLI操作が苦手な方にはこちらがおすすめです。

実行結果

PS C:\Users\joeac> docker system prune -a --volumes
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all anonymous volumes 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 network ls コマンドを使います。

コマンド書式

docker network ls [OPTIONS]

主なオプション一覧

オプション説明
--filter, -f名前やドライバなどでネットワークを絞り込む
--format出力フォーマットを指定(例:json、yaml)
--quiet, -qネットワークIDのみを表示

実行結果

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

結果から、bridge / host / none の3種類のネットワークが存在していることがわかります。
この出力を見て、「あ、Dockerがちゃんと初期ネットワークを用意してくれてるんだな」と理解できますね。

🧰 カスタムネットワークを作成する

必要に応じて、自分でネットワークを作ることもできます。
たとえば、WebアプリとDBを同じ専用ネットワークで通信させたいときなどに便利です。

コマンドはこれ👇

docker network create [OPTIONS] NETWORK

主なオプション

オプション説明
--driverネットワークドライバを指定(デフォルトはbridge)
--subnetサブネット(CIDR形式)を指定
--gatewayゲートウェイIPを指定

コマンド例

docker network create --driver bridge my_network

このコマンドで my_network というブリッジタイプのネットワークが作成されます。
このネットワークに接続されたコンテナ同士は、独自の仮想LANのように通信できます。

実行結果

PS C:\Users\joeac> docker network create --driver bridge my_network
94ffe3162f6ed1eaa33ffb0c98de70328e564f1341b267136b6391c4b5534b9d

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

🔒 ネットワーク管理とセキュリティ

ネットワークは、Docker環境のセキュリティにも大きく関係します。
 コンテナ間の通信を隔離したり、アクセス範囲を制御することで、安全なシステム構成を維持できます。

たとえば

  • 公開用Webサーバーと内部DBを別ネットワークに分ける。
  • 管理用コンテナには限定アクセスしか許可しない。
  • トラフィック監視を行って不審な通信を検知

こうしたネットワーク分離設計が、運用ではとても大事なんです。

🧹 不要なネットワークを整理する

いらないネットワークやキャッシュを削除してクリーンにしたい場合は、
docker system prune -a コマンドを使います。

コマンド書式

docker system prune -a

 このコマンドは、停止中のコンテナ・未使用のネットワーク・不要なイメージ・キャッシュを一括削除します。
実行すると確認メッセージが出るので、y を入力して進めましょう。

コマンド説明
docker system prune -aDocker環境を一括でクリーンアップする。

🔍 実際に確認してみよう!

不要なオブジェクトを削除したあと、再度ネットワーク一覧を確認します。

docker network ls

実行結果

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

 このように表示されれば、Dockerの基本ネットワーク3つが正常に存在していることが確認できます!

🎯 まとめ

Dockerのネットワークを理解するうえで、まず押さえるべきポイントはこの3つです👇

  1. bridge:デフォルトで使われるネットワーク(基本これ)
  2. host:ホストとネットワークを共有(隔離なし)
  3. none:完全にネットワーク遮断(孤立状態)

これらを理解すれば、コンテナ間通信のしくみがスッキリ見えてきます。
次のステップでは、コンテナを実際にこれらのネットワークに接続して動作を確認していきましょう!