Windows Server 2016をVMware vSphare5.5.0上の仮想マシンに入れてWindowsコンテナを動かそうとして躓きました。結果として仮想化のネストの許可が必要ということとHyper-V ContainersはvSphare5.5では動かずVMware vSphare6.0以上が必要であることが分かりましたのでそのまとめです。
必要要件
要件はここ(Deploy Windows Container)に書いてあります。
- 4GB以上のメモリ
- Windows Server 2016, or Windows 10 on the host system, and Windows Server (Full, Core) or Nano Server
- Intel VT-x が有効なプロセッサ
- CPUが2コア以上
となってますが、メモリ、コア数は多少足りなくてもとりあえずは動きました。一方Intel VT-xはHyper-V Containersを使わない場合でも必須でした。
Windowsコンテナを動かすまで
ということで、Intel VT-xの有効化、つまり仮想化のネストの許可を行っていきます。今回、仮想マシンの作成はvSphare web clientを使用します。(普通のclientから設定できなかった)
まずは空の仮想マシンを作成してください。
次に仮想マシンの仮想マシンハードウェアバージョンをアップグレードします。手順はVMware Docsのここです。これを行うとvSphare5.5の場合バージョンは10になります。
最後に作成した仮想マシンの仮想化のネストの有効化を行います。手順はVMware Docsのここになります。
以上で終了です。後は普通にWindows Server 2016をインストールして、クイックスタートに従ってDockerをインストールすれば使えます。
できないこと
vSphare5.5ではHyper-V Containersが使えません。これは仮想マシンのWindows Server 2016の中でHyper-Vの起動ができないからです。
実際にやってみると「役割と機能の追加」からHyper-Vのインストールは成功します。しかしイベントを確認すると
- Hypervisor launch failed; Processor does not support the minimum features required to run the hypervisor
というようなエラーが発生して起動できていないことが分かります。
調べてみるとこちらのような話が見つかり、Windows2016のHyper-vを使用するためには仮想マシンハードウェアバージョンが11以上が必要でvSphare5.5では10までしか上がらないので使用できないということが分かります。