説明
network_mode: "host"を使うと、コンテナーは独立したネットワーク空間ではなく、ホストのネットワークをそのまま使います。ホストネットワークに対応する実行環境での動作であり、実際の外部アクセスは待ち受けアドレス、ファイアウォール、認証の設定にも依存します。
この設定は、ポートの競合、公開範囲の拡大、ネットワーク分離の低下につながる可能性があります。特別な要件がなければ、一般的なアプリケーションコンテナーには独立したネットワークを使ってください。
想定される影響
- コンテナーとホストが同じネットワーク名前空間を共有します。
- 公開ポートやポート競合の管理が複雑になる可能性があります。
- ネットワークの分離が弱まり、攻撃対象が増えるおそれがあります。
対処方法
network_mode: "host"を削除し、既定のブリッジネットワークか専用ネットワークを使ってください。- 外部アクセスが必要な場合は、必要なホストアドレスとポートだけをバインドしてください。Composeの内部通信だけであれば、ポートの公開は不要です。
- ホストネットワークが必要な例外のワークロードは、別の構成として管理してください。
例
変更前
yaml
services:
mongo:
image: mongo:latest
network_mode: "host"
変更後
yaml
services:
mongo:
image: mongo:latest
ports:
- "27017:27017"
説明:
- 変更前: ホストのネットワークをそのまま共有し、コンテナーのネットワーク分離とポートの制御が弱まります。
- 変更後: 独立したネットワークを維持し、ポートを公開します。
27017:27017は既定ですべてのホストインターフェースにバインドされるため、必要な待ち受けアドレスとファイアウォールルールを設定し、MongoDBの認証も別途構成してください。