Docker超入門:ホストと同じIPを共有!Docker hostネットワークの仕組みと注意点

 Dockerのネットワークと聞くと、まずは「bridge」を思い浮かべる人が多いと思いますが、実は hostネットワーク という特別なモードも用意されています。これは一言でいうと「コンテナがホストと同じIPアドレスを共有するネットワークモード」です。まるでホストの一部としてコンテナが動いているような感覚になるんです。

hostネットワークの特徴

項目説明
ネットワークドライバhost ドライバを利用する。
ネットワークインターフェースホストと同じものを使用
IPアドレスホストと同じアドレスを共有
通信速度仮想化レイヤーを介さないので非常に高速
分離性コンテナ間のネットワーク分離ができない。
注意点ポート競合やセキュリティリスクがある。

どうやって使うの?

コンテナを起動するときに、ネットワークオプションとして --network host を指定します。

docker run --network host <イメージ名>

 これだけで、そのコンテナはホストと同じIPを共有し、ホストのネットワークに直接アクセスできるようになります。

コマンドとオプションの解説

コマンド / オプション説明
docker runコンテナを起動するコマンド
--network hostコンテナをホストのネットワークスタックに直接接続する。
<イメージ名>起動するDockerイメージの指定

例えば、Nginxをホストネットワークで動かすならこんな感じ。

docker run --network host -d nginx

 この場合、ホストのポート80に直接Nginxが立ち上がるので、ブラウザからアクセスするとそのまま表示されます。

利点と制限を整理してみよう

分類内容
利点- 高速なネットワーク通信(仮想化のオーバーヘッドがない)
- ネットワーク設定がシンプルで楽ちん
制限- コンテナ間の分離が効かない
- ホストと同じIPを使うため、ポート競合が発生しやすい
- セキュリティ的にリスクがある(ホストと強く結びつくため)

図でイメージしよう

まとめ

 hostネットワークは、コンテナをホストと同じIPで動かすことができる便利な仕組みです。高速でシンプルですが、ネットワーク分離が効かないためセキュリティリスクやポート競合の問題があります。なので「どうしても高速通信が必要」「ホストと同じIPで公開したい」といったケースでのみ使うのがオススメです。