連載
» 2019年02月07日 05時00分 公開

企業ユーザーに贈るWindows 10への乗り換え案内(42):開発者に朗報! Windows 10でWindows Serverコンテナが実行可能に (1/2)

Windows 10の開発者向け機能として、Dockerによる「Windowsコンテナ」のサポートがあります。これまでは、Hyper-Vで分離された「Hyper-Vコンテナ」だけがサポートされていましたが、最新の「Docker Desktop for Windows」では、「Windows Serverコンテナ」もサポートされました。

[山市良,テクニカルライター]
「企業ユーザーに贈るWindows 10への乗り換え案内」のインデックス

企業ユーザーに贈るWindows 10への乗り換え案内

Windows 10における、これまでのWindowsコンテナサポート状況

 64bit版Windows 10 バージョン1607のProエディション以上は、Windows Server 2016で追加された「コンテナ」機能を搭載しており、Dockerを使用して「Windowsコンテナ」環境によるアプリ開発が可能です。

 Windows Server 2016では「プロセス分離(process isolation)」と「Hyper-V分離(hyperv isolation)」のいずれかで、Server CoreまたはNano ServerのベースOSイメージのコンテナを作成し、実行することが可能です。

 プロセス分離はLinuxベースのDocker環境と同様、ホストのカーネル上のプロセスとしてコンテナ用のOS環境が用意されます(複数のコンテナがホストのカーネルを共有します)。一方、Hyper-V分離では、コンテナごとに用意されるHyper-Vで分離されたカーネルを使用してコンテナが実行されます。

 Windows 10におけるWindowsコンテナのサポートは、以下のWindowsコンテナのバージョン互換性マトリックスが示すように、これまではHyper-V分離のみのサポートでした。

 2019年1月中旬に、Windows 10に対応した「Docker Desktop 2.0.0.2」(旧称Docker for Windows、このバージョンから名称変更)がリリースされました(画面1)。Docker Desktopは無償で利用できる、Docker Community Edition(Docker CE)です。

画面1 画面1 Docker Desktop for Windows 2.0.0.2は、Docker EE for Windows Server 18.09.1と同じDocker Engineバージョン18.09.1を搭載

 このバージョンは「Docker Enterprise Edition(Docker EE)for Windows Server(Docker Enterprise 2.1)」と共通の「Docker Engineバージョン18.09.1」を搭載しており、以下のリリースノートで説明されているように、Windows 10上でのプロセス分離が可能になりました。なお、上記のDocker Desktopのリリースノート(「About Docker」ウィンドウの「Release Notes」ボタンから参照可)によると、次のメジャーリリース(2.1.0.0以降)からは、Windows 10 バージョン1607のサポートが廃止されるとのことです。

 Windows Server 2019では「Linux Container on Windows(LCOW)」と呼ばれるLinuxコンテナのサポートが予定されていますが(現在はプレビュー)、Windows 10 バージョン1709以降と2018年3月リリースの「Docker for Windows 18.03-0-ce-win59」以降で、Experimental(実験的)機能としてLCOWを試すことができます。LCOWに関しては、本連載の第31回と第37回でも紹介しました。

Windows 10上でWindows Serverコンテナ(プロセス分離)を実行する

 「Hyper-Vコンテナ(Hyper-V分離)」と「Windows Serverコンテナ(プロセス分離)」は、ユーザーにとっては「docker run」コマンドに指定する“「--isolation」オプションの違い”でしかなく、作成および実行されるWindowsコンテナのエクスペリエンスは同じです。

 例えば、最新の「Windows Server,version 1809」のServer CoreベースOSイメージ(mcr.microsoft.com/windows/servercore:1809)を、Hyper-Vコンテナとして実行するには、次のようなコマンドラインを実行します。

docker pull mcr.microsoft.com/windows/servercore:1809
docker run -it --name wincont01 --isolation=hyperv --rm mcr.microsoft.com/windows/servercore:1809 powershell

 この例では、作成したコンテナでWindows PowerShellを対話的に開始し(--itオプション)、コンテナを終了するとイメージを削除します(--rmオプション)。Windows 10ではHyper-V分離が既定となっているため、「--isolation=hyperv」オプションの指定は省略できます(Windows Serverではプロセス分離が既定)。

 Windows 10 バージョン1809上のDocker Desktop 2.0.0.2(Docker Engine 18.09.1)以降では、次のようなコマンドラインを実行することで、プロセス分離でWindows Serverコンテナとして実行できるようになりました(画面2)。

docker run -it --name wincont02 --isolation=process --rm mcr.microsoft.com/windows/servercore:1809 powershell
画面2 画面2 Windows Server,version 1809のServer CoreベースOSイメージを、Hyper-Vコンテナ(コンテナ名:wincont01)とWindows Serverコンテナ(コンテナ名:wincont02)で実行しているところ

 Docker Desktop 2.0.0.0(Docker Engine 18.09)および以前のDocker for Windowsでは、この方法はサポートされていませんでした。また、プロセス分離を利用できるのは、Windows 10 バージョン1809からであり、Windows 10 バージョン1803以前は引き続きHyper-Vコンテナ以外実行できません。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

「Windows 7」サポート終了 対策ナビ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。