Windows コンテナーの要件

このガイドでは、Windows コンテナー ホストの要件を一覧で示します。

OS 要件

  • Windows コンテナーの機能は、Windows Server 2016 でのみ (コアとデスクトップ エクスペリエンス)、Windows 10 Professional および Enterprise (記念日のエディション) 以降。
  • Hyper-V コンテナーを実行する前に、Hyper-V ロールをインストールする必要があります。
  • Windows Server コンテナー ホストでは、Windows を c:\ にインストールする必要があります。 Hyper-V コンテナーのみを展開する場合、この制限は適用されません。

仮想化されたコンテナー ホスト

Windows コンテナー ホストが Hyper-V 仮想マシンから実行され、Hyper-V コンテナーもホストする場合、入れ子になった仮想化を有効にする必要があります。 入れ子になった仮想化には次の要件があります。

  • 仮想化された Hyper-V ホスト用に少なくとも 4 GB の RAM を利用できる。
  • Windows Server 2019、Windows Server バージョン 1803、ホスト システム、1709、Windows Server 2016、または Windows 10 のバージョンの Windows Server と Windows Server (全、コア)、仮想マシンでします。
  • Intel VT-x に対応したプロセッサ (この機能は現在 Intel プロセッサのみで使用可能です)。
  • コンテナー ホスト VM には、少なくとも 2 つの仮想プロセッサも必要になります。

サポートされる基本イメージ

Windows コンテナーには、Windows Server Core と Nano Server という 2 つのコンテナー イメージが付属しています。 一部の構成は、どちらの OS イメージもサポートしていません。 サポートされている構成を次の表に示します。

ホスト オペレーティング システム
Windows Server コンテナー
Hyper-V コンテナー
Windows Server 2016/2019 (標準またはデータ センター)
Server Core / Nano Server
Server Core / Nano Server
Nano Server*
Nano Server
Server Core / Nano Server
Windows 10 Pro / Enterprise
利用不可
Server Core / Nano Server

警告

Windows Server Version 1709 から、Nano Server はコンテナー ホストとして使用できなくなりました。

メモリの要件

コンテナーに対して利用可能なメモリの制限は、リソース コントロールを使用するか、コンテナー ホストをオーバーロードすることによって構成できます。 コンテナーの起動と基本的なコマンド (ipconfig、dir など) の実行に必要なメモリの最小量を以下に示します。 これらの値では、コンテナー間で共有しているリソースや、そのコンテナーで実行されるアプリケーションの要件が考慮されていない点に注意してください。 たとえば、512 MB の空きメモリを持つホストでは、Hyper-V による分離の下で複数の Server Core コンテナーを実行できます。これは、それらのコンテナーがリソースを共有するためです。

Windows Server 2016

基本イメージ Windows Server コンテナー Hyper-V による分離
Nano Server 40 MB 130 MB + 1 GB のページファイル
Server Core 50 MB 325 MB + 1 GB のページファイル

Windows Server Version 1709

基本イメージ Windows Server コンテナー Hyper-V による分離
Nano Server 30 MB 110 MB + 1 GB のページファイル
Server Core 45 MB 360 MB + 1 GB のページファイル

Nano Server と Windows Server Core の比較

Windows Server Core と Nano Server のいずれを選択するかは、どのような点を検討すればよいでしょうか。 いずれもユーザーが自由に構築できますが、アプリケーションが .NET Framework との完全な互換性を必要とする場合は、Windows Server Core を使用する必要があります。 それとは逆に、アプリケーションがクラウド用に構築され、.NET Core を使用する場合は、Nano Serverを使用する必要があります。 これは、Nano Server が可能な限りフットプリントを小さく抑える目的で構築されており、必須でない複数のライブラリが削除されているためです。 Nano Server での構築を検討する場合、以下の点に注意してください。

  • サービス スタックが削除されている
  • .NET Core が含まれていない (.NET Core の Nano Server イメージ は使用できます)
  • PowerShell が削除されている
  • WMI が削除されている
  • Windows Server Version 1709 からは、アプリケーションがユーザー コンテキストで実行されるため、管理者特権を必要とするコマンドは失敗となります。 コンテナー管理者アカウントは --user フラグを使用して指定 (つまり docker run --user ContainerAdministrator を使用) できますが、将来的には NanoServer から管理者アカウントが完全に削除される予定です。

ここには特に重要な相違点が記載されていますが、すべてが網羅されているわけではありません。 上に記載されている以外にも、除外されているコンポーネントがあります。 Nano Server 上には、いつでもレイヤーを追加できることに注意してください。 この例については、.NET Core の Nano Server の Dockerfile をご覧ください。