Windows
docker
コンテナ
windows2016

Windows Server 2016でWindows Serverコンテナーを使い始める

More than 1 year has passed since last update.

この記事は、「クラウド時代のシステム管理」の記事を転記したものです。

Windows Server 2016からDocker APIに対応した「Windows Serverコンテナー」と、より強固なプロセス分離機能を備えた「Hyper-Vコンテナー」の2つのコンテナ技術を利用可能になりました。今回はこのうちWindows Serverコンテナーについて、使い始めるための手順を解説します。

本記事は、Microsoftのこちらのドキュメントをもとに記述しています。以前は一部コマンドのオプションが間違っていましたが、修正されているため、本記事執筆時点では参照先サイトの手順をそのまま実行可能です。


1. Windows Serverコンテナー機能の有効化

事前にWindows Updateを行い、最新のHotfixを適用します。Windows Server 2016リリース直後(RTM)の状態ではコンテナーは正常に動かないためです。次に、サーバーマネージャーから「管理」>「役割と機能の追加」をクリックして機能の追加ウィザードを開始します。開始後、「コンテナー」項目にチェックをつけてインストールを行います。

install-container

インストールが終わったらOS再起動を行います。


2. Dockerのインストール

Windows Server用のDockerをインストールするためには管理者用Windows PowerShellを起動したうえで2つのステップを踏みます。1つ目はPowerShell GalleryからDockerパッケージを管理するためのプロバイダーモジュールをインストールします。

PS C:\> Install-Module -Name DockerMsftProvider -Repository PSGallery –Force

次に実際にDockerパッケージをインストールします。インストールコマンドを実行するとインストールするパッケージを信頼済みにするかどうか聞かれるので「A」と回答します。

PS C:\> Install-Package -Name docker -ProviderName DockerMsftProvider

実際に一連のコマンドを実行すると以下のような表示になります。

Install Docker on Windows PowerShell

インストール完了後、再度OS再起動を実施します。


3. Dockerコマンドでコンテナを起動してみる

OS再起動が完了したらPowerShellを起動して、Dockerのバージョンを表示し、インストールされていることを確認します。

PS C:\> docker version

Client:
Version: 17.03.1-ee-3
API version: 1.27
Go version: go1.7.5
Git commit: 3fcee33
Built: Thu Mar 30 19:31:22 2017
OS/Arch: windows/amd64

Server:
Version: 17.03.1-ee-3
API version: 1.27 (minimum version 1.24)
Go version: go1.7.5
Git commit: 3fcee33
Built: Thu Mar 30 19:31:22 2017
OS/Arch: windows/amd64
Experimental: false
PS C:\>

次に、サンプルのイメージ空コンテナを起動します。今回は.NET CoreのキャラクターBOTを表示するだけのものになります。なお、初回起動時はDocker Hubからイメージをダウンロードするため、インターネットにつながっている必要があります。

PS C:\> docker run microsoft/dotnet-samples:dotnetapp-nanoserver

Dotnet-bot: Welcome to using .NET Core!
__________________
\
\
....
....'
....
..........
.............'..'..
................'..'.....
.......'..........'..'..'....
........'..........'..'..'.....
.'....'..'..........'..'.......'.
.'..................'... ......
. ......'......... .....
. ......
.. . .. ......
.... . .......
...... ....... ............
................ ......................
........................'................
......................'..'...... .......
.........................'..'..... .......
........ ..'.............'..'.... ..........
..'..'... ...............'....... ..........
...'...... ...... .......... ...... .......
........... ....... ........ ......
....... '...'.'. '.'.'.' ....
....... .....'.. ..'.....
.. .......... ..'........
............ ..............
............. '..............
...........'.. .'.'............
............... .'.'.............
.............'.. ..'..'...........
............... .'..............
......... ..............
.....

**Environment**
Platform: .NET Core 1.0
OS: Microsoft Windows 10.0.14393

PS C:\>


4. Windows Serverコンテナー利用時の注意点

Windows ServerコンテナーはLinux上でのDockerコンテナと同じコマンドを使ってWindowsカーネルベースのコンテナを作ることができます。なおWindows Serverコンテナーを使う上での注意点が2つあります。


  1. ホストOSとOSカーネルを共有しているため、Linuxカーネルベースのコンテナを実行することはできません。

  2. たまに正常に実行できない場合がありますが、これはWindowsのサービスにある「Docker」と「Docker for Windows Service」のどちらかが起動していない場合に起きます。サービス一覧(services.msc)を開いて上記2つのサービスが実行中かどうか確認してみましょう。

以上がWindows Serverコンテナーを利用開始するまでの手順でした。