Windows10 Pro上でHyper-Vコンテナーを使い始める手順

以前の記事でDocker for Windowsを使ってWindows10上でLinux Kernelベースのコンテナを実行する手順を紹介しました。今回はWindows10のHyper-Vコンテナーの機能を使って、Windows Kernelベースのコンテナを実行する手順を紹介します。

スポンサーリンク

1. Windows 10 Pro上で利用できるコンテナー

本記事はMSDNサイトにある「Windows 10のWindowsコンテナー」という記事を参考にして、Windows 10 Pro Insider Previewを使って検証しました。

Windows Server 2016ではWindows ServerコンテナーとHyper-Vコンテナーの2種類のコンテナ機能が利用可能です。この二つのコンテナの違いは以下の通りです。

  • Windows Serverコンテナーでは各コンテナはホストの1プロセスとして動き、コンテナのホストとその上で動くすべてのコンテナでWindows Kernelを共有している。
  • Hyper-Vコンテナーでは各コンテナは独立した仮想マシン上(つまりvmwp.exeプロセスとして)で実行され、Kernelはコンテナ間で共有されない。

コンテナの操作にはDockerエンジン、Dockerクライアントを利用します。そのため、コンテナの操作感はLinux Kernelベースのコンテナを扱うときと全く変わりません。

2. Hyper-Vコンテナー環境のセットアップ

以下、Windows 10 Pro上で実際にHyper-Vコンテナー環境をセットアップする手順を紹介します。

2-1. Hyper-Vおよびコンテナー機能の有効化

コントロールパネルの「プログラム」>「プログラムと機能」画面にて「Windowsの機能の有効化または無効化」をクリックしますすると、次のようなWindowsの機能の有効化ウィンドウが表示されますので、「コンテナー」と「Hyper-V」のチェックボックスをつけます。サブツリーにある項目もすべてチェックをつけます。

Enable Hyper-V Container Function

次へ進むと昨日のインストールが開始され、その後次のようにOS再起動を促す画面が表示されます。ここでOS再起動を実施します。

Enable Hyper-V Container Function 2

2-2. Docker EngineおよびDocker Clientのインストール

コンテナーを操作するためにDockerをインストールします。Windows用のDockerバイナリはこのリンク先のサイトにあります。

上記サイトにあるwindows/amd64/docker-(バージョン)-dev.zipをダウンロードします。

docker-download

ダウンロードしたZIPファイルを展開したら、中にある「docker」フォルダをC:\Program Files\にコピーします。

Docker ZIP Extract

コピーしたら以下の手順でC:\Program Files\dockerをPATH環境変数に追加します。

1. システムの詳細設定画面を開く

コントロールパネルの「システムとセキュリティ」>「システム」画面で「システムの詳細設定」をクリックします。

Windows 10 System Configuration

2. 環境変数の設定

以下の図のように「詳細設定」>「システムの環境変数」内の「Path」を選択して「編集」をクリックします。

Windows 10 Environment Variables

Choose Path

Edit Path Environment

3. Docker用パスの追加

Pathの編集画面で「新規」ボタンをクリックします。フォーカスされた入力部分にC:\Program Files\dockerを入力した後、「OK」ボタンをクリックします。

Add Docker Path

2-3. Dockerのサービス化

DockerデーモンをWiondowsサービスとして登録するために以下のコマンドを管理者権限のコマンドプロンプトにて実行します。

3. Hyper-Vコンテナーの動作確認

ここまでの手順でコマンドプロンプトからdockerコマンドでHyper-Vコンテナーを操作できるようになりました。コンテナが動くことを確認します。

3-1. Windows nano serverのコンテナイメージをダウンロード

以下のコマンドを利用してDocker HubからWindows Nano Serverのイメージをダウンロードします。

ダウンロードしたら、イメージがダウンロードできていることを確認します。

3-2. Dockerによるコンテナの実行

ダウンロードしたイメージをもとにインタラクティブにコマンドプロンプトを実行するコンテナを起動します。コンテナに入ったことをホスト名などで確認します。

上記の結果でホスト名が元の端末と違うことと、Versionの部分がホストと違うことを確認します。

ここで表示されたホスト名はコンテナIDになります。exitコマンドでコンテナ上のコマンドプロンプトを終了させた後に確認できます。

以上で、最初のコンテナの実行まで確認できました。

3-3. Hyper-Vコンテナープロセスのホストでの見え方

Hyper-Vコンテナーでは、各コンテナはHyper-V上の仮想マシンとして動くため、コンテナのプロセスは「vmwp.exe」として見えます。このことはコンテナ利用中にホストのタスクマネージャで見ることもできます。

ただし、Hyper-Vを使っているとはいえ、通常の仮想マシンのようにHyper-Vマネージャから見ることはできません。あくまでHyper-Vのハードウェア仮想化機能だけを利用しており、仮想マシンをdockerコマンドで毎回生成しているわけではありません。