Windows Server版のDockerについてつらつら

Windows Server上に実装されるDockerでは当然のようにDocker HubにあるLinuxのイメージが動作するわけでは無いでしょう。

ゾーニング、あるいはコンテナという技術は、仮装化と行っても技術的にはTSS(Time Sharing System)の延長先にある技術であり、プロセス間分離、ユーザーセッション分離の延長線上にある技術です。つまりユーザー視点での「マシン」を仮装化するのであって、実際にマシンを仮装化するわけではなく、あくまでもベースのOSが小分けされているようにユーザーに見せるだけです。マルチユーザーシステムにおいて実現されていたユーザー空間の分離がより厳密化され、ユーザーの体感だけでなく、ユーザープロセスからもOSの抽象度を上げ、分離度合いを上げていく技術です。(なので、Dockerのコンテナという言い方より、SolarisのZoneという言い方の方が実態を良く表していると思います)

つまり、コンテナで提供されるのは、あくまでもホストOSのサブセットです。Windows ServerのDockerで提供されるコンテナは、あくまでもWindowsの環境となるはずです。

さて、Windowsにある程度詳しい方は、そんなのどうやって実現するんだよって言う話になるわけです。主にセキュリティ面での要請からWindowsのVersion 6以降UACというかたちでプロセス空間分離と権限の制約に関する強化が行われ、その延長線上にWindows Runtimeもあるわけですが、これはあくまでもプロセス分離技術であって、ゾーニングの支援と言うほどの機能とはなっていません。またWindowsのカーネルの構造(というか特権レイヤーの仕組み)はLinux程単純ではなく、Windowsのサブモデルのメカニズムとゾーニングの技術との相性も悪そうな気がします。何らかの技術的なブレイクスルーがないとゾーニングの実現は難しいと思いました。Windowsのユーザー空間プロセスはサブモデルが提供する仮装化されたシステムコールを通してしか実際のカーネルのシステムコールを呼べないからです。既にサブモデルで仮装化された物をさらに仮装化するのはまどろっこしいし、効率が悪そうです。

そうした中で、将来的なWindowsでのゾーニング支援のための実装技術として可能性がありそうなのが、MSRのDrawbridgeという技術ではないかなと考えていたりします。

http://research.microsoft.com/en-us/projects/drawbridge/

何にせよ来年には登場してくるはずで、来年か、再来年のde:code(TechEd?)では90分2コマぐらいで、詳細な技術解説をしてほしいなぁと思ったりしますね。久々にWindowsでわくわくしてくる感じになってきたので、すごく楽しみです。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください