de:code 2015 レポート day1 - CDP-008

クロスワープの大鷲です。

前回の記事に引き続き、de:code 2015 day1 のレポートをお届けします。

参加セッション

私が参加したセッションは以下の通りです。
本記事では、day 1 最後の参加セッション「CDP-008 MS版Docker 誕生! Windows Server Containers とは?」のレポートをお届けします。

資料はこちらで公開されています。
その他のセッション動画及びスライド資料も Channel9 で公開されています。
オープニング キーノートは Microsoft Virtual Academy のサイトで公開されています。

day 1

CODE ROOM TITLE
SNR-004 Room G デジタルテクノロジーが推進する、アプリケーション革新
SPL-001 Room C マイクロソフトが考える 5 年後を見据えた技術提言
CHK-002 Chalk Talk クラウドアプリケーションのアーキテクチャ設計を深める
CHK-003 Chalk Talk プログラミング パラダイムの知識を深める
CDP-008 Room C MS版Docker 誕生! Windows Server Containers とは?

day 2

CODE ROOM TITLE
ARC-001 Room A クラウド時代のデータアーキテクチャ
SNR-009 Room B フルスタックエンジニアとか無理!
比べてわかったAzure PaaSの勘所
DEV-019 Room F 徹底解説! プログラマーがおさえておくべき
Azure Active Directory のすべて
PBS-001 Room E ここまでできる! Office 365 API を活用したアプリ開発
~ Office 365 内のデータ活用~
DEV-006 Room A ASP.NET 5 Web 開発 ~ ランタイム編 ~
DEV-007 Room A ASP.NET 5 Web 開発 ~ フレームワーク編 ~
DEV-008 Room A 進化は止まらない! ADO.NET Entity Framework の今

CDP-008 MS版Docker 誕生! Windows Server Containers とは?

スピーカーは日本マイクロソフトの高添さん。

Windows Server 2016 ではコンテナー技術が搭載されます。これを「Windows Server Containers」と呼びます。Docker との互換性があります。

前半は一般的なコンテナー技術と Docker の解説でした。
Docker のインターフェイスを使って、Windows Server Containers に新しいコンテナーを素早く立ち上げるデモが行われました。
従来の仮想マシン技術と比較して

  • 1 つの OS で複数のアプリ環境が実現できる(ため、リソースが節約できる)
  • OS イメージを新しく立ち上げるのが数秒で出来る
  • 各環境は独立した IP アドレスを持つ

といったメリットがあります。

差分イメージングも可能です。
ベースとなる OS が入ったイメージは読み取り専用で、その上に何かアプリケーションをインストールすると、その部分が異なるイメージで管理されます。
もちろん利用者からは、差分は意識されず、あたかも 1 台のマシンであるかのように見えます。
従来の Hyper-V でも、差分ディスクという機能がありましたが、それをさらに洗練させたものになるようです。

セントラル リポジトリという、イメージを共有するための仕組みもサポートします。
ベース イメージと差分イメージは、両方ともセントラル リポジトリに置いておきます。
アプリケーションを実行したいときに、ローカルマシンに、既に実行のための十分な環境があれば、アプリケーション イメージだけを持ってきて実行できます。
これは仮想マシンイメージを丸ごと持ってくるより、断然高速です。
さらに、アプリケーション イメージを実行するために特定のソフトウェアがインストールされている必要があるといった条件がある場合は、その差分イメージも自動的に持ってきてくれます。
差分管理さえ適切にしておけば、あとは、アプリケーションを実行するために必要なことはランタイムが自動的に面倒を見てくれるわけです。

また、アプリケーションをバージョンアップした際に何か問題があったら、前のバージョンに戻すことも一瞬で出来ます。

Hyper-V Container

Windows Server Containers は、いわゆる「普通の」コンテナーです。
対して、Hyper-V プラットフォーム上で動く、「Hyper-V Container」というものもあります。
これは例えば、多数の顧客が利用する共有ホスティング環境などのように、セキュリティや性能面から高い分離性(あるコンテナーで重い処理をしても、別のコンテナーにその影響が及ばないとか)が求められる場合に向いているようです。
Windows Server Containers の利点はそのまま、管理方法も同じで、追加の利点が得られるようです。

しかし、これには課題もあります。
「普通のコンテナー」である Windows Server Containers は、OS の上で直接動きます。
Hyper-V Container は Hyper-V テクノロジー上に構築されるので、ハイパーバイザ上で動作します。
さて、これらのコンテナーをホストする OS は、仮想マシン上で実行できるのでしょうか?
仮想マシン内で Hyper-V Container を実行するということは、仮想マシン内でハイパーバイザが動くことになります。
現在の Hyper-V では、このような構成はサポートしていません。

Microsoft では、このシナリオをサポートするつもりのようですが、セッション中では詳細は明らかにされませんでした。
Nested Hypervisor と呼ばれているこの状況が、何らかの形で打開されることに間違いはなさそうですが、Hyper-V Container に特化したシナリオになるのか、一般的な Hyper-V 仮想マシンの 2 段重ねもできるようになるのか、それはまだわかりません。
Amazon EC2 は Hyper-V ではなく Xen で動いているので、EC2 で Hyper-V Container が使えるかは、現時点では全く未知の状況です。

Windows Server Containers が動作する Windows Server 2016 のプレビュー版は今夏中には提供されるようです。
Hyper-V Containers は、年内には動かせる状態になる予定だそうです。
もうしばらく待ちましょう。