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 経由で作成できる、natoverlaytransparentl2bridgel2tunnel の 5 種類のネットワーク ドライバーまたはモードをサポートしています。 物理ネットワークのインフラストラクチャと単一または複数のホストのネットワーク要件に応じて、ニーズに最適なネットワーク ドライバーを選択する必要があります。

Illustrates the Windows network stack

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

Illustrates the Docker network ls PowerShell command

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

Illustrates the Get-VMSwitch PowerShell command

'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 Firewall ALLOW 規則を使用して WinNAT ポート転送規則とマッピングを作成します。
  • 他のすべてのネットワークでは、HNS は、負荷分散、ACL、カプセル化を含むポリシー作成に仮想フィルタリング プラットフォーム (VFP) を利用します。 HNS API とスキーマの詳細については、 VM とコンテナーのホスト コンピューティング ネットワーク (HCN) サービス API に関するページを参照してください。

Illustrates the HNS management stack

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

現在、次のネットワーク オプションは、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