>  > 2輪 AP ブレーキパッド 入数:2キャリパー分(4枚) フロント カワサキ KRT750A Teryx4 750 4X4 750cc 2012年~2013年

【大阪 取り付け工賃無料!】■トーヨー 225/45R17 ガリット G5■ザインSS■スタッドレスタイヤ+ホイール 4本■クラウン マークX

2輪 AP ブレーキパッド 入数:2キャリパー分(4枚) フロント カワサキ KRT750A Teryx4 750 4X4 750cc 2012年~2013年

技術者情報

ソリューション

2016年4月27日(水)公開

第197回

Hyper-VコンテナとしてIISコンテナを作ってみる

2012年~2013年 KRT750A カワサキ 750 2輪 入数:2キャリパー分(4枚) フロント KRT750A Teryx4 4X4 ブレーキパッド フロント AP 750cc

Windows Server 2016で実装される予定の「Windowsコンテナ」はこれまでHyper-V上の仮想マシンを利用してきたユーザーにとって、新しい仮想化技術の選択肢を提供するものとなっています。

今回は、「Hyper-Vコンテナ」を利用することでコンテナのメリットを生かしつつ、より安定した、より安全なアプリケーションの実行に特化した隔離環境を作成する方法をご紹介します。

※今回の内容はWindows Server 2016 Technical Preview 4の英語版を元に操作を行っています。
ツイート

記事INDEX

Windowsコンテナとは

コンテナ技術は、Linuxの世界ではDockerをはじめすでに利用可能な環境が提供されています。コンテナはプラットフォームとなるコンテナホストとOSのカーネル部分を共通化し、コンテナ内でアプリケーションの実行環境のみをパッケージ化して実行するテクノロジーです。コンテナ技術はこれまでの仮想マシンに次ぐ、新しい仮想化技術の進化と言われています。

コンテナ内のアプリケーションは他のアプリケーションに影響されることなく、また、影響することなく独立した領域で実行します。コンテナを利用する場合のメリットがこちらです。

・コンテナごとにOSカーネルが読み込まれるわけではないので、仮想マシンに比べて必要とするメモリ、CPU、HDDリソースが少ない
・コンテナ自体は小さい差分ファイルなので、構築、展開などが早い
・起動時の読み込みが小さいので、起動が速い
・OSのインストールなどが不要で、アプリケーションのインストールなど必要な変更部分のみ構築すれば利用可能
・サーバー管理者の手を借りずに、アプリケーション開発者自身が配置する、テストする、公開する、破棄するといった一連のオペレーションができ、作業に要する時間と手間が格段に小さくなる


このように多くの利益をもたらすコンテナ技術をWindows Server上でも利用できるようにしたものが、「Windows コンテナ」となります。WindowsコンテナではWindows上でコンテナ技術を実現するために、マイクロソフトの仮想化技術プラットフォームであるHyper-Vのテクノロジーが利用されています。

Windowsコンテナ
├-Windows Serverコンテナ
| 名前空間とプロセスの分離テクノロジーによって、
| ホスト上で複数のコンテナが実行されます。
└-Hyper-Vコンテナ


ホスト上で複数のコンテナを実行しますが、各コンテナは SPEEDBRAKES スピードブレークス フロントブレーキホース【HOSE FRONT BRAKE】【ヨーロッパ直輸入品】 Color:Gold RM80 (80) 96-01、ユーティリティ仮想マシン内で実行されます。 これにより フロントキャリパーサポート brembo40mmピッチ対応 シルバー ACTIVE(アクティブ) VTR1000F(97~03年)、他のコンテナ(Hyper-Vコンテナ、Windows Serverコンテナ)、コンテナホストとの間でカーネルレベルの分離が提供されます。

Hyper-Vコンテナとは

