Windows専用のソフトウェアをコンテナ内で実行することが可能になった。 Windows Server 2016 Technical Preview 3 は,このテクノロジを最初にサポートするWindowsリリースだ。Windows Server Containersは,Linuxのコンテナとほぼ同じ機能を,Windowsエコシステムの環境で実現する。Dockerもまた,独自のテクニカルプレビューをリリースして,Windowsコンテナの管理機能を紹介している。
DockerのエンジニアリングマネージャであるArnaud Porterie氏によると,DockerのLinuxとWindowsの機能セットは,オペレーティングシステムの根本的な違いのため,将来的にもまったく同じにはならない。それでも大部分のDockerコマンドは,どちらのコンテナテクノロジでもほぼ期待通りに動作し,dockerfile
とdocker build
コマンドもサポートされている。但しdocker push
は,今回のリリースでは動作していない。
Microsoftはhcsshimという,DockerでWindows Server Containersを実行するためのexecdriverを開発した。execdriverはDockerのパーツのひとつで,コンテナを実行するためのカーネルコード呼び出しに使用される。オペレーティングシステム固有の実装であるため,例えばWindows Server Containers用のDockerデーモンはLinuxイメージ上では動作しない。
PowerShellでもWindows Server Containerの管理が可能だ。現時点では,PowerShellのような特定のツールで生成されたコンテナは,それ以外のDockerなどのツールで扱うことはできない。このような動作は,2つのツールの違いから説明される。違いの範囲は,大文字小文字の区別のような些細なものから,レースコンディションのような複雑な問題まで及ぶが,長期的には好ましい状況ではないので,将来的には変更される可能性がある。
Microsoftはさらに,Windows Server Containerと同じような機能をHyper-Vパーティションで実行する,Hyper-V Containersも導入した。Windows Server Containerの実行速度や効率性に換えて,高度な独立性とセキュリティを備えるHyper-V Containersは,マルチテナントシステムのようなシナリオに適したソリューションとして期待できる。
Microsoftは – DockerやGoogleなどの業界の大物とともに – OCI(Open Container Initiative)の設立メンバに名を連ねている。OCIは,“コンテナのフォーマットやランタイムにおけるオープンな業界標準”の創出を目標とする。Dockerは,自社のコンテナフォーマットとランタイムであるrunCを OCIに寄付した。このオープンコンテナ規約(Open Container Specification)はGitHubで確認することができる。
この新しいテクノロジを最も簡単に試すには,クイックスタートガイドに従って,Windows Server ContainersをAzure上で実行してみるのがよいだろう。Azureにはすでに,Windows Server 2016 Technical Preview 3のイメージが用意されている。あるいは,Hyper-V VMまたはWindows Server 2016 TP Coreインストレーション内で,Windows Server Containersを試す方法もある。
Windows Server Containersは現在開発中であるため,既知の問題について確認が必要だ。現時点では,アンチマルウェアソリューションが原因となって,コンテナの立ち上がりが遅い場合などがある。質問をしたいのならば,Windows Server Containersフォーラムがよいだろう。Microsoftの技術者による回答が得られるかも知れない。LumagateのCTOであるKristian Nese氏が,Windowsの世界におけるコンテナを話題にした記事のシリーズを書いている。