Edited at

Windows Server 2016 TP3 での Docker (1) 概要まとめ

More than 3 years have passed since last update.

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 で管理される。

server-cloud-apr8-1.png-720x0.png

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 以降のため。


参考サイト