Hyper-Vコンテナーは、コンテナーの隔離にHyper-Vハイパーバイザーを利用するため、Hyper-Vに完全に依存しています。コンテナーホストを仮想マシンで実行する場合は、Windows Server 2016 TP4のHyper-V、または64bit版のWindows 10 バージョン1511(またはInsider Previewビルド10565以降)のクライアントHyper-Vの仮想マシンにWindows Server 2016 TP4をインストールして、仮想マシンを停止した状態で管理者として開いたWindows PowerShellで次のコマンドラインを実行します。これで、仮想マシンのNested Virtualizationが有効になり、Hyper-Vコンテナーをサポートできるようになります(画面3)。
1 wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 -OutFile ~/Enable-NestedVm.ps1
2 ~/Enable-NestedVm.ps1 -VmName "仮想マシン名"
Nested Virtualizationを有効にすると、仮想マシンのメモリ割り当てやネットワークアダプターの構成が必要に応じて変更されます(画面4)。
仮想マシンの動的メモリを無効にし、少なくとも4GB(推奨)のメモリを静的に割り当てること、ネットワークアダプターで「MACスプーフィング」を有効にすること、これらの設定を手動で行った上で、次のコマンドラインを実行することで、「Enable-NestedVm.ps1」スクリプトを使用せずにNested Virtualizationを有効化することができます。
Set-VMProcessor -VMName "仮想マシン名" -ExposeVirtualizationExtensions $true
なお、Nested Virtualizationを有効にした仮想マシンでは、動的メモリの使用や仮想マシン実行中のチェックポイントの使用ができなくなるので注意してください。
「Install-ContainerHost.ps1」スクリプトは、Windows Server 2016 Technical Preview 4のNano Serverをサポートしており、物理マシンまたは仮想マシンとしてインストール済みのNano Serverをコンテナーホストとしてセットアップすることができます(画面5、画面6)。
ただし、Nano Serverで「Install-ContainerHost.ps1」を実行する前には、Nano ServerにHyper-Vの役割(Microsoft-NanoServer-Compute-Package.cab)とContainersの機能(Microsoft-NanoServer-Containers-Package.cab)、ReverseForwardersの機能(Microsoft-OneCore-SReverseForwarders-Package.cab)のパッケージを事前に組み込んでおく必要があります。
また、Nano ServerをWindows Server 2016 TP4のインストールメディアのイメージおよびパッケージ(\NanoServer\NanoServer.wimイメージおよび\NanoServer\Packagesのパッケージ)を使用して準備する必要があるなど、いくつか注意点があります。筆者が試行錯誤して成功した方法を以下の個人ブログにまとめてありますので、参考にしてください。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。
Copyright © ITmedia, Inc. All Rights Reserved.