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

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

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

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

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

インストールが終わったら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

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

インストール完了後、再度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コンテナーを利用開始するまでの手順でした。