「Windows Server 2016 Technical Preview 4 でIISコンテナを作ってみる」で紹介したWindowsコンテナには 即納 ヨコハマ アイスガードSUV 175/80R16 [ジムニー JB64W/JB23W/JA系(JA11V/JA71V等)] ヨコハマスタッドレス+RT-5N ホワイト 1台分セット 送料無料、「Windows Serverコンテナ」と、もう1つ「Hyper-Vコンテナ」と呼ばれる2種類のコンテナがあります。

以前紹介したものは、「Windows Serverコンテナ」を利用してIISをインストールし公開するというものでした。「Windows Serverコンテナ」はコンテナ内のアプリケーションからは完全に隔離された環境で実行しているように見えますが、コンテナホストからは、コンテナのプロセスを確認することができます。

またコンテナホストのOSカーネルを共有化して実行しています。Linuxで利用されている、いわゆるコンテナと同様のものです。「Hyper-Vコンテナ」はWindowsコンテナ独自のコンテナの仕様で、コンテナの基本的な考え方である、ホストとのOSカーネル部分の共通化を行いません。「Hyper-Vコンテナ」内ではOSもアプリケーションも、完全にホストや他のコンテナから隔離された環境で実行されます。これは機能を限定してOS自体を非常に小さくしたNanoServerと、Hyper-Vの技術を組み合わせることで実現したものです。「Hyper-Vコンテナ」を利用することでコンテナのメリットを生かしつつ、より安定した 、より安全なアプリケーションの実行に特化した隔離環境を提供することが可能となります。

Hyper-Vコンテナの作成

仮想マシンをコンテナホストとして構築し、Hyper-Vコンテナを利用する場合、Nested Hyper-Vの設定を行って仮想マシン内でHyper-Vの機能を有効にしておく必要があります。Nested Hyper-Vの設定方法は、前回の「ついに実現したNested Hyper-V を体感してみる」で紹介した方法となります。

Hyper-Vの機能が有効になったら、コンテナホストを構築していきます。コンテナホストの構築方法は ポッシ POSHュ コンパクトハイスロットルキット カワサキ 青 031678-01 JP店、「Windows Server 2016 Technical Preview 4 でIISコンテナを作ってみる」で紹介した方法となりますが、Hyper-Vコンテナを利用する場合、“C:\Install-ContainerHost.ps1 -HyperV“ HyperVスイッチを指定する必要があります。


PS C:\> wget -uri https://aka.ms/tp4/Install-ContainerHost -OutFile C:\Install-ContainerHost.ps1

C:\Install-ContainerHost.ps1 -HyperV


あとは、同様の手順でコンテナホストを構築していきます。HyperVスイッチを指定してコンテナホストを構築した後、Get-ContainerImageコマンドで確認すると、WindowsServerCoreと、NanoServerのコンテナOSイメージの2つが確認できます。

PS C:\> Get-ContainerImage
Name Publisher Version IsOSImage
---- --------- ------- ---------
NanoServer CN=Microsoft 10.0.10586.0 True
WindowsServerCore CN=Microsoft 10.0.10586.0 True

Hyper-Vコンテナを作成するときは、NanoServerのコンテナOSイメージを利用する必要があります。
早速Hyper-Vコンテナを作成しましょう。

PS C:\> New-Container -Name "MyHPVContainer" -ContainerImageName “NanoServer” -SwitchName "Virtual Switch" -RuntimeType HyperV

-Name:コンテナ名
-ContainerImageName:テンプレートとなるコンテナイメージ、「NanoServer」を指定
-SwitchName:コンテナが接続する仮想スイッチ、”Get-VMSwitch”で確認

New-Containerコマンドに「-RuntimeType HyperV」とスイッチを付けるだけで、Hyper-Vコンテナが作成されます。RuntimeTypeはNew-Containerコマンド実行時以外にも、既存のコンテナに対して停止中にSet-Containerコマンドで設定することができます。ただし、「-RuntimeType HyperV」と設定してコンテナとして起動できるのでは、コンテナOSイメージがNanoServerから作成もしくは派生したコンテナに限定されています。

