Windows Server 2016 Technical Preview 3 で見えたコンテナ技術

2015年9月11日(金)
樋口 勝一

2014年末から始まった次期Windows ServerのTechnical Previewも、今回で3回目のリリースとなります。すでに、2015年の4月の特集「2015年仮想化プラットフォームの新事情」において、TP2のHyper-Vについて解説しましたが、今回は、2015年8月19日にリリースされたWindows Server 2016 Technical Preview 3で初めてサポートされた、Windowsコンテナ(Windows Container)技術について、その仕組みやメリット、デメリットなどを探っていきます。

Windowsコンテナ初のリリース

TP3での注目ポイントは、なんと言っても、満を持してサポートされたコンテナ技術です。Windows Server 2016へのコンテナ技術の搭載は、2014年末に明らかにされていますが、TP3のリリースに合わせて「Windows Server Containers」も同時に提供され、Windows Server上でコンテナ技術が実際に利用できるようになりました(*1)。

[*1] WINDOWS CONTAINERS についての詳細は、以下のURLを参照してください。
https://msdn.microsoft.com/en-us/virtualization/windowscontainers/containers_welcome

IT技術者の方々の多くが、コンテナ技術のサポートを心待ちにしていたのではないでしょうか。ダウンロード先を以下に示します。

プレビュー版のダウンロードURL
https://technet.microsoft.com/ja-jp/evalcenter/dn781243.aspx

Microsoft Azureでも、TP3のリリースとともに仮想マシンのテンプレートとして、プレビュー版がいち早く提供されています(図2)。

コンテナとは?

そもそも、「コンテナとは?」という話は、これまでDockerというキーワードでたくさん情報が出ています。本格的なコンテナ技術、Dockerについての概論的なお話は博識な方々にお任せするとして、Windows技術者の観点から、見た、感じた、コンテナ技術についての理解ということでお話してみたいと思います。

