Docker超入門:Dockerのデフォルト・ネットワーク解説 ― bridge・host・none の違い

 Dockerをインストールした直後、特に何も設定していなくても「デフォルトのネットワーク」がすでに用意されています。これは、コンテナが通信するための基本的な土台のようなもので、それぞれユースケースに合わせたネットワークモードが存在しています。

デフォルト・ネットワークの種類を整理

Dockerには最初から bridge, host, none の3つが用意されています。それぞれの特徴を表にまとめるとこんな感じです。

ネットワークドライバ説明
nonenullネットワークアクセスなし。完全に隔離されたいときに使う。
hosthostコンテナがホストOSのネットワークを直接共有。ホストのIPをそのまま利用できる。
bridgebridgeデフォルトのネットワーク。NATを使って外部と通信できる。特に指定しないとここに接続される。

それぞれのネットワークの動き方

  • bridgeネットワーク
     一番よく使うネットワークモードです。コンテナは docker0 という仮想ブリッジを通して通信し、NAT(IPマスカレード)経由で外部とやり取りします。外部から直接コンテナにアクセスするわけではないので、安全性が高めです。
  • hostネットワーク
     コンテナとホストOSがまるで一体化したように動きます。同じネットワークスタックを共有するので、ホストのIPをそのまま使えます。ただし、セキュリティ的には制限が弱くなるので、慎重に使うべきモードです。
  • noneネットワーク
     完全にネットワークから切り離された孤立状態。ネットワークアクセス不要なバッチ処理や検証用途に向いています。

コマンドでネットワークを確認してみよう

Dockerのデフォルトネットワークを確認するには、 docker network ls コマンドを使います。

docker network ls [OPTIONS]

このコマンドを実行すると、ネットワークのIDや名前、ドライバ、スコープが表示されます。

出力例

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

オプションも知っておくと便利

オプション説明
--filter , -f条件を指定してフィルタリング。例: -f driver=bridge
--formatGoテンプレートで出力を整形
--quiet , -qネットワークIDのみを表示

普段はシンプルに docker network ls でOKですが、大規模環境ではフィルタや整形が役立ちます。

まとめ

  • Dockerには最初から bridge / host / none の3つのネットワークが用意されている
  • 何も指定しないと bridge がデフォルトで利用される
  • host はホストのネットワークと直結するので高速だが注意が必要
  • none は完全に隔離してネットワーク不要な用途に向く
  • docker network ls コマンドで簡単に一覧を確認できる

 デフォルトのネットワークを正しく理解しておくと、コンテナをどう配置するか、セキュリティをどう確保するかがすごくイメージしやすくなりますよ!