2015/8/19(米国時間)に Windows Server 2016 の Technical Preview 3(TP3) が公開され、Windows Server 上で Docker が使えるようになりました。
TP3 では、Windows Server にコンテナの技術が実装され、その上で動作する Docker Engine が提供されたことにより、Windows 上で Docker のイメージの実行や作成ができるようになっています。
以下では、Windows Server 2016 上のコンテナ/Docker について概要をまとめます。
概要
Windows Server 2016 でのコンテナ技術は次の2つがあるが、今回実装されたのは Windows Server Container のみ。
- Windows Server Container
Linux のコンテナ技術と同様。コンテナ間でカーネル部分は共有するが、名前空間によりコンテナを隔離する方式。 - Hyper-V Container
Hyper-V の技術を用いて、より強くコンテナ間を隔離する方式。各コンテナが Windows カーネルのコピーと、自身に割り当てられたメモリを持つ。
なお、Hyper-V Container の公開は 2015年年末~2016年と言われている。
これらの2つのコンテナは、どちらも Docker API と Docker クライアントから操作可能。
つまり、Windows Server Container だけでなく Hyper-V Container も Docker Engine で管理される。
【Microsoft Announces New Container Technologies for the Next Generation Cloudから引用】
また、Docker API と Docker クライアントで操作できることから、Linux と Windows のコンテナを同じ Docker コマンドで管理できるだけでなく、オーケストレーションツールから Linux と Windows の両方の Docker ホストを管理できるようになると思われる。
TP3 では、ほとんどの Docker コマンドが使えるようになっている
ただし、まだ docker push
はサポートされていない。
Windows Server Container は、PowerShell でも操作可能
ただし TP3 の段階では、PowerShell で作成したコンテナは Docker コマンドから管理できない、逆に Docker コマンドで作成したコンテナは PowerShell で管理できない、という制約がある。
Windows の Docker イメージは、Windows Server Container と Hyper-V Container のいずれでも動作する
例えば、DockerHub に Push された Windows のイメージは、修正なしでどちらのコンテナとしてでも動作させることができる。
Linux の Docker イメージは、Windows Server 上では動作しない
コンテナ技術はホスト側のカーネルを共有するので、まぁそうでしょう。
Windows 版の Docker Engine は、Docker のオープンソースプロジェクトの一部として開発されている
Docker プロジェクトはここで公開されており、単一のコードベースから Linux 版と Windows 版の Docker Engine がビルドされている。
Windows 版 Docker Engine が動作するのは Windows Server 2016 TP3 以降
コンテナを実現するために Windows カーネルに修正が入っているが、その修正を利用可能なのが TP3 以降のため。
参考サイト
- http://blogs.technet.com/b/server-cloud/archive/2015/08/19/what-s-new-in-windows-server-2016-and-system-center-2016-technical-preview-3.aspx
- https://satonaoki.wordpress.com/2015/08/18/container-docker-windows/
- http://azure.microsoft.com/blog/2015/08/17/containers-docker-windows-and-trends/
- https://blog.docker.com/2015/08/tp-docker-engine-windows-server-2016/
- https://msdn.microsoft.com/virtualization/windowscontainers/containers_welcome
- http://blogs.msdn.com/b/msgulfcommunity/archive/2015/06/21/what-is-windows-server-containers-and-hyper-v-containers.aspx
- http://blogs.technet.com/b/server-cloud/archive/2015/04/08/microsoft-announces-new-container-technologies-for-the-next-generation-cloud.aspx
- http://cloud.watch.impress.co.jp/docs/news/20150820_717091.html
- http://news.mynavi.jp/news/2015/08/21/280/
- http://www.publickey1.jp/blog/15/linuxwindows_server_container.html