先に紹介した、“Windows Containers についての詳細”(https://msdn.microsoft.com/en-us/virtualization/windowscontainers/containers_welcome)を見てみると、コンテナは、以下のように説明されています。

"Basically, a container is an isolated place where an application can run without affecting the rest of the system and without the system affecting the application. Containers are the next evolution in virtualization."

「アプリケーションがシステムの他の部分に影響を与えることなく、また、アプリケーションに影響を与えるようなシステム無しで実行することができる独立した領域です。コンテナは仮想化の次の進化と言えます」。

この説明によると、コンテナ技術は、仮想化の進化系ということですが、なかなかひと言で言い表すのは難しいようです。次期Windows Serverで提供されるコンテナ技術を筆者なりの解釈でまとめてみました。

Hyper-Vによる仮想化

Windows Serverでは、Hyper-Vというハイパーバイザーを実装しています。Hyper-Vの上では、仮想マシンが独立したメモリ、CPU、ディスク領域などを搭載して稼働することとなります。このため、1つ1つの仮想マシンは、他の仮想マシンやホストサーバーに影響を与えることなく、また、与えられることなく稼働することができるようになっています。仮想マシンにはOSがきちんとインストールされ、1つの完結したPCとして認識されています。

コンテナによる仮想化(Windows Server コンテナ)

TP3で利用可能となった「Windows Server コンテナ」では、Hyper-Vの代わりに、コンテナエンジンがWindows Server上でサービス提供を行い、その上のコンテナ内で様々なアプリケーションが稼働することになります。各コンテナにはOSやアプリケーション実行に必要なライブラリファイルなどは含まれず、アプリケーション本体のみとなり、アプリケーションとOSの分離が実現されています。必要なのは、コンテナのアプリケーションの実行に必要なCPUリソース、ディスク領域とメモリ領域となります。これによって、OSやアプリケーションの実行に必要なライブラリファイルなどは共通リソースから参照されることになり、ハードディスク領域やメモリ領域の節約になります。コンテナの起動自体は、BIOS、OSのブートなどが不要なため、アプリケーション単体が起動するためだけの短時間で完了することとなります。コンテナごとのアプリケーションによるファイルの変更やレジストリの変更内容は、コンテナごとのSandboxと呼ばれる領域に随時書き込まれて保存されていきます。

コンテナ技術のイメージとしては、ちょうど仮想マシンのチェックポイントを作成するような感覚で、元のOSイメージからどんどん枝分かれして、様々なコンテナごとに、小さいスナップショットが作られてゆくような感じと考えています。作成された様々なコンテナは、ローカルリポジトリという場所に保存して、必要なときに呼び出して再利用することが可能です。

コンテナによる仮想化(Hyper-V コンテナ)

TP3には含まれていませんが、マイクロソフトはもう1つのコンテナ、「Hyper-V コンテナ」を提供する予定です。「Hyper-V コンテナ」には、Windowsカーネル自体が含まれており、Hyper−V上で、コンテナサービスを仮想マシンと同様に個別に完結した形態で提供することができます。これにより、「Windows Server コンテナ」では共通部分であった、コンテナサービス自体を提供するOSまでも、仮想化によって完全独立して提供できるようになります。Hyper-Vコンテナは、ユーザー環境を完全に隔離できるので、これから登場するであろう、コンテナをサービスとして提供するようなサービスプロバイダーにとっては、よりセキュアなコンテナサービスの提供が可能となります。

コンテナの管理・Dockerのサポート

Windows Serverが提供するコンテナサービスは、PowerShellを使って管理できます。さらに、コンテナ技術のオープンソースDockerをサポートしています。Windows Serverに親しんでいる管理者はPowerShellで、既存のDocker利用者はこれまでと同様にWindows Server コンテナの管理を行うことができます。残念なことに、同じコンテナサービス、Dockerのクライアントツールを利用したとしても、Linux上に展開されているDockerコンテナと、Windows Server コンテナには互換性がありません。

MICROSOFT AZUREのCTO MARK RUSSINOVICHのブログより
https://azure.microsoft.com/blog/2015/08/17/containers-docker-windows-and-trends/

さらに、マイクロソフトは、コンテナ技術はアプリケーション開発者が最大の恩恵を受けるべきとの考えで、現時点ではプレビュー版ですがVisual Studio用にコンテナ管理のDockerツールのアドインも提供しています。

VISUAL STUDIO 2015 TOOLS FOR DOCKER - AUGUST PREVIEW
https://visualstudiogallery.msdn.microsoft.com/0f5b2caa-ea00-41c8-b8a2-058c7da0b3e4

コンテナのメリット

Hyper-Vを使った仮想マシンを利用することで、ほぼ完全なリソースの分離が完成されました。これにより、よりセキュアで、効率的なシステム構築が可能となります。次にマイクロソフトは、システムの最小化を目指しています。同様のサービス、アプリケーションを完全分離した状態で、できるだけ小さくすることで、リソースの節約、処理速度の改善、セキュリティの向上がもたらされます。まとめられるところは1つにまとめて、うまくシステムの因数分解を実現することが、システムをより小さくするためには必要です。コンテナ技術によりOSなどの共通通部分を上手に保護しつつ共通化して、アプリケーションをきちんと分離することのできるようになります。

コンテナ技術の恩恵は、サーバー管理者だけではなく、アプリケーション開発者にももたらされます。より小さい構成でコンテナを作成できるため、作る、配置する、テストする、公開する、破棄するといった一連のオペレーションに要する時間が、格段に短くなります。これまで、サーバー管理者の手を煩わせていた作業でさえ、コンテナ技術を利用すれば、開発者自身が簡単に行うことができるようになります。Visual Studio からコンテナを管理できるメリットは、まさにここにあります。コンテナ技術は、アプリケーションの開発~運用~展開という一連の流れの中で、これまでの障害であった開発者、運用者の業務間での隔たりを、できるだけ小さくできる可能性があります。開発者と運用者が連携してアプリケーション開発を行うDevOpsの足掛かりとなるものです。

コンテナのデメリット

よいことずくめのように思えるコンテナ技術ですが、現在のところいくつかの懸念事項が考えられます。1つはWindows Server コンテナで提供できるアプリケーションのプラットフォームが、すべてWindows Serverベースのものに限られるということです。Hyper-V上の仮想マシンでは、Windows OSだけではなく、Linuxもサポートされており、ユーザーが自由に使い分けることができます。ですが、Windows Server コンテナとLinux上のコンテナとは互換性がありません。当初Windows ServerがDockerをサポートと聞いたときは、LinuxとWindows間をコンテナが自由に行き来できるもと早合点してしまいましたが、そこはやはりOS依存のコンテナ技術ということで、完全互換は難しいということです。Dockerコンテナを使いたい時には、Linuxが必要ということになります。

もう1つは、コンテナの優位性が一般に認識されていないということです。Hyper-Vをはじめ、すでに仮想化技術はかなり作りこまれ、実使用にもほぼ満足いく結果を得られるようになり、安定期に入ったものと考えられます。こういった市場の中で、新しい仮想化技術を積極的に採り入れるということはなかなか難しく、コンテナ技術の存在が広く認知され、利用されるようになるには時間がかかります。コンテナ技術とはどういったものか、どういった場合に使うべきものかを学ぶ必要があります。コンテナ技術でなければできないこと、コンテナ技術を使う有意性を見つけ出して、既存の仮想システムにコンテナ技術をうまく採り入れ、シフトしていく必要があります。

クラウドOSとコンテナ技術

マイクロソフトは、これまでもWindows Server Coreと呼ばれるGUIを排除してスリム化したWindows Serverを提供してきました。Windows Server 2016では、Windows Server Coreよりもさらにスリム化したNano Serverを提供する予定です。Nano Serverは利用目的ごとにいくつかのテンプレートが用意されており、Hyper-VやIISといったテンプレートには必要最小限のライブラリファイルしか含まれていません。OSが必要とするディスク容量やメモリ容量(フットプリント)が桁違いに小さくなりました。攻撃対象となるライブラリを必要最小限とすることで、よりセキュアにし、セキュリティアップデート自体の回数を減らすことで、OSの稼働率を上げることが可能になります。必要とするリソースも極小となるため、起動や展開が非常に高速になります。Windows Server 2016の登場で、このNano Serverとコンテナ技術が組み合わされると何が出来上がるのでしょうか。必要最小限のリソースの中で、より安全に、より速く、より簡単に利用できるシステムが出来上がります。Microsoft Azureというクラウドサービスを展開するマイクロソフト自身にとっても、Windows Server 2016は絶対に必要なプラットフォームとなります。

Azure Stackの提供

マイクロソフトは、パブリッククラウドサービスのMicrosoft Azureとオンプレミスで展開するプライベートクラウドの壁を取り除こうとしています。そのための施策として、Microsoft Azureで提供しているシステムをそのまま、プライベートクラウドのコントーラーとして利用できるようにする、Azure Stackを提供する予定です。

Azure Stackは、パブリッククラウドであるMicrosoft Azure と同じテクノロジー、システムで構成されたクラウドコントローラーです。既存のWindows Azure PackはMicrosoft AzureとWebインターフェースでは同様の見た目と機能を提供しています。ですが、Service Provider FoundationやSystemCenter Virtual Machine Managerが必須コンポーネントとなっており、これらの機能を組み合わせることによって、Microsoft Azureと同様の機能を提供しています。そのため、システム構成が複雑になっており、インストールや構築がなかなか難しいものとなっています。また、Windows Azure PackではMicrosoft Azureのすべてのサービス、機能を提供しているわけではなく、IaaSやPaaSなどのいくつかの主要サービスを、SystemCenterなどを利用して、模倣することで提供しています。そのため、ライセンス費用(System Centerなど)が別途必要となり、コストのかかるシステム構成となっていました。Azure Stackでは見た目だけではなく、使用するシステムもすべてMicrosoft Azureと同様のものが利用できることになります。いくつかのコンポーネントを組み合わせることによる複雑化されたシステム構成が、Azure Stackという1つのシステムで実現することになります。Windows Azure Packではこれまで提供できていなかった、様々なサービスや機能がAzure Stackでは追加されて利用できるようになるはずです。

プライベートクラウドとMicrosoft Azureが同じシステムで構成されることで、仮想マシンやデータを簡単に自由にやり取りできるようになり、必要に応じてクラウドを「パブリック<−>プライベート」と使い分けることで、より効率的で安全なシステムが構築されます。

コンテナ技術のもたらすもの

マイクロソフトが推進するハイブリッドクラウドを実現するうえで、今回解説したコンテナ技術は、ハイブリッドクラウドの運用効率を向上するための1つの手段と言えるでしょう。仮想マシンよりさらに小さいコンテナであれば、最少の時間でパブリッククラウドとプライベートクラウドを行き来することができるからです。

Windows Server 2016で構成されたクラウドサービスは、多くのメリットが期待できます。Windows Serverコンテナは場所を選びません。開発者は、サービス管理者の手を煩わせることなくアプリケーションを開発してテスト、展開することができるようになります。サービス管理者は、作成したアプリケーションを必要に応じて自由に配置することがきます。その結果、アプリケーションの開発効率を上げるとともに、余計なストレスを削減することもできるでしょう。Windows Server 2016は、これまでの開発・サービス提供の多くの課題を解決できる可能性を秘めているのではないかと、個人的には期待しています。

さらに、コンテナ技術はサーバープラットフォームだけに変革をもたらすだけではありません。コンテナ技術はWindows 10をベースにPCやスマートフォン、組み込みOSといったクライアントOSの分野にも革新をもたらします。これまで、アプリケーションをインストールといった作業は、レジストリに何かを書き込んだり、ファイルを作成したりと、ベースとなるOSに多かれ少なかれ影響を及ぼしていました。そのため、OSが不安定となり、いわゆる重くなったり、OSがクラッシュしたりということもしばしばありました。コンテナ技術を使ったアプリケーションの配布であれば、大切なOS領域はきちんと保護されたうえで、アプリケーションをインストールして利用することができます。問題のある場合は簡単にコンテナとして提供されているアプリケーションを削除するだけで、元通りの状態に戻すことができるようになります。アプリケーション自体のアップデートも、元のコンテナから派生した新しいコンテナを提供するだけなので、配布自体も非常にシンプルな方法で可能となります。

Windows Serverのコンテナ技術は、これから始まります。まずは、プレビュー版をダウンロードして実際にコンテナ環境を構築してみたり、手っ取り早くMicrosoft Azureを利用したり、実際にWindows Serverコンテナに触れてみるところから始めてみましょう。新しくなったマイクロソフトとともに、Windows Serverも新しく生まれ変わろうとしています。新しいテクノロジーには、本当にわくわくさせられます。是非、お試しください。

GMOインターネット株式会社 Windowsソリューション チーフエグゼクティブ

GMOインターネットでWindowsのサービス開発運用に関わって16年、数年単位で進化し続けるMicrosoftのWindowsは新しもの好きにはたまらない製品です。自動販売機に見たことのないジュースがあれば、迷わすボタンを押します。そんなチャレンジが僕の人生を明るく、楽しくしてくれています。

お名前.com デスクトップクラウド
http://www.onamae-desktop.com/

お名前.com VPS Hyper-V
http://www.onamae-server.com/vps/hyperv/

連載バックナンバー

技術解説

より速く、より小さく、より軽く、 新基盤 Nano Server (前編)

2015/10/9
次期Windows Serverとなる予定の「Windows Server 2016」には注目されるべき新しいテクノロジーがいくつか実装される予定となっています。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています