軽量なアプリケーション実行環境として急速に普及しつつあるコンテナ機能がWindows OSでも使えるようになった。Windows Server 2016にコンテナ機能をインストールする方法を紹介する。
対象OS:Windows Server 2016
Windows Server 2016(およびWindows 10 Anniversary Update以降)では、「Windowsコンテナ」機能が利用できるようになった。これはLinux上ですでに広く使われているLinuxコンテナ(Docker)技術をベースにして、Windows OS上でもコンテナ機能を利用できるようにしたものである。
ただしコンテナ上ではLinuxのプログラムではなく、Windows OS向けのプログラムが動くようになっている。.NET FrameworkやIIS、PowerShellなどの実行環境として利用することが想定されている。
その一方でDockerのクライアントツールとは互換性があり、例えばDockerコマンドによってコンテナの管理・運用などができる。
Windows Server 2016で利用できるWindowsコンテナの種類には「Windows Serverコンテナ」と「Hyper-Vコンテナ」の2種類があるが、インストール手順は変わらない。Windows Server 2016にHyper-V機能をインストールしておくとHyper-Vコンテナも利用できるが、そうでなければWindows Serverコンテナのみが利用できる。それぞれの違いについては、以下の記事も参照のこと。
ホストOS | Windows Serverコンテナ | Hyper-Vコンテナ |
---|---|---|
特長 | 軽量・高速 | より高い隔離性 |
Windows Server 2016 (GUI/Server Core) |
○ | ○ |
Nano Server | ○ | ○ |
Windows 10 | ×(サポートなし) | ○ |
Windows OSと利用可能なコンテナの種類 これ以外にもDocker社から「Docker for Windows」というソフトウェアが提供されている。これを使うと、Windows 10のHyper-V上に軽量Linuxを載せ、Linuxコンテナを実行することができる。詳細は「無償のDocker for Windowsで手軽にLinuxコンテナを利用する」参照のこと。 |
本TIPSでは、Windows Server 2016にWindowsコンテナ機能をインストールする方法についてまとめておく*1。以下のページも参照していただきたい。Nano ServerやWindows 10にインストールする手順は大きく異なるので、今後別TIPSで紹介する。
*1 Windows Server 2016のWindowsコンテナサポートはまだベータ版の段階であり、インストール手順などは今後変更される可能性がある。その場合は本記事を随時更新する。
Windows Server 2016でWindowsコンテナ機能を利用するには、まずRTM版のWindows Server 2016(GUI版でもServer Core版のどちらでもよい。評価版でも可)をクリーンインストール後、最新のWindows Updateを適用しておくこと。
手元で試した限りでは、最新のWindows Updateを適用していない環境では、一部のバージョンのDockerが正しく動作しないことがあった。
Hyper-Vコンテナを使うつもりならHyper-Vの役割もインストールしておく(Windows Serverコンテナしか使うつもりがなければスキップしてもよい)。
Hyper-Vのインストールは、GUI環境なら「サーバー マネージャー」の[管理]メニューの[役割と機能の追加]から行える。あるいは、管理者権限で起動したPowerShell上で次のコマンドを実行してもよい(Server Coreインストールの場合はPowerShellで機能を追加する)。
Hyper-V機能を追加したらシステムを再起動しておく。
# Hyper-V機能の追加と再起動
Install-WindowsFeature hyper-v -ReStart
なおWindows Server 2016を別のWindows Server 2016のHyper-V仮想環境上で動作させ、その上でさらにHyper-Vコンテナを利用したい場合は、「Nested Hyper-V」機能を有効にする必要がある。具体的な操作については以下のページの「Hyper-V コンテナー ホスト」の項を参照していただきたい。
次はパッケージマネージャ(OneGet PowerShellモジュール)を使って、Windowsのコンテナ機能の有効化とDockerプログラムのインストール、サービスとしての登録などを行う。
# DockerMsftProviderプロバイダーのインストール
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
# コンテナ機能の有効化やDockerプログラムのインストールなど
Install-Package -Name docker -ProviderName DockerMsftProvider
# 再起動
Restart-Computer -Force
途中で「続行するには NuGet プロバイダーが必要です〜〜」「パッケージは、信頼済みとマークされていないパッケージ ソースから取得されています。〜〜」というメッセージが表示された場合は、[Y]キーを入力して先へ進める。
以上の操作後、最後にシステムを再起動するとコンテナ機能が使えるようになっているはずである。正しく動作しない場合は、「C:\Program Files\Docker」フォルダにDocker.exeなどの実行ファイルがインストールされているか、「Docker」サービスが実行中になっているか、などを確認する。
インストールできたら、管理者権限のあるコマンドプロンプトを開き、次のようなコマンドを実行して動作確認を行う。Dockerのより進んだ使い方については、今後別途解説する。
※Dockerのサーバとクライアントのバージョンを調べる
docker version
※Dockerのインストール状態などを調べる
docker info
※サンプルの.NETプログラムを実行してみる
docker run microsoft/sample-dotnet
※Windowsコンテナイメージをダウンロードする
docker pull microsoft/nanoserver
※イメージを確認する
docker images
※Nano ServerをWindowsコンテナで起動して、コマンドプロンプトを開く
docker run -it microsoft/nanoserver cmd
※デフォルトのWindowsコンテナではなく、Hyper-Vコンテナとして実行してみる
docker run --isolation hyperv -it microsoft/nanoserver cmd
※プロセスの状態を調べる
docker ps -a
以下、実行例を示しておく。
C:\>docker version ……バージョンの確認。管理者権限がないとエラーになる
Client:
Version: 1.12.2-cs2-ws-beta ……クライアントのバージョン
API version: 1.25
Go version: go1.7.1
Git commit: 050b611
Built: Tue Oct 11 02:35:40 2016
OS/Arch: windows/amd64
Server:
Version: 1.12.2-cs2-ws-beta
API version: 1.25
Go version: go1.7.1
Git commit: 050b611
Built: Tue Oct 11 02:35:40 2016
OS/Arch: windows/amd64 ……サーバーOSタイプ
C:\>docker run microsoft/sample-dotnet ……イメージをダウンロードして実行してみる
Unable to find image 'microsoft/sample-dotnet:latest' locally ……最初はローカルにないというメッセージが出る
latest: Pulling from microsoft/sample-dotnet ……自動的にダウンロードが始まる
5496abde368a: Pull complete
94b4ce7ac4c7: Pull complete
63bdf90566f8: Pull complete
79ed70626dde: Pull complete
496616488484: Pull complete
02bb3a400fc0: Pull complete
b3db97eb7544: Pull complete
5c2937ff5981: Pull complete
03ed02706ee5: Pull complete
Digest: sha256:a117db5eaefa14448997c43122825b750e0deb0e8e3018ecf99c151055c7efd8
Status: Downloaded newer image for microsoft/sample-dotnet:latest
Welcome to .NET Core! ……以下実行結果。このような文字(絵)が表示されればインストールは成功
__________________
\
\
....
....'
....
..........
.............'..'..
................'..'.....
.......'..........'..'..'....
……(以下省略)……
C:\>docker run -it microsoft/nanoserver cmd ……Nano Serverコンテナを実行する
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\>dir ……コンテナ内での実行例
Volume in drive C has no label. ……コンテナOS(Nano Server)は英語版になっている
Volume Serial Number is 9285-A3F5
Directory of C:\
10/10/2016 02:57 PM 1,894 License.txt
07/16/2016 09:20 PM <DIR> Program Files
07/16/2016 09:09 PM <DIR> Program Files (x86)
10/25/2016 09:44 AM <DIR> Users
10/25/2016 09:44 AM <DIR> Windows
1 File(s) 1,894 bytes
4 Dir(s) 21,244,088,320 bytes free
C:\>exit ……コンテナを終了させる
C:\>docker run --isolation hyperv -it microsoft/nanoserver cmd ……今度はHyper-Vコンテナで実行してみる。Windows Serverコンテナと比較すると、起動にやや時間がかかる
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. All rights reserved.
C:\>powershell ……Nano Serverは基本的にはPowerShellで管理する
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS C:\> Get-ComputerInfo ……Nano Serverの状態などを確認できる
WindowsBuildLabEx : 14393.0.amd64fre.rs1_release.160715-1616
WindowsCurrentVersion : 6.3
WindowsEditionId : ServerDatacenterNano
WindowsInstallationType : Nano Server
WindowsInstallDateFromRegistry : 10/25/2016 12:53:29 AM
WindowsProductId :
WindowsProductName : Windows Server 2016 Datacenter
……(以下省略)……
■関連リンク
Copyright© Digital Advantage Corp. All Rights Reserved.