コンテナOSイメージのWindowsServerCoreから作成されたコンテナは、Hyper-Vコンテナとして設定したとしても、起動時にエラーとなってしまいます。その反対に、コンテナOSイメージのNanoServerから作成されたコンテナは、通常のコンテナとして設定した場合、起動時にエラーとなってしまいます。

Windows Server 2016 Technical Preview 4(TP4)の時点では、下記の組み合わせに限定されているようです。

PS C:\> Set-Container MyHPVContainer -RuntimeType Default
PS C:\> Start-Container MyHPVContainer

Start-Container : 'MyHPVContainer' failed to start.
'MyHPVContainer' failed to initialize: The operating system of the container
does not match the operating system of the host. (0xC0370101).
'MyHPVContainer' failed to start. (Container ID
B0CBFDE9-E3AC-4CD2-B87C-11392B9C63DD)
'MyHPVContainer' failed to initialize: The operating system of the container
does not match the operating system of the host. (0xC0370101). (Container ID
B0CBFDE9-E3AC-4CD2-B87C-11392B9C63DD)
At line:1 char:1
+ Start-Container MyHPVContainer
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Start-Container], Virtualizat
ionException
+ FullyQualifiedErrorId : OperationFailed,Microsoft.Containers.PowerShell.
Cmdlets.StartContainer

Hyper-VコンテナをRuntimeType Default として起動した場合エラーとなる。

コンテナOSイメージ   - RuntimeType
WindowsServerCore - Defalt
NanoServer      - HyperV
(TP4時点でのコンテナOSイメージとRuntimeTypeの組合せ)

コンテナのRuntimeTypeはGet-ContainerコマンドでRuntimeType列を指定することで確認ができます。

PS C:\> Get-Container | Select Name, State, RuntimeType

Name State RuntimeType
---- ----- -----------
MyHPVContainer Off HyperV
MyContainer Off Default

プロセス分離の確認

Hyper-Vコンテナは通常のコンテナとは異なり、ホストや他のコンテナから隔離された状態にあると述べました。実際にHyper-Vコンテナの稼働状態を確認してみましょう。

Hyper-Vコンテナが起動すると、仮想マシンワーカープロセス“vmwp.exe”が起動します。これは、Hyper-V上で仮想マシンを作成して起動した場合と同様のプロセスとなります。Hyper-VコンテナはHyper-V上の仮想マシンと同様に、仮想マシンワーカープロセス内で隔離された状態で稼働しています。Hyper-Vコンテナと通常のコンテナを起動して、タスクマネージャーで確認してみると、Hyper-Vコンテナのために1つだけ仮想マシンワーカープロセスが起動しています。

(UserNameとContainerIDが同じ)">
タスクマネージャーで確認するとvmwp.exeがHyper-Vコンテナのために起動している
(UserNameとContainerIDが同じ)

このように、Hyper-Vコンテナは仮想マシンと同様レベルで隔離された状態で稼働するより、安定したセキュアなコンテナ運用を可能にしています。

IISのインストール

Hyper-Vコンテナが作成できたので、次にIISをインストールしてHyper-VコンテナでWebサイトを公開できるようにしましょう。Hyper-VコンテナはNanoServerベースのコンテナなので、既存の状態では何もない状態です。WindowsServerCoreベースのコンテナとは異なり 【イベント開催中!】 TRICK STAR トリックスター レーシングスリップオンマフラー ブラックメッキ Z900RS、機能と役割の追加からIISの機能を有効化すればよい、というわけにはいきません。NanoServerに対して、Nano Server IIS パッケージを追加する必要があります。

・共有フォルダの作成
まずは、Nano Server IIS パッケージをNanoServerにインストールする準備として、コンテナホストとHyper-Vコンテナ間で共有フォルダを利用してファイルのやりとりを可能にします。

