開発者に朗報! Windows 10でWindows Serverコンテナが実行可能に:企業ユーザーに贈るWindows 10への乗り換え案内(42)(2/2 ページ)
Windows 10の開発者向け機能として、Dockerによる「Windowsコンテナ」のサポートがあります。これまでは、Hyper-Vで分離された「Hyper-Vコンテナ」だけがサポートされていましたが、最新の「Docker Desktop for Windows」では、「Windows Serverコンテナ」もサポートされました。
Hyper-V分離とプロセス分離を“見える化”してみよう
Windows Sysinternalsの「Process Explorer(Procexp.exe)」ユーティリティーを使用して、Windowsコンテナの実行と終了の様子を見てみましょう。まずは、Windows 10の既定のHyper-Vコンテナ(Hyper-V分離)として実行してみます。
「docker run」コマンドを実行すると、「vmcompute.exe」プロセス(Hyper-Vホストコンピューティングサービス)の子プロセスとして、新たに「vmwp.exe」プロセス(仮想マシンワーカープロセス)と「vmmem」プロセスが一つずつ生成されます(画面3のProcess Explorerで緑色にハイライトされた2プロセス)。これらは分離されたカーネル環境をコンテナに提供するもので、Hyper-Vコンテナごとに生成されます。
また、Hyper-V分離をサポートするために、1つのvmwp.exeプロセスと2つのvmmemプロセスが常駐しています。前出の画面3を見ると、約1GBのメモリが新しいコンテナのためのプロセス専用に割り当てられているのが分かるでしょう(Private Bytes)。
対話的に実行中のコンテナを「exit」コマンドで終了すると、コンテナ用に生成された2つのプロセスも終了します(画面4のProcess Explorerで赤色にハイライトされた2プロセス)。
一方、Windows Serverコンテナ(プロセス分離)として実行した場合、新たにvmwp.exeプロセスとvmmemプロセスが生成されることはありません。
代わりに、Windows Serverコンテナごとに「CExecSvc.exe」プロセス(Container Execution Agent)が生成され、その子プロセスとして「conhost.exe」プロセス(コンソールウィンドウホスト)と孫プロセスとして「powershell.exe」プロセス(Windows PowerShell)が生成されます。Process Explorerで見るこれらのプロセスツリーは、ホスト(Windows 10)のカーネル環境で実行されるプロセスにすぎないのです(画面5、画面6)。
画面5 Windows Serverコンテナ(プロセス分離)の場合、CExecSvc.exeの子プロセスとしてconhost.exeプロセス、孫プロセスとしてpowershell.exeプロセスが生成される
プロセス分離のWindows Serverコンテナでは、Docker EngineおよびWindows 10のコンテナ機能が、ファイルシステム構造などコンテナ用の抽象化レイヤーを提供し、コンテナはホストのカーネルを共有します。そのため、CPUやメモリリソースをコンテナ専用に割り当てる必要もなく、少ないリソースでコンテナを実行でき、コンテナの起動時間も短縮されます。これは開発者にとって多くのメリットがあるでしょう。
ここまでの例では「servercore:1809」イメージを使用しましたが、Windows 10 バージョン1809上では「nanoserver:1809」イメージをプロセス分離で実行することも可能です。以下の画面7は、「nanoserver:1803」をHyper-V分離、「nanoserver:1809」をプロセス分離、「Linuxコンテナ(ubuntu)」をLCOW(Docker Engine 18.09から--platform=linuxオプションの指定は不要)で実行しているところです。
画面7 Windows 10 バージョン1809上でHyper-V分離のnanoserver:1803コンテナ(wincot03、背景緑)、プロセス分離のnanoserver:1809コンテナ(wincont04、背景青)、LCOWのubuntu:latestコンテナ(lnxcont05、背景赤)を同時に実行しているところ
注意点があるとすれば、Hyper-Vコンテナはホストと同一バージョンおよび下位バージョンのWindowsコンテナイメージを実行できますが、Windows Serverコンテナはホストのカーネルを共有するため、ホストのOSビルドとイメージのOSビルドが一致している必要があります。例えば、Windows 10 バージョン1809(OSビルド10.0.17763.x、.xは一致していなくてよい)上で実行できるのは、同じOSビルドのnanoserver:1809およびservercore:1809です。
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2018/7/1)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
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がなかなか進まない状況に遭遇したことはありませんか。画面をただ眺めているだけでは、進んでいるのか、いないのかが分からず、結局失敗して時間の無駄に終わるということも……。他にすることがなく、時間を持て余しているのなら、進んでいることが分かる詳細を追跡してはいかがでしょうか(本稿の最後に注意点というかオチがあります)。