DockerエンジンのWindows移植版がリリース

DockerエンジンのWindows移植版であるWinDocksリリースされた。Windows Server 2012またはWindows Server 2012 r2をベースとして動作する。複数バージョンのMS SQL Serverを含むコンテナを実行可能で,.NET 2, 3.5, 4.5をサポートする。

WinDocksはDockerエンジンのWindowsへの移植で,先日発表されたDocker on Windowsとは違うものだ。公式Dockerクライアントが使用可能で,build, create, commit, exec, ps, start, stopなど,Dockerコマンドのサブセットをサポートする。

WinDocksは,Uhuru Softwareの開発したオープンソースのコンテナプロジェクトと,独自に移植したDockerエンジンを使用している。

Windows 2012カーネルは,コンテナに必要なアイソレーション要件をネイティブでサポートしていない。そのためWinDocksでは,コンテナの基本技術として,プロセスをユニットとして管理可能なWindows JobObjectを使用する

プロセスプライオリティやCPU利用率など,プロセスグループのリソース利用率の管理には,Job Objectが利用できる。Job Objectにはそれぞれ,ファイルアクセス権を管理するDACL(Discovery Access Control List),ファイルシステム,名前空間を分離するネームスペースアイソレーション用の登録フィルタ,ネットワーク操作を管理するWindows Filtering Platformなどが含まれている。Windows Filtering Platformは,ネットワークパケットの処理やフィルタリングといった機能を提供するものだ。

Dockerの提供するものを含むLinuxmのコンテナ分離は,コントロールグループ(cgroup)を介して実現されているが,同様な機構がWindows 2012にはないため,WinDocksの機能を実現するために,さまざまなものを継ぎ合わせなくてはならなかった。InfoQはWinDocks開発者とコンタクトを取り,これによって予想されるセキュリティ上の問題について確認することにした。答えてくれたのはWinDocksの創設者であるRamesh Parameswaran氏だ。

各テナントが別組織であるようなシナリオに,WinDocksを使用することは推奨しません。100%のプロセス分離ソリューションではありませんし,そこに到達するにはまだ長い道程があります。WinDocks内のコンテナプロセスにはメモリとCPUの使用制限がありますから,ひとつのプロセスがマシンを停滞させることはありません。

WinDocksコンテナは,現時点では.NETとMS SQL Serverのイメージに限定されている。ベースとなるSQL Serverイメージパッケージに製品を追加したものや,ベースイメージから派生した独自のSQLイメージも可能だ。独自のSQLイメージを作るには,コンテナをベースイメージからローンチしてMDFファイルを追加した上で,そのコンテナをコミットする。カスタムコンテナのローンチには,それを使えばよい。MS SQLのプライマリデータファイルは,MDFという拡張子作成するのが一般的だ。

ネットワークマウントを使用すれば,リモートSQL Serverデータベースも使用できる。 Parameswaran氏によれば,次のWinDocksではログ機能の改良に重点を置くとともに,Jenkinsとの統合を提供して,継続的インテグレーション/継続的デリバリ(CI/CD)パイプラインに簡単に組み込めるようにする,ということだ。