現状、Hyper-V Container のみのサポートで、Windows Server Container は実行できないみたいです。Windows Server Container はカーネルを Container Host を共有するので、Nano Server という別のカーネル上の Container Host で WindowsServerCore イメージのコンテナーは動かないという理屈だと思います。
Nano Server を Container Host としてセットアップするには、いろいろと注意点があるのでメモ。
Windows Server 2016 TP4 の Nested Hyper-V を有効にした Nano Server 仮想マシンを Container Host としてセットアップする手順です。
この手順により、こんなエラーを回避できます(と思います)。
Step 1: Hyper-V と Containers のサポートを含む Nano Server の VHD イメージを作成する。
PS> New-NanoServerImage -MediaPath F:(英語版のTP4のISOマウント先) -BasePath .\Base -TargetPath .\mynano01.vhd -ComputerName nanoserver02 -GuestDrivers -Compute -Containers -Language en-us
Step 2: Windows Server 2016 TP4 の Hyper-V に第 1 世代仮想マシン(mynano01)を作成し、Nano Server の VHD イメージを接続してセットアップする。
Step 3: 仮想マシン(mynano01) で Nested Hyper-V を有効にする。
PS> wget https://raw.githubusercontent.com/Microsoft/Virtualization-Documentation/master/hyperv-tools/Nested/Enable-NestedVm.ps1 -OutFile .\Enable-NestedVm.ps1
PS> .\Enable-NestedVm.ps1 -VmName "mynano01"
Step 4: 仮想マシン(mynano01)の設定を開いて[統合サービス]の[ゲスト サービス]を有効にする。これは、次の Step で Copy-VMFile を使うため。
Step 5: Nano Server では wget (Invoke-WebRequest) が使えないので、Hyper-V ホスト側で Install-ContainerHost.ps1 をダウンロードして、Copy-VMFile を使ってゲスト サービス経由で Nano Server にコピーする。
PS> wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFile .\Install-ContainerHost.ps1
PS> Copy-VMFile -Name 96mynano01 -SourcePath .\Install-ContainerHost.ps1 -DestinationPath C:\ -FileSource Host
Step 6: コマンドプロンプトを開き、CHCP 65001 (おまじない) に切り替えてから、PowerShell.exe を開始。または、PowerShell で CHCP 432 (おまじない) に切り替える。
C:\> chcp 65001
C:\> powershell.exe
または
PS> chcp 432
Step.7: Hyper-V の PowerShell Direct で Nano Server の PS セッションに接続し、Install-ContainerHost.ps1 を実行する。PowerShell Remoting で接続するなら -PSDirect パラメーターは不要かも。たぶん、Docker サポートのインストールは失敗するので、Docker サポートが不要なら -SkipDocker パラメーターを追加してね。
PS> Enter-PSSession -VMName <Container Host にする Nao Server の仮想マシン名>
[仮想マシン名]: PS> C:\Install-ContainerHost.ps1 -HyperV -PSDirect
もし、Getting Container OS image (NanoServer) ... の直後に C:\Install-ContainerHost.ps1 : Value cannot be null. エラーで終わってしまったら、一時フォルダー ($env:temp) に NanoServer.wim がダウンロード済みかどうかを確認し...
[仮想マシン名]: PS> dir $env:temp
-WimPath パラメーターを指定してベース OS イメージのインストールのところから再開。
[仮想マシン名]: PS> $mywim = "$($env:temp)\NanoServer.wim"
[仮想マシン名]: PS> C:\Install-ContainerHost.ps1 -HyperV -PSDirect -WimPath $mywim
成功すると、こんな感じで終わります。Docker まわりは失敗してますが (-SkipDocker をお勧め)...
Windows Server Container 用の WindowsServerCore はセットアップされません。
Step 7 : Hyper-V Container を作成してみる。
PowerShell を普通に開いて (おまじないは不要)...
PS> Enter-PSSession -VMName <Container Host にした Nano Server の仮想マシン名>
[仮想マシン名]: PS> New-Container -Name MyContainer01 -ContainerImageName NanoServer -SwitchName "Virtual Switch" -RuntimeType HyperV
[仮想マシン名]: PS> Start-Container -Name MyContainer01
[仮想マシン名]: PS> Get-Con
Enter-PSSession -ContainerName MyContainer01 -RunAsAdministrator は Specified method is not supported. と言われて使えませんでした。
Step 8: おそうじ。
[仮想マシン名]: PS> Stop-Container -Name MyContainer01
[仮想マシン名]: PS> Remove-Container -Name MyContainer01
おまけ
New-NanoServerImage で作成した VHD のサイズは既定で 4GB。足りなくなるかもしれないので、Hyper-V マネージャーのディスクの編集で VHD のサイズを拡張しておきましょう。
仮想マシン側のボリュームの拡張は、Nano Server だと Diskpart とか使えなくて面倒だと思いますが、サーバー マネージャーでリモート管理できるようにしてあれば簡単です。
0 件のコメント:
コメントを投稿