Dockerの登場で花咲いてきているコンテナ技術はUnix/Linuxの世界中心に目立っていました。昨今はWindows Server 2016やWindows 10の登場によりWindowsの世界でもコンテナを利用できるようになってきています。
ここではWindowsコンテナ、Linuxコンテナ両方においてWindows でコンテナを使う場合どんな選択肢があるかこの時点(2017/12/15)の状況と構成をまとめてみました。
本トピックは前提としてLinuxのDockerを使ったことがある方を想定しています。
(訂正)上記画像「2018/12/1現在」は間違いで、記事投稿時「2017/12/1現在」を指します。
大きくわけて「3通り」、今回は Docker Toolbox と Docker for Windows を中心にご紹介します。
Docker Toolbox
これを入れることによって、Linuxコンテナを使う事ができます。
実際は同梱されているVirtualBoxを使って、仮想のLinuxマシン(boot2docker)が動きその上でDocker Engineが稼働しています。
「Docker QuickStart Terminal」によりその仮想マシンが起動し、ターミナル上からDocker Clientのコマンドでオペレーションすることができるようになります。(初回の起動はboot2dockerがプロビジョニングされるため時間がかかりますが、その後は、起動プロセスのみなので操作可能になるまでは早いです。)
GUIツールのKitematicもAlpha版が一緒に入るので好みで利用することができます。
Docker for Windows
これを入れることにより、Windows , Linux 両方のコンテナを使うことが出来ます。
Windows 10 Home ではWindowsコンテナを使えないので注意
Docker Clientのコマンドオペレーションは「コマンドプロンプト」か「PowerShell」上で行えます。
Docker for Windowsの"Windowsのコンテナ
Hyper-Vコンテナ(コンテナを利用するのに最適化された仮想マシン)によってWindowsコンテナを利用可能にしています。母艦であるWindows10のカーネルとは別のカーネルでWindowsコンテナを動かせます。例えば、nanoserverのコンテナイメージからWindowsコンテナを動かせます。
Docker for Windowsの"Linuxのコンテナ"
Linuxコンテナを動かすために当然母艦のWindowsカーネルを使うことはできません。どうしているかというと現時点ではHyper-Vの仮想マシン(Hyper-Vコンテナではない点に注意)上にMobyLinuxという軽量なLinuxOSが稼働し、其の上でDocker Engineが稼働しています。
Docker for Windows 特徴
LinuxコンテナとWindowsコンテナ両方使えるのですが、これらは接続する稼働するDocker Engineが異なるため、オペレーションするときに、Docker Clientをスイッチさせて使うことができるようになっています。ここが非情に便利だと思います。GUIツールのKitematicは一緒には入らないので個別に利用可能です。
#Windows Container on Windows Server
こちらでは、Windowsコンテナを使うことが出来ます。Hyper-VコンテナとしてのLinuxコンテナはサポートされていません。
Windows Server 2016においての記事が2017/12/5あがっているのでせっかくなので詳しくはそちらをご参照ください。
参考:WindowsコンテナでWordPressを動かすまでに気づいたWindowsコンテナを使い始める時の注意点
Linux コンテナを動かすためには、Docker for Windowsと同様にHyper-V 仮想マシンを利用して、そこで稼働しているLinux上のDocker Engineを利用するという形
おわりに
所感としては、現状Hyper-VコンテナのLinuxコンテナ対応が未だだったとしても、『Windows 10 ProでのDocker for Windows』がプログラマにしてもインフラエンジニアとしても手元の開発・評価等としてすこぶるよい環境ではと感じました。これにVisual Studio Codeによるオペレーションが加わるとエンジニアスタイルの美しさもあり、且つ自己満足だけでなく生産性も高くなる環境が手に入ると思います。早速手に入れてみてはいかがでしょうか!?
2018/11/22 記
Windows Server 2019 がGAされ、アップデートされております。
- https://docs.microsoft.com/en-us/windows-server/get-started-19/whats-new-19
- https://www.publickey1.jp/blog/18/windows_server_2019.html
参考
- Docker Toolbox
- Docker for Windows
- Windows Container on Windows 10
- Windows Container on Windows Server