次の方法で共有


Windows コンテナー ネットワーク ドライバー

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

Windows 上の Docker によって作成された既定の 'nat' ネットワークを利用するだけでなく、ユーザーはカスタム コンテナー ネットワークを定義できます。 ユーザー定義ネットワークは、Docker CLI docker network create -d <NETWORK DRIVER TYPE> <NAME> コマンドを使用して作成できます。 Windows では、次の種類のネットワーク ドライバーを使用できます。

NAT ネットワーク ドライバー

'nat' ドライバーで作成されたネットワークに接続されたコンテナーは、内部 Hyper-V スイッチに接続され、ユーザー指定の (--subnet) IP プレフィックスから IP アドレスを受け取ります。 コンテナー ホストからコンテナー エンドポイントへのポート転送/マッピングがサポートされています。

ヒント

Docker デーモン構成ファイルfixed-cidr 設定を使用して、既定の 'nat' ネットワークで使用されるサブネットをカスタマイズできます。

手記

Windows Server 2019 (またはそれ以降) で作成された NAT ネットワークは、再起動後に永続化されなくなりました。

NAT ネットワークの作成

サブネット 10.244.0.0/24を使用して新しい NAT ネットワークを作成するには:

docker network create -d "nat" --subnet "10.244.0.0/24" my_nat

透過的なネットワーク ドライバー

"透過的" ドライバーで作成されたネットワークに接続されたコンテナーは、外部 Hyper-V スイッチを介して物理ネットワークに直接接続されます。 物理ネットワークからの IP は、静的に割り当てる (ユーザー指定の --subnet オプションが必要) か、外部 DHCP サーバーを使用して動的に割り当てることができます。

手記

次の要件により、透過的なネットワーク経由でのコンテナー ホストの接続は、Azure VM ではサポートされていません。

必須: 仮想化シナリオ (コンテナー ホストは VM) でこのモードを使用する場合は、mac アドレススプーフィング 必要があります。

透過的なネットワークの作成

サブネット 10.244.0.0/24、ゲートウェイ 10.244.0.1、DNS サーバー 10.244.0.7、VLAN ID 7を使用して新しい透過的ネットワークを作成するには:

docker network create -d "transparent" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_transparent

オーバーレイ ネットワーク ドライバー

Docker Swarm や Kubernetes などのコンテナー オーケストレーターによって一般的に使用されるオーバーレイ ネットワークに接続されたコンテナーは、複数のコンテナー ホスト間で同じネットワークに接続されている他のコンテナーと通信できます。 各オーバーレイ ネットワークは、プライベート IP プレフィックスによって定義された独自の IP サブネットを使用して作成されます。 オーバーレイ ネットワーク ドライバーは、VXLAN カプセル化を使用してテナント コンテナー ネットワーク間のネットワーク トラフィックの分離を実現し、オーバーレイ ネットワーク間で IP アドレスを再利用できるようにします。

必須: オーバーレイ ネットワークを作成するために必要な 前提条件、環境が満たされていることを確認します。

必要: Windows Server 2019 では、KB4489899が必要です。

必要: Windows Server 2016 では、KB4015217が必要です。

手記

Windows Server 2019 以降では、Docker Swarm によって作成されたオーバーレイ ネットワークは、送信接続に VFP NAT 規則を利用します。 これは、特定のコンテナーが 1 つの IP アドレスを受信することを意味します。 また、pingTest-NetConnection などの ICMP ベースのツールは、デバッグ状況で TCP/UDP オプションを使用して構成する必要があることを意味します。

オーバーレイ ネットワークの作成

サブネット 10.244.0.0/24、DNS サーバー 168.63.129.16、VSID 4096を使用して新しいオーバーレイ ネットワークを作成するには:

docker network create -d "overlay" --attachable --subnet "10.244.0.0/24" -o com.docker.network.windowsshim.dnsservers="168.63.129.16" -o com.docker.network.driver.overlay.vxlanid_list="4096" my_overlay

L2bridge ネットワーク ドライバー

'l2bridge' ドライバーで作成されたネットワークに接続されたコンテナーは、外部 Hyper-V スイッチを介して物理ネットワークに接続されます。 l2bridge では、受信およびエグレスでのレイヤー 2 アドレス変換 (MAC 再書き込み) 操作により、コンテナー ネットワーク トラフィックの MAC アドレスはホストと同じになります。 データセンターでは、これは、時には有効期間の短いコンテナーの MAC アドレスを学習する必要があるスイッチのストレスを軽減するのに役立ちます。 L2bridge ネットワークは、次の 2 つの方法で構成できます。

  1. L2bridge ネットワークは、コンテナー ホストと同じ IP サブネットで構成されます
  2. L2bridge ネットワークが新しいカスタム IP サブネットで構成されている

構成 2 では、ユーザーはゲートウェイとして機能するエンドポイントをホスト ネットワーク コンパートメントに追加し、指定されたプレフィックスのルーティング機能を構成する必要があります。

l2bridge ネットワークの作成

サブネット 10.244.0.0/24、ゲートウェイ 10.244.0.1、DNS サーバー 10.244.0.7、VLAN ID 7 を使用して新しい l2bridge ネットワークを作成するには:

