(2016/10/21 追記) 本記事の内容が古くなりましたので、下記のページをお勧めします。
「WindowsのDocker(コンテナ)対応、正しく理解できていますか?」
http://www.atmarkit.co.jp/ait/articles/1610/24/news014.html
DockerのWindows対応が複数存在し、混乱しがちなので、整理してみた。
1. Docker Engine(元祖)
Linux Container on Linux OS
Linux OSは、VMでも物理でもどちらでもOK。もちろんWindows系は非対応。
LinuxOSをコンテナで利用できるが、WindowsOSは一切動かない。
2. Windows Machine上のLinux VMでDocker
Linux Container on Linux VM on Windows Machine
前述1.の応用系。Oracle VM Virtual Boxなどを利用して、Linux VMを用意してDockerを動作させる。
Docker Toolboxはこのパターン(Toolboxをインストールすると、Virtual Boxも同時にインストールされる)
通常、VM on VMは不可なので、Windows Machine限定(Windows VMには非対応)になる。
⇒ AWS EC2上のWindows Server(VM)では実現できない。
LinuxOSをコンテナ利用できるが、WindowsOSをコンテナとして起動する事は出来ない。
3. Docker for Windows
Linux Container on (Hyper-V) on Windows Machine
前述2.の応用で、中間にHyper-Vを利用。
Setup後は、Hyper-Vを意識する必要はなく、Windows上から直接Dockerを操作できる。
2016/9 現在、Windows 10 のみ対応。今後、対応OSを増やしていく予定とのこと。
こちらも、LinuxOSをコンテナ利用できるが、WindowsOSをコンテナとして起動する事は出来ない。
4. Windows Container on Windows Server
Windows Container on Windows Machine
Windows Container on (Hyper-V) on Windows Machine
Microsoftが Server OSに、Container機能を組み込み。名前の通り、Windowsコンテナしか動かない。
Windows Container Typesが2種(Windows Server Containers, Hyper-V Containers)ある。
2016/9 現在、Windows Server 2016(Technical Preview 5)のみ対応。ちなみにAuzre上に、マシンイメージが公開されてる。
Docker HUBとの相互運用などLinux系に歩み寄っていて、将来的にはLinuxコンテナも動作するようになる(かも?)。
5. まとめ
現状では、WindowsとLinuxの相互運用は厳しい。
Linux/Windowsのどちらのコンテナを使いたいか?で、選択肢が絞り込まれる。
Linuxコンテナを使いたい場合は、2)または3)の構成。
手元にWindows 10のマシンがあるなら、3)Docker for windowsが簡単だろう。
それ以外のOS(Win7など)の場合は、2)のケースで、Linux VMを用意する必要がある(Docker Toolbox使うか、自分でLinux VMを用意)。
なお、VMware Player上のゲストOSでWindows10を用意し、そこで Docker for windowsを動かそうとした猛者がいましたが、動作しなかったとの事例を聞いた(Hyper-VとVMware Playerの共存に難あり?)
Windowsコンテナを使いたい場合は、現状では4)の選択のみ。Windows Server 2016が必要になる。