前回は、Windows Server 2016 TP3の新機能「Containers」を有効化して、サーバーをコンテナーホストとしてセットアップするところまでを説明しました。今回は、Containersのネイティブな管理方法で「Windows Serverコンテナー」を作成し、登場したばかりで謎の多い新しいテクノロジついて想像を巡らせます。
Windows Server 2016の新機能である「Containers」および「Windows Serverコンテナー」は、Windows Server 2016 Technical Preview 3(TP3)で初めてお披露目されました。もう一つの新機能「Hyper-Vコンテナー」の提供も予定されていますが、TP3時点では提供されていません。
ContainersおよびWindows Serverコンテナーとしては初めてのプレビュー版となるため、まだ実装されていない機能や既知の不具合も多数存在します。この機能を試してみようという方は、以下のWebサイトでプレビュー版の制限事項や既知の問題について一通り目を通しておくことをお勧めします。
例えば、「Commands sporadically fail -- try again」の項で説明されている通り、コンテナー内でのコマンドの実行は、正しいコマンドラインを入力してもエラーで失敗することがあります(特に1回目の実行時)。その場合には、同じコマンドラインを再度実行し直すことで成功するはずです。
また、「Windows Server Containers are starting very slowly」の項で説明されているように、マルウエア対策ソフトの影響でコンテナーの起動に時間がかかる場合があります。
このWebサイトには既知の問題として記載されていませんが、前回説明したように、日本語環境ではシステムロケールの関係でエラーが発生することがあります。実際に試してみる場合は、システムロケールを「英語(米国)」(en-us)に変更してから行ってください。
Windows Serverコンテナーを実行するための「コンテナーホスト」は、Windows Server 2016 TP3が稼働する物理コンピューターや仮想マシン、Microsoft Azure仮想マシンなどのIaaS(Infrastructure as a Service)型のクラウド環境上にセットアップすることができます。
コンテナーホストは、Windows Server 2016のServer Core環境とGUI(Graphical User Interface)環境のどちらにでもセットアップすることができます。Windows Server 2016 TP3ではサポートされていませんが、将来的には「Nano Server」もコンテナーホストにできるようになる予定です。
今回は、64ビット版Windows 10の「クライアントHyper-V」(Pro、Enterprise、Educationエディションで利用できます)上の仮想マシンに、Windows Server 2016 TP3のServer Core環境をインストールして、前回説明した方法でコンテナーホストとしてセットアップしました(画面1)。
Windows 10は「192.168.10.0/24」のIPサブネット上にあり、コンテナーホストとしてセットアップした仮想マシンには「192.168.10.24」が割り当てられています。このコンテナーホストのIPアドレス「192.168.10.24」を覚えておいてください。
前回説明したように、コンテナーホストのセットアップ用スクリプト「ContainerSetup.ps1」を実行すると、Containers機能のインストール、NAT(ネットワークアドレス変換)によるネットワーク接続を提供する仮想スイッチ「Virtual Switch」のコンテナーへの作成、Windows ServerコンテナーのベースOSイメージのダウンロードとインストール、Dockerバイナリのダウンロードとサービスのインストールが行われます。
スクリプトで作成された仮想スイッチは、以下のWindows PowerShellコマンドレットで確認できます。
Get-VMSwitch
Hyper-Vに触れた経験のある方なら気が付くと思いますが、スクリプト内の仮想スイッチを作成するコマンドレット(New-VMSwitch)は、Hyper-V仮想マシン用の仮想スイッチ(Hyper-V拡張可能スイッチ)と共通です。現行バージョンのHyper-Vでは「外部(External)」「内部(Internal)」「プライベート(Private)」の3種類の仮想スイッチを作成できますが、コンテナー用に構成された仮想スイッチは「NAT」という新しい種類であることが分かるでしょう。このネットワーク機能については、次回詳しく説明します。
また、Windows ServerコンテナーのベースOSイメージは、次のPowerShellコマンドレットで確認できます。「WindowsServerCore」という名前のイメージが利用可能になっているはずです。
Get-ContainerImage
このイメージは「ContainerSetup.ps1」によりGitHubからWIM形式(ContainerBaseImage.wim)でダウンロードされ、「Install-ContainerOsImage」コマンドレットでコンテナーホストにインストールされます。
コンテナーホストのCドライブを調べてみると「C:\ProgramData\Microsoft\Windows\Image」フォルダーの下に「CN=Microsoft_WindowsServerCore_10.0.10514.0」(発行者名_イメージ名_バージョン)という名前でフォルダーが作成されており、Windows ServerコンテナーのベースOSイメージが展開されていました(画面2)。フォルダーツリーのファイルサイズは約9GBになります。
「Files」サブフォルダー下には、通常インストールしたWindowsと同様のフォルダーツリーが存在します。このフォルダーツリーは、「ContainerBaseImage.wim」イメージの中身を展開したもののようです。
また、「Hives」サブフォルダー下には5つのレジストリファイルとみられる「DefaultUser_base」「Sam_base」「Security_base」「Software_base」「System_base」および、これらのファイルのコピー(_Copy)が存在します。ファイルサイズやタイムスタンプから判断すると、これらのレジストリファイルは「Files」サブフォルダー内の「\Windows\System32\Config」にあるレジストリファイル「DEFAULT」「SAM」「SECURITY」「SOFTWARE」「SYSTEM」のコピーのようです。
さらに、「C:\ProgramData\Microsoft\Windows\Image」フォルダーには、「blank.vhdx」というVHDXファイルも存在します。このVHDXファイルは、ファイルサイズが20GBの容量可変タイプです。
前出の画面2では、コンテナーホストの「C:\ProgramData\Microsoft\Windows\Hyper-V\Containers」フォルダーを開いています。このフォルダー、現在は空っぽの状態です。これも覚えておいてください。
LinuxベースのDockerであれば「docker pull」コマンドでイメージをDocker Hub(Docker標準のリポジトリ)からダウンロードするという手順で、Linuxコンテナーやアプリケーションを含むコンテナーのDockerイメージを取得します。
しかし、現時点でWindowsコンテナーとして利用可能なのは、Server CoreベースのWindows Serverコンテナーだけであり、Docker Hubでは提供されていません。代わりに、「ContainerSetup.ps1」がGitHubからベースOSイメージのダウンロードし、インストールまでを行ってくれます。将来、Docker HubからWindows ServerコンテナーやHyper-Vコンテナーのイメージをダウンロードできるようになるのかは、現時点では明らかになっていません。
Copyright © ITmedia, Inc. All Rights Reserved.