コンテナホスト上に共有フォルダとして”C:\Share”フォルダを作成します。さらにサブフォルダとして”en-us”フォルダを作成します。次に、Hyper-Vコンテナが停止している状態で、Add-ContainerSharedFolder コマンドを使って共有フォルダを作成します。

コンテナホスト上でPowerShellを使って簡単に設定が可能です。

PS C:\> New-Item -Type Directory C:\Share\en-us

Directory: C:\Share

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/15/2016 8:27 PM en-us

PS C:\> -ContainerSharedFolder -ContainerName MyHPVContainer -SourcePath C:\Share -DestinationPath C:\IISInstall

ContainerName SourcePath DestinationPath AccessMode
------------- ---------- --------------- ----------
MyHPVContainer C:\Share C:\IISInstall ReadWrite

- ContainerName:コンテナ名
- SourcePath:共有フォルダとなるコンテナホスト上のフォルダパス
- DestinationPath:Hyper-Vコンテナ上での共有フォルダパス

・Nano Server IIS パッケージをコピー
共有フォルダにNano Server IIS パッケージファイルをコピーします。Nano Server IIS パッケージファイルは、Windows Server 2016 TP4 インストール メディア(ISOファイル)の NanoServer\Packages ディレクトリにあります。

IISのインストールに必要なファイルは2つ。
①Microsoft-NanoServer-IIS-Package.cabをNanoServer\PackagesからコンテナホストのC:\Share にコピーします。
②NanoServer\Packages\en-us\Microsoft-NanoServer-IIS-Package.cab コンテナホストのC:\Share \en-usにコピーします。

・unattend.xmlの作成
コンテナホストのC:\Share内にNanoServer用のインストール設定ファイルを作成します。下記のテキストをコピーしてC:\Share\unattend.xmlとして保存します。

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<servicing>
<package action="install">
<assemblyIdentity name="Microsoft-NanoServer-IIS-Package" version="10.0.10586.0" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" />
<source location="c:\iisinstall\Microsoft-NanoServer-IIS-Package.cab" />
</package>
<package action="install">
<assemblyIdentity name="Microsoft-NanoServer-IIS-Package" version="10.0.10586.0" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="en-US" />
<source location="c:\iisinstall\en-us\Microsoft-NanoServer-IIS-Package.cab" />
</package>
</servicing>
</unattend>

共有フォルダ内は以下のファイル構成となっています。

C:\Share
├-en-us
│  ├-Microsoft-NanoServer-IIS-Package.cab

├-Microsoft-NanoServer-IIS-Package.cab
└-unattend.xml

・IISパッケージのインストール
共有フォルダの設定が完了したら、Hyper-Vコンテナを起動します。Enter-PSSessionコマンドでHyper-Vコンテナ内からPowerShellでIISパッケージのインストールを実行します。

PS C:\> Start-Container MyHPVContainer

PS C:\> Enter-PSSession -ContainerName MyHPVContainer -RunAsAdministrator

[MyHPVContainer]: PS C:\windows\system32\config\systemprofile\Documents> cd C:\

[MyHPVContainer]: PS C:\>

共有フォルダの中身を確認します。

[MyHPVContainer]: PS C:\> ls C:\IISInstall

Directory: C:\IISInstall

Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/13/2016 12:00 AM en-us
-ar--- 10/30/2015 3:19 AM 1922047 Microsoft-NanoServer-IIS-Packa
ge.cab
-a---- 2/13/2016 12:01 AM 791 unattend.xml

共有フォルダ内に、先ほどコピーしたNano Server IIS パッケージファイルが確認できます。次のコマンドでインストールを実行します。

[MyHPVContainer]: PS C:\> dism /online /apply-unattend:C:\IISInstall\unattend.xml

Deployment Image Servicing and Management tool
Version: 10.0.10586.0

Image Version: 10.0.10586.0


