開発者に朗報! Windows 10でWindows Serverコンテナが実行可能に:企業ユーザーに贈るWindows 10への乗り換え案内(42)(1/2 ページ)
Windows 10の開発者向け機能として、Dockerによる「Windowsコンテナ」のサポートがあります。これまでは、Hyper-Vで分離された「Hyper-Vコンテナ」だけがサポートされていましたが、最新の「Docker Desktop for Windows」では、「Windows Serverコンテナ」もサポートされました。
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分離のみのサポートでした。
- Windows Container Version Compatibility(最終更新日:2018年11月15日)[英語](Microsoft Docs)
2019年1月中旬に、Windows 10に対応した「Docker Desktop 2.0.0.2」(旧称Docker for Windows、このバージョンから名称変更)がリリースされました(画面1)。Docker Desktopは無償で利用できる、Docker Community Edition(Docker CE)です。
- Docker Desktop(Windows)[英語](Docker Hub)
- Docker Desktop for Windows Stable Release notes[英語](Docker Documentation)
画面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のサポートが廃止されるとのことです。
- Docker Engine release notes(「18.09.1」の「Improvements for Docker Engine EE and CE」を参照)
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の最新「クライアントHyper-V」の新機能(本連載 第31回)
- WindowsとLinuxの混在環境が標準で扱いやすく――Windows 10のLinuxサポート最新情報(本連載 第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 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コンテナ以外実行できません。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Windows 10 October 2018 Updateがやってきた? やってこない?
Windows 10 October 2018 Update(バージョン1809)が2018年10月2日(米国時間)にリリースされました。10月にリリースされることは分かっていましたが、まさか月初めに予告なくくるなんて少しびっくりです。しかも、RTMビルドになった17763.1は、提供開始後数日で配信停止。本当にびっくりです。 - こんにちはWindows 10 October 2018 Update、さようならRemoteFX 3Dビデオアダプター
2018年10月2日(米国時間)、最新のWindows 10とWindows Server 2019がリリースされました(その後、重大な問題が報告されたようで、10月6日に提供が停止されました)。筆者がInsider Previewビルドで気が付いた、Hyper-Vから表面上、消えてなくなってしまう機能を正式版(RTM)で確認してみました。 - これは戦いだ! Windows 10のWindows Updateにはやられる前にや……
今回のネタは、Windows Updateによる更新プログラムのインストールで、仕事や帰宅の邪魔をされたくない、余暇の楽しみを邪魔されたくないという、Windows 10ユーザー向けの1つの“提案”です。少し手間が掛かりますが、今後、発生するかもしれない更新トラブルの多くを避けながら快適なPC生活を過ごすことができるかもしれません。 - 続・進まないWindows Update、やっぱり止まっていなかった
Windows Updateが動作していて、フォアグラウンドの作業が重く、しかもWindows Updateがなかなか進まない状況に遭遇したことはありませんか。画面をただ眺めているだけでは、進んでいるのか、いないのかが分からず、結局失敗して時間の無駄に終わるということも……。他にすることがなく、時間を持て余しているのなら、進んでいることが分かる詳細を追跡してはいかがでしょうか(本稿の最後に注意点というかオチがあります)。