TechReport

技術者情報

ソリューション

2015年11月18日(水)公開

第188回

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

Windows Server Containerの仕組みやメリット、デメリット

2015年8月にリリースされたWindows Server 2016 Technical Preview 3(TP3)で初めてサポートされた注目すべき新機能、Windows Server コンテナ(Windows Server Container)技術について、その仕組みやメリット、デメリットなどを探っていきます。

記事INDEX

Windows Server コンテナ

Windows Server 2016へのコンテナ技術の搭載は、2014年末に明らかにされていましたが、TP3のリリースでようやく「Windows Server Containers」も同時に提供され、Windows Server上でコンテナ技術が実際に利用できるようになりました。Microsoft Azureでも、TP3のリリースとともに仮想マシンのテンプレートとして、プレビュー版がいち早く提供されています。

Microsoft Azureで利用できるコンテナ
Microsoft Azureで利用できるコンテナ

参考:TP3ダウンロード(https://technet.microsoft.com/ja-jp/evalcenter/dn781243.aspx



そもそも、「コンテナ」とは一体どういうものなのでしょうか?

マイクロソフトの公式サイトを見てみると、以下のように説明されています。



"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がまず思いつくところです。Hyper-Vの上では、仮想マシンが独立したメモリ、CPU、ディスク領域などを搭載して稼働することとなります。このため、1つ1つの仮想マシンは、他の仮想マシンやホストサーバーに影響を与えることなく、また、与えられることなく稼働することができるようになっています(アイソレーション)。仮想マシンにはOSがきちんとインストールされ、1つの完結したPCとして認識されています。

Hyper-Vによる仮想化
Hyper-Vによる仮想化


TP3で利用可能となった「Windows Server コンテナ」では、Hyper-Vの代わりに、コンテナエンジンがWindows Server上でサービス提供を行い、その上のコンテナ内で様々なアプリケーションが稼働することになります。各コンテナにはOSやアプリケーション実行に必要なライブラリファイルなどは含まれず、アプリケーション本体のみとなり、アプリケーションとOSの分離が実現されています。必要なのは、コンテナのアプリケーションの実行に必要なCPUリソース、ディスク領域とメモリ領域となります。

これによって、OSやアプリケーションの実行に必要なライブラリファイルなどは共通リソースから参照されることになり、ハードディスク領域やメモリ領域の節約になります。コンテナの起動自体は、BIOS、OSのブートなどが不要なため、アプリケーション単体が起動するためだけの短時間で完了することとなります。コンテナごとのアプリケーションによるファイルの変更やレジストリの変更内容は、コンテナごとのSandboxと呼ばれる領域に随時書き込まれて保存されていきます。

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

コンテナによる仮想化
コンテナによる仮想化
コンテナの詳細
コンテナの詳細
Hyper-V コンテナ

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

Hyper-Vコンテナのイメージ
Hyper-Vコンテナのイメージ
Dockerのサポート

Windows Serverが提供するコンテナサービスは、PowerShellを使って管理することができます。さらに、コンテナ技術のオープンソースDockerをサポートしています。Windows Serverに親しんでいる管理者はPowerShellで、既存のDocker利用者はこれまでと同様にWindows Server コンテナの管理を行うことができます。TP3では、PowerShellで作成したコンテナはPowerShellで、Dockerコマンドで作成したコンテナはDockerコマンドでのみ操作が可能となっていますが、正式リリース時には、1つのコンテナに対して、PowerShellでもDockerコマンドでも操作が可能になると予想されます。管理方法だけではなく、Linux文化で培われてきたDockerコンテナですが、LinuxのコンテナをWindows Server上で利用することができれば、すでに公開されている様々な既存のコンテナリソースをそのままWindows Server コンテナで利用することのメリットはとても大きいです。

しかし、現時点では、Linux上で展開しているコンテナと、Windows Server上のコンテナにはそもそもOSの違いという大きな問題があり、果たして互換性がとれるのか?といった疑問が残ります。現在マイクロソフトはWindowsとオープンソース(OSS)とのスムーズな情報やリソースのやり取りを実現するための取り組みに力を注いでいる最中です。いずれこれらOSの違いという大きな壁も取り払われるとの願いも込めつつ、予想します。

コンテナのメリット

Hyper-Vを使った仮想マシンを利用することで、ほぼ完全なリソースの分離が完成されました。これにより、よりセキュアで、効率的なシステム構築が可能となります。次にマイクロソフトは、システムの最小化を目指しています。同様のサービス、アプリケーションを完全分離した状態で、できるだけ小さくすることで、リソースの節約、処理速度の改善、セキュリティの向上がもたらされます。

まとめられるところは1つにまとめて、うまくシステムの因数分解を実現することが、システムをより小さくするためには必要です。コンテナ技術によりOSなどの共通通部分を上手に保護しつつ共通化して、アプリケーションをきちんと分離することのできるようになります。

システムの因数分解
システムの因数分解

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



Visual Studio 2015 Tools for Docker - August Preview

コンテナ技術はより小さい構成でアプリケーションプラットフォームを構築できるため、作る、配置する、テストする、公開する、破棄するといった一連のオペレーションに要する時間が、格段に短くなります。これまで、サーバー管理者の手を煩わせていた作業でさえ、コンテナ技術を利用すれば、開発者自身が簡単に行うことができるようになります。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は絶対に必要なプラットフォームとなります。

次世代仮想化プラットフォームの予想
次世代仮想化プラットフォームの予想
コンテナ技術がもたらすもの

マイクロソフトは、パブリッククラウドサービスのMicrosoft Azureとオンプレミスで展開するプライベートクラウドの壁を取り除こうとしています。プライベートクラウドとMicrosoft Azureが同じシステムで構成されることで、仮想マシンやデータを簡単に自由にやり取りできるようになり、必要に応じてクラウドを「パブリック~プライベート」と使い分けることで、より効率的で安全なシステムが構築されます。

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

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

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

Windows Serverのコンテナ技術は、始まったばかりです。まずは実際にWindows Serverコンテナに触れてみるところから始めてみましょう。新しくなったマイクロソフトとともに、Windows Serverも新しく生まれ変わろうとしています。是非、お試しください。

樋口 勝一

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

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

執筆者一覧

初めてのWindows Azure Pack本が発売

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

本書は、Windows Azure PackとHyper-Vを利用し、企業内IaaS(仮想マシン提供サービス)を構成するための、IT管理者に向けた手引書です。試用したサーバーは、最小限度の物理サーバーと仮想マシンで構成しています。Windows Azure Packに必要なコンポーネントのダウンロード、実際にプライベートクラウド構築する過程を、手順を追って解説しています。これからプライベートクラウドの構築を検討するうえで、作業負担の軽減に役立つ一冊です。

詳細はこちら