Windows コンテナー ネットワーク

適用対象: Windows Server 2022、Windows Server 2019、Windows Server 2016

重要

一般的な Docker ネットワーク コマンド、オプション、構文については、Docker Container Networking を参照してください。 サポートされていない機能とネットワーク オプションで説明されている場合を除き、すべての Docker ネットワーク コマンドは、Linux と同じ構文で Windows でサポートされます。 ただし、Windows と Linux のネットワーク スタックは異なります。そのため、一部の Linux ネットワーク コマンド (たとえば) ifconfigは Windows ではサポートされていません。

基本的なネットワーク アーキテクチャ

このトピックでは、Docker で Windows 上にホスト ネットワークを作成して管理する方法の概要を示します。 ネットワークに関して言えば、Windows コンテナーの機能は仮想マシンと似ています。 各コンテナーには、Hyper-V 仮想スイッチ (vSwitch) に接続されている仮想ネットワーク アダプター (vNIC) があります。 Windows では、Docker を使用して作成できる 5 つの異なるネットワーク ドライバーまたはモード (natoverlaytransparent、l2bridge、l2tunnel) がサポートされています。 物理ネットワークのインフラストラクチャと単一または複数のホストのネットワーク要件に応じて、ニーズに最適なネットワーク ドライバーを選択する必要があります。

Windows ネットワーク スタックを示す図

Docker エンジンを初めて実行すると、内部 vSwitch と という名前 WinNATの Windows コンポーネントを使用する既定の NAT ネットワーク 'nat' が作成されます。 PowerShell または Hyper-V マネージャーを使用して作成された既存の外部 vSwitch がホスト上にある場合は、 透過的 なネットワーク ドライバーを使用して Docker でも使用でき、コマンドの実行時に docker network ls 確認できます。

Docker network ls PowerShell コマンドを示します

  • 内部 vSwitch は、コンテナー ホスト上のネットワーク アダプターに直接接続されていない vSwitch です。
  • 外部 vSwitch は、コンテナー ホスト上のネットワーク アダプターに直接接続されている vSwitch です。

Get-VMSwitch PowerShell コマンドを示します

'nat' ネットワークとは、Windows で実行されているコンテナーの既定のネットワークです。 特定のネットワーク構成を実装するフラグや引数を指定せずに Windows で実行されているすべてのコンテナーは、既定の 'nat' ネットワークに接続され、'nat' ネットワークの内部プレフィックス IP 範囲から自動的に IP アドレスが割り当てられます。 'nat' 用に使用される既定の内部 IP プレフィックスは、172.16.0.0/16 です。

ホスト ネットワーク サービスによるコンテナーのネットワークの管理

ホスト ネットワーク サービス (HNS) とホスト コンピューティング サービス (HCS) は、連携してコンテナーを作成し、エンドポイントをネットワークに接続します。 HNS PowerShell ヘルパー モジュールを使用して HNS と対話できます。

ネットワークの作成

  • HNS は、各ネットワークの Hyper-V 仮想スイッチを作成します。
  • HNS は、必要に応じて NAT プールと IP プールを作成します。

エンドポイントの作成

  • HNS は、コンテナー エンドポイントごとにネットワーク名前空間を作成します。
  • HNS/HCS は v(m)NIC をネットワーク名前空間内に配置します。
  • HNS は (vSwitch) ポートを作成します。
  • HNS は、IP アドレス、DNS 情報、ルートなど (ネットワーク モードに依存) をエンドポイントに割り当てます。

ポリシーの作成

  • 既定のネットワーク アドレス変換 (NAT) ネットワークの場合、HNS は対応する Windows ファイアウォールの ALLOW 規則を使用して WinNAT ポート転送規則とマッピングを作成します。
  • 他のすべてのネットワークでは、HNS は、負荷分散、ACL、カプセル化を含むポリシー作成に仮想フィルタリング プラットフォーム (VFP) を利用します。 HNS API とスキーマの詳細については、「 VM とコンテナーのホスト コンピューティング ネットワーク (HCN) サービス API」を参照してください。

HNS 管理スタックを示す図

サポートされていない機能とネットワーク オプション

次のネットワーク オプションは、現在 Windows ではサポート されていません

  • Windows Server 2022 以降では、l2bridge ネットワークに接続されている Windows コンテナーで IPv6 スタックがサポートされます。 ただし、NAT およびオーバーレイ ネットワークに接続されている Windows コンテナーでは、IPv6 スタック経由の通信はサポートされていません。
  • IPsec 経由の暗号化されたコンテナー通信。
  • ホスト モード のネットワーク。
  • 透過的なネットワーク ドライバーを使用した仮想化された Azure インフラストラクチャでのネットワーク。
コマンド サポートされていないオプション
docker run --ip6, --dns-option
docker network create --aux-address, --internal, --ip-range, --ipam-driver, --ipam-opt, --ipv6, --opt encrypted