明らかになった「Hyper-Vコンテナー」の正体(1)――その仕組みと管理方法vNextに備えよ! 次期Windows Serverのココに注目(37)(2/2 ページ)

» 2015年12月11日 05時00分 公開
[山市良テクニカルライター]
前のページへ 1|2       

Hyper-VコンテナーでIISを実行してみた

 Windows ServerコンテナーとHyper-Vコンテナーの違いは、一言でいってしまえば隔離度の違いでしかありませんが、実はもう一つ大きな違いがあります。それは、コンテナーイメージの違いです。

 Windows ServerコンテナーがServer Coreインストールベースのアプリケーション実行環境であるのに対し、Hyper-VコンテナーはNano Serverがベースです。そのため、コンテナー内で利用できる役割や機能、コマンドに違いがあります。

 例えば、Windows ServerコンテナーでIIS(インターネットインフォメーションサービス)Webサーバーの役割を利用するには、コンテナー内で「Install-WindowsFeature Web-Server」または「DISM /Online /Enable-Feature /FeatureName:IIS-WebServer」コマンドレットを実行してIIS Webサーバーの役割をインストールします。

 Hyper-VコンテナーはNano Serverベースなので、Windows Server 2016 TP4のインストールメディアの「\NanoServer\Packages」フォルダーに収録されているNano Server用のIISパッケージ(Microsoft-NanoServer-IIS-Package.cab)を追加する必要があります。しかし、ここで問題があります。通常の仮想マシンとは異なり、コンテナーにはDVDメディアやISOイメージをマウントする方法が提供されていません。

 そこで、Windows Server 2016 TP4には、コンテナーホストとコンテナー間のファイル共有機能が追加されました。

 Windows PowerShellで操作する場合は、Windows Server 2016 TP4(英語版であることがポイント)のインストールメディアの「\NanoServer\Packages」フォルダーの内容を、例えば「C:\Share」フォルダーにコピーして、Hyper-Vコンテナーを停止した状態で次のコマンドラインを実行し、コンテナーを開始して接続します(画面3)。

1 Add-ContainerSharedFolder -ContainerName <コンテナー名> -SourcePath C:\Share -DestinationPath C:\Packages

2 Start-Container -Name <コンテナー名>

3 Enter-PSSession -ContainerName <コンテナー名> -RunAsAdministrator


画面3 画面3 コンテナーとのファイル共有機能を利用して、Nano ServerのIISパッケージ「Microsoft-NanoServer-IIS-Package.cab」を追加する

 最初の「Add-ContainerSharedFolder」コマンドレットは、Windows Server 2016 TP4で追加された新しいコマンドレットで、コンテナーホストのフォルダーをコンテナー内にマウントする機能を提供します。この機能は、Windows Serverコンテナーでも利用できます。なお、Dockerコマンドでは「docker run」コマンドに「-v <ローカルパス>:<コンテナー内のパス>」パラメーター(例:-v c:\share:c:\packages)を追加して指定します。

 3行目の「Enter-PSSession」コマンドレットの「-ContainerName」パラメーターもWindows Server 2016 TP4で追加されました。TP3では「-ContainerId」パラメーターにコンテナーIDを指定する必要がありましたが、TP4からはコンテナー名を指定できるようになりました。

 コンテナーに接続したら、次のコマンドラインを実行することで、IIS Webサーバーの役割を追加し、サービスを開始できます(画面4)。なお、筆者の環境では最初のコマンドラインが失敗しました。失敗したコマンドラインは、言語パッケージ(en-us\Microsoft-NanoServer-IIS-Package.cab)の追加後に再実行することで成功しました。

1 DISM /Online /Add-Package /PackagePath:C:\Packages\Microsoft-NanoServer-IIS-Package.cab

2 DISM /Online /Add-Package /PackagePath:C:\Packages\en-us\Microsoft-NanoServer-IIS-Package.cab

3 NET START W3SVC


画面4 画面4 Hyper-VコンテナーにNano ServerのIIS Webサーバーの役割を追加し、実行したところ

 なお、現時点では、Windows Server 2016 TP4のコンテナーホスト上で、コンテナーイメージ「NanoServer」をWindows Serverコンテナーとして実行することはできません。また、コンテナーイメージ「WindowsServerCore」をHyper-Vコンテナーとして実行することもできません。

  一方、コンテナーホストがNano Serverの場合は、コンテナーイメージ「NanoServer」をWindows ServerコンテナーまたはHyper-Vコンテナーで実行することができます。コンテナーホストであるNano Serverでコンテナーイメージ「NanoServer」をWindows Serverコンテナーとして実行できるのは、コンテナーホストとコンテナーが同じカーネルベースであり、コンテナーがコンテナーホストのカーネルを共有できるからです。

 この制約は将来変更になるかもしれませんが、現時点ではこの通りです。

「vNextに備えよ! 次期Windows Serverのココに注目」バックナンバー

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。マイクロソフト製品、テクノロジを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手がける。個人ブログは『山市良のえぬなんとかわーるど』。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。