Edited at

Windowsユーザが、Dockerを使おうとすると混乱するね。

More than 1 year has passed since last update.


(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系は非対応。

https://docs.docker.com/engine/understanding-docker/

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も同時にインストールされる)

https://docs.docker.com/toolbox/overview/

通常、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を操作できる。

https://docs.docker.com/docker-for-windows/

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)ある。

https://msdn.microsoft.com/en-us/virtualization/windowscontainers/about/about_overview

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が必要になる。