ホスト・ネットワークの使用

コンテナに対して 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 ノード上で実行しているコンテナのサービスのみが対象です。

次のステップ

参考

Use host networking

https://docs.docker.com/network/host/