ホスト・ネットワークの使用¶
コンテナに対して host ネットワーク・モードを使うと、コンテナのネットワーク・スタックは Docker ホストから隔離されません(コンテナはホスト側のネットワーク名前空間を共有します)。また、コンテナは自身に対して IP アドレスを割り当てません。たとえば、コンテナがポート 80 をバインドして host ネットワークを使うと、コンテナのアプリケーションはホスト IP アドレス上のポート 80 で利用可能です。
注釈
host モードを使うネットワーク機能では、コンテナ自身に対する IP アドレスを持ちません。また、ポートの割当は無効となり、 p 、 --publish 、 -P 、 --publish-all オプションは無視され、代わりに次のようなエラーが出ます。
WARNING: Published ports are discarded when using host network mode
ホスト・モードのネットワーク機能は性能の最適化に役立ちます。また、コンテナが広範囲のポートを扱う状況でも役立つのは、ネットワークアドレス変換(NAT)を必要とせず、また、各ポートに対するユーザランド・プロキシを作成する必要がないからです。
ホスト・ネットワーク機能ドライバが動作するのは Linux ホスト上のみです。そして、 Docker Desktop for Mac や Docker Desktop for Windows や、 Docker EE for Windows Server ではサポートしていません。
また、swarm サービスでも docker service create コマンドで --network host を渡すことで、 host ネットワークが利用可能です。この場合、管理トラフィック(swarm とサービスの管理に関連するトラフィック)はオーバレイ・ネットワーク上を渡りますが、個々のサービス・コンテナがデータの送信には、各 Docker デーモンのホスト上のネットワークとポートを使用します。swarm サービス上での作成では、追加の制限があります。たとえば、サービス・コンテナがポート 80 をバインドしても、対象となる swarm ノード上で実行しているコンテナのサービスのみが対象です。
次のステップ¶
ホスト・ネットワーク機能のチュートリアル に進む
コンテナ視点からのネットワーク機能 について学ぶ
ブリッジ・ネットワーク について学ぶ
オーバレイ・ネットワーク について学ぶ
Macvlan ネットワーク について学ぶ
参考
- Use host networking