2016/10/15

Windows Server 2016: Docker 対応の手順が変わった

Windows Server 2016 を Windows コンテナーのコンテナー ホストとしてセットアップする手順が、9 月末の Windows Server 2016 評価版公開時の手順とは異なる手順になりました。今日時点で日本語版のページ (en-us を ja-jp) は古い手順のままなのでご注意。

Container Host Deployment - Windows Server (Last Updated: 10/14/2016)
[URL] https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment
Container host deployment - Nano Server (Last Updated: 10/14/2016)
[URL] https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano




旧手順はコンテナーの機能と Hyper-V の役割 (Hyper-V コンテナーを利用する場合のみ) を有効化して、商用 Docker バイナリを Invoke-WebRequest で持ってきて、C:\Program Files\docker に展開し、システム環境変数 Path に追加して、Docker デーモンをサービス登録する (dockerd --register-service) という手順でした。新しい手順は、Windows Server 2016 と Nano Server 共通で、PSGallery 提供の DockerMsftProvider プロバイダーと docker パッケージを使って簡単にできるようになっています。

PS C:\> Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
PS C:\> Install-Package -Name docker -ProviderName DockerMsftProvider
PS C:\> Restart-Computer -Force
PS C:\> docker pull microsoft/windowsservercore
PS C:\> docker pull microsoft/nanoserver

Install-Package コマンドは「・・・からソフトウェアをアンインストールしますか?」と聞いてきますが、Y で「インストール」です。英語版だとちゃんと「Are you sure you want to install software from ...」と出ますので、翻訳ミス。

Hyper-V コンテナーをサポートする場合は、Hyper-V の役割を自分でインストールする必要がありますが、コンテナーの機能については Install-Package -Name docker ... がやってくれます。ただし、Nano Server の場合は自分でインストールする必要があるかも。

以前の手順で構築済みの場合、どうすればよいのか案内が無いのがちょっと不親切。新しく構築し直したほうがいいかもしれません。

Docker のバージョンは 1.12.2-cs2-ws-beta-rc1 から 1.12.2-cs2-ws-beta になってました。

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


Windows コンテナーのイメージもサイズがちょっと大きくなっているので、新しいバージョンのものに差し替えられている模様。

C:\> docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
microsoft/nanoserver   latest              93a9c37b36d0        3 weeks ago         8.68 MB

microsoft/nanoserver   latest              e14bc0ecea12        3 weeks ago         810 MB

docker inspect コマンドでベース OS イメージの情報を調べてみると... 10.0.14393.321 でした。




Windows 10 上 のコンテナーに関しては、今日時点では変更はなく、従来の方法のまま(※Windows 10 用の Docker 1.13.0-dev が新しいベース OS イメージに対応できてないっぽく、動かなくなったかも。動かすには CS Docker 1.12.2 が必要だとさ https://social.msdn.microsoft.com/Forums/en-US/54e36123-ff07-4f6a-8b61-e6ce6d358ef7/using-the-latest-base-os-images-and-updating-docker?forum=windowscontainers、対処方法はこちらWindows Server と Nano Server が商用 Docker (CS Docker)なのに対して、Windows 10 はオープンソース Docker を使っている点に注意。商用 Docker のサポートが提供されるのは Windows Server です。

Windows Containers on Windows 10 (Last Updated: 10/10/2016)
[URL] https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10

それと、SQL Server 2016 Express を含むコンテナー イメージ (windowsservercore ベース) も Docker Hub の microsoft リポジトリで利用可能になっています。

SQL Server 2016 Express Edition in Windows containers
[URL] https://blogs.technet.microsoft.com/dataplatforminsider/2016/10/13/sql-server-2016-express-edition-in-windows-containers/

こんな感じでできました。


インスタンス名が SQLEXPRESS であること、ポートマッピングで 1433 以外にした場合は、コンテナーホスト\SQLEXPRESS, ポート番号 で接続すること。コンテナー ホスト上の SQL Management Studio から接続する場合は、NAT サブネットの IP アドレスの 1433 に接続すること。このあたりに気を付けて。コンテナーに割り当てられた NAT サブネットの IP アドレスを確認する方法はこちら(メモ: Windows コンテナーの種類を Docker コマンドで確認するには)。SQLServer Management Studio はこちら(https://msdn.microsoft.com/ja-jp/library/mt238290.aspx)。

追記)

Nano Server の場合、やはり Install-Package -Name docker ...はコンテナー (Containers) のパッケージをインストールしてくれませんでした。後から、Nano Serverにコンテナーパッケージを追加した場合は、WindowsUpdate を再実行しましょう。KB3176936 がインストールされていないと、docker run で固まる (Stop-Service dockerするしか逃げ道なし) かもです。
確認、確認






0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。