次の方法で共有


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

適用対象: 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 アドレスを受け取ります。 また、デバッグ状況で TCP/UDP オプションを使用して、 や Test-NetConnection などの ping ICMP ベースのツールを構成する必要があることを意味します。

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

サブネット 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 仮想スイッチを介したブリッジ接続
  • クロス サブネット: コンテナー ホストを経由してルーティング
(物理) ネットワーク アダプターへの直接アクセスでコンテナー ホストを経由してルーティング (物理) ネットワーク アダプターへの直接アクセスでコンテナー ホストを経由してルーティング
オーバーレイ マルチノードに適しています。Docker Swarm に必要です。Kubernetes で使用できます
  • 同一サブネット: 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) と連携して overlay に IPAM を提供します。 その他のすべてのネットワーク ドライバーは、外部の IPAM を使用します。

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

サービス探索

サービスの検出は、特定の Windows ネットワーク ドライバーについてのみサポートされます。

ドライバー名 ローカル サービス検出 グローバル サービス検出
nat YES Docker EE で使用可能
overlay YES Docker EE または kube-dns でははい
transparent NO NO
l2bridge kube-dns でははい kube-dns でははい