docker network create -d "l2bridge" --subnet 10.244.0.0/24 --gateway 10.244.0.1 -o com.docker.network.windowsshim.vlanid=7 -o com.docker.network.windowsshim.dnsservers="10.244.0.7" my_l2bridge

ヒント

L2bridge ネットワークは高度にプログラム可能です。l2bridge の構成方法の詳細については、参照してください。

L2tunnel ネットワーク ドライバー

作成は l2bridge と同じですが、このドライバー は Microsoft Cloud Stack (Azure)でのみ使用する必要があります。 l2bridge の唯一の違いは、すべてのコンテナー トラフィックが SDN ポリシーが適用されている仮想化ホストに送信されるため、コンテナーに対して azure ネットワーク セキュリティ グループ などの機能が有効になる点です。

ネットワーク トポロジと IPAM

次の表は、各ネットワーク ドライバーの内部 (コンテナー間) 接続と外部接続に対してネットワーク接続がどのように提供されるかを示しています。

ネットワーク モード/Docker ドライバー

Docker Windows ネットワーク ドライバー 一般的な用途 コンテナー間 (単一ノード) コンテナーから外部 (単一ノード + マルチノード) コンテナー間 (マルチノード)
NAT (既定) 開発者に適した
  • 同じサブネット: Hyper-V 仮想スイッチ経由のブリッジ接続
  • クロス サブネット: サポートされていません (NAT 内部プレフィックスは 1 つだけ)
管理 vNIC 経由でルーティング (WinNAT にバインド) 直接サポートされていません:ホスト経由でポートを公開する必要があります
透過的 開発者または小規模なデプロイに適しています
  • 同じサブネット: Hyper-V 仮想スイッチ経由のブリッジ接続
  • クロス サブネット: コンテナー ホスト経由でルーティング
(物理) ネットワーク アダプターに直接アクセスできるコンテナー ホスト経由でルーティングされる (物理) ネットワーク アダプターに直接アクセスできるコンテナー ホスト経由でルーティングされる
オーバーレイ マルチノードに適しています。Kubernetes で使用可能な Docker Swarm に必要
  • 同じサブネット: Hyper-V 仮想スイッチ経由のブリッジ接続
  • クロス サブネット: ネットワーク トラフィックがカプセル化され、Mgmt vNIC 経由でルーティングされる
直接サポートされていません。 Windows Server 2016 の NAT ネットワークまたは Windows Server 2019 の VFP NAT 規則に接続されている 2 番目のコンテナー エンドポイントが必要です。 同じ/クロス サブネット: ネットワーク トラフィックは VXLAN を使用してカプセル化され、Mgmt vNIC 経由でルーティングされます
L2Bridge Kubernetes および Microsoft SDN に使用されます
  • 同じサブネット: Hyper-V 仮想スイッチ経由のブリッジ接続
  • クロス サブネット: イングレスおよびエグレス時に書き換えられ、ルーティングされるコンテナの MAC アドレス
コンテナのMACアドレスが流入時と流出時に書き直される
  • 同一サブネット: ブリッジ接続
  • クロス サブネット: WSv1809 以降の Mgmt vNIC 経由でルーティング
L2Tunnel Azure のみ 同一/クロス サブネット: ポリシーが適用される物理ホストの Hyper-V 仮想スイッチに折り返し トラフィックは Azure 仮想ネットワーク ゲートウェイを経由する必要があります 同一/クロス サブネット: ポリシーが適用される物理ホストの Hyper-V 仮想スイッチに折り返し

IPAM

IP アドレスは、ネットワーク ドライバーごとに異なる方法で付与され、割り当てられます。 Windows では、ホスト ネットワーク サービス (HNS) を使用して NAT ドライバーに IPAM を提供し、Docker Swarm モード (内部 KVS) と連携してオーバーレイ用の IPAM を提供します。 他のすべてのネットワーク ドライバーは、外部 IPAM を使用します。

ネットワーク モード/ドライバー IPAM
NAT 内部 NAT サブネット プレフィックスからのホスト ネットワーク サービス (HNS) による動的 IP 割り当てと割り当て
透明 静的または動的 (外部 DHCP サーバーを使用) IP 割り当てと、コンテナー ホストのネットワーク プレフィックス内の IP アドレスからの割り当て
オーバーレイ Docker エンジン Swarm モードで管理されるプレフィックスからの動的 IP 割り当てと HNS による設定
L2Bridge 指定されたサブネット プレフィックスからのホスト ネットワーク サービス (HNS) による動的 IP 割り当てと割り当て
L2Tunnel Azure のみ - プラグインからの動的な IP 割り当てと設定

サービスの検出

Service Discovery は、特定の Windows ネットワーク ドライバーでのみサポートされます。

ドライバー名 ローカル サービスの検出 グローバル サービス検出
ナット はい Docker EE の場合は YES
オーバーレイ はい はい (Docker EE または kube-dns を使用)
透明 いいえ いいえ
l2bridge kube-dns の場合は YES kube-dns の場合は YES