[ 1.0% ]

[===== 10.1% ]

[=============== 26.2% ]

[=============== 26.2% ]

[================== 32.5% ]

[====================== 38.7% ]

インストールが完了したらIISのサービスを起動します。

[MyHPVContainer]: PS C:\> Net start w3svc
The World Wide Web Publishing Service service is starting.
The World Wide Web Publishing Service service was started successfully.

これでIISのインストールが完了しました。

コンテンツの書き換え

せっかくなので、Topページを書き換えてみましょう。

[MyHPVContainer]: PS C:\> Del C:\inetpub\wwwroot\iisstart.htm

[MyHPVContainer]: PS C:\> "Hyper-Vコンテナからこんにちは!" > C:\inetpub\wwwroot\index.html

ブラウザで確認

ブラウザでWebサイトを確認します。コンテナのIPアドレスを確認して、PwerShellセッションを終了します。

[MyHPVContainer]: PS C:\> ipconfig

Windows IP Configuration


Ethernet adapter Ethernet:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::989a:eb2f:dc54:31e4%3
IPv4 Address. . . . . . . . . . . : 172.16.0.2
Subnet Mask . . . . . . . . . . . : 255.240.0.0
Default Gateway . . . . . . . . . : 172.16.0.1

[MyHPVContainer]: PS C:\> Exit

PS C:\>

コンテナホスト上のブラウザでHyper-VコンテナのWebサイトを確認します。

NATによりWebサイトの公開方法は、「Windows Server 2016 Technical Preview 4 でIISコンテナを作ってみる」で紹介していますので、参考にしてください。

コンテナイメージの作成

せっかく構築したIISをインストールしたHyper-Vコンテナなので、コンテナイメージとして保存しておきましょう。

コンテナを停止した状態で、New-ContainerImageコマンドを実行します。

PS C:\> Stop-Container MyHPVContainer

PS C:\> New-ContainerImage MyHPVContainer -Publisher "WIN1" -Name "HPVIIS" -Version 1.0


Name Publisher Version IsOSImage
---- --------- ------- ---------
HPVIIS CN=WIN1 1.0.0.0 False

コンテナを利用するメリットの1つとして、一度コンテナイメージとして保存してしまえば、いつでもすぐにIISインストール済みのHyper-Vコンテナを作成し、

、利用することが可能となります。コンテナイメージの元となったコンテナは削除することは可能ですが、例えば、保存したコンテナイメージから新たにコンテナを作成した場合は、親となるコンテナイメージを削除してしまうと、コンテナが起動できなくなりますので、注意が必要です。


以上、Hyper-Vコンテナの概要と、実際にIISをインストールしたHyper-Vコンテナを作成して、コンテナイメージとして保存するまでを紹介しました。

現時点ではPowerShellのコマンドベースの操作となっていますが、一度コンテナイメージを作ってしまえば、あとは簡単にコンテナとして利用できるので、ぜひチャレンジしてみてください。

樋口 勝一

2輪 AP ブレーキパッド 入数:2キャリパー分(4枚) フロント ZZT230/ZZT231 カワサキ KRT750A GYL20W Teryx4 750 4X4 750cc 2012年~2013年

GMOインターネット株式会社

1999年6月GMOインターネットに入社。Windowsを用いたホスティング事業の立ち上げの際、サービス開発からその後の保守・運用まで1人で担当。2010年には「お名前.comWindowsデスクトップ」をリリースし、マイクロソフト社と強い信頼関係を構築。2007年から連続で「マイクロソフトMVPアワード」を受賞し、Windowsのスペシャリストとして活躍。

執筆者一覧

初めてのWindows Azure Pack本が発売

Windows Azure Pack プライベートクラウド構築ガイド
GMOインターネット株式会社 樋口 勝一 著

Category

{yahoojp} {gmo.jp}
{yahoojp}jpprem01-zenjp40-wl-zd-39871