この記事は2016年頃の情報となっています。2021年となっては古い話です。
現在はWSL2を使うことによってかなり快適にLinuxコンテナをWindows上で扱うことができます。
https://docs.docker.jp/docker-for-windows/wsl.html
私自身も個人PCをWindows+WSL2で運用するようになりました。
DockerはWindowsで動くの? という質問をたまに受けます。
動くといえば動くし、動かないといえば動かない。
私自身はWindowsで開発をあまりしない人(普段使いはUbuntu)なので正直WindowsでDockerを使おうというモチベーションはあまり無いのですが、プロダクト名が若干ややこしかったりして混乱しやすいので自分の理解のためにも書いておこうと思います。
最近の動向
つい最近、Microsoft社とDocker社の努力によってWindowsコンテナが使えるようになりました。
(実用上はどうなのかわかりませんが)
- https://blog.docker.com/2016/09/build-your-first-docker-windows-server-container/
- https://msdn.microsoft.com/ja-jp/virtualization/windowscontainers/docker/configure_docker_daemon
WindowsでDockerが使える? とは
この質問には2通りの解釈があります。
- Windowsマシンを使ってLinuxベースイメージのコンテナを使うことができる
- Windowsマシンを使ってWindowsベースイメージのコンテナを使うことができる
1. Linuxベースイメージのコンテナを使うことができるか?
これは以下のプロダクトを使ってできるといえます。
Docker for Windows と Docker Toolbox
これらのツールは仮想マシンでLinux OSを起動し、そのLinuxマシン上でDockerを動作させます。
そして、Dockerホストとなる仮想マシンにログインすること無く、まるでWindows上で動作しているかのようにコマンドプロンプト、Power-Shellプロンプトから直接dockerコマンドを実行できるように工夫がされています。
(とは言え中間にDockerホスト仮想マシンがいるということは理解しておく必要があります)
Docker ToolboxはVirtualBoxを使用してLinux仮想マシンを起動しますが、Docker for WindowsではWindowsとより親和性の高いHyper-Vを使用しています。
https://docs.docker.com/docker-for-windows/faqs/
なお、これらのツールは開発者が手元のPCでDockerを試すことを主目的としたツールであるため、これらを使った本番環境構築などは考えないほうが幸せかと思います。
どちらを使えばいいのか
利用可能な環境であればDocker for Windowsを使用することをおすすめします。
(といいつつ残念ながら私の手元には動作に適したマシンが無く、実は使ったことがありません。)
現状ではDocker ToolboxはDocker for Windowsを使用できない環境下での代替手段と考えたほうが良いでしょう。
Docker for Windowsの動作要件は以下のように記されています。
Docker for Windows requires 64bit Windows 10 Pro, Enterprise and Education (1511 November update, Build 10586 or later) and Microsoft Hyper-V. Please see What to know before you install for a full list of prerequisites.
2. Windowsベースイメージのコンテナを使うことができるか?
2016/10よりできるようになりました。
おそらく、「WindowsでDockerが使える?」の質問意図の大半はこちらになるかと思います。
Docker Windows Containers
元々のDockerはLinuxカーネルに依存したものでしたが、Docker Windows Containersの登場により可能になりました。(Windowsコンテナを動かすDocker Engineの正式なプロダクト名がよくわからないのでDocker for Windowsと混同しないようにDocker Windows Containersと呼ぶようにしました)
これはWindows 2016 Server, Windows 10で使えるようになりました。
詳しくはこちらの記事を参照すると良いでしょう。
https://msdn.microsoft.com/ja-jp/virtualization/windowscontainers/containers_welcome
Windowsのベースイメージ
そろそろ知識の限界が来たので退散しようとしていますが、最後にもう一つだけ。
LinuxのベースイメージはCentOS, Ubuntu, Alpineなど多岐にわたりますが、Windowsについては現状以下のどちらかのベースイメージとなります。
ここでLinuxと比べた懸念はサイズの大きさです。Nanoserverは300MB程度ですが、Windows Server Coreに至っては4GBと巨大です。
まとめ
- 2016/10現在ではWindowsでDockerが使える状況にあります
- Windowsで何のイメージを動かしたいのかによって手段と要件が変わります