しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Server Version 1709 で Docker と Windows Containers を使ってみる

自宅の検証用 Windows Server 2016 を Version 1709 にアップグレードしたので、例によって Docker 周りで気になる部分だけまとめておくことにします。Tech Summit は Version 1709 ベースで話したいですし。

Windows Server Blog や Azure Blog では Azure Marketplace から使えると書いてますが、最近になってようやく Marketplace に 1709 が出てくるようになりました。

f:id:shiba-yan:20171107020751p:plain

例によって Azure の場合は Dv3 / Ev3 を選ぶことで Nested Virtualization を使って Hyper-V Containers が利用可能になります。それにしても対応リージョン増えないですね。

自宅に NUC で作ったマシンがあったので、MSDN から Version 1709 の ISO をダウンロードしてきて、インストールしてみることにしました。気軽にインストールしたら少しはまったので軽くそこから書きます。

ちなみに Linux Containers についてはムッシュが既に書いているので、そっちを参照してください。

流石ムッシュ、SQL Server だけじゃなくて Docker も Linux Container も出来る。

Version 1709 は Server Core / Nano Server のみ

Insider Preview の時は Server Core しか提供されてなかったのは知っていたのですが、GA になればデスクトップ付きもリリースされるだろ、と甘く思って自宅 Windows Server 2016 のアップグレードを行ったところ、Server Core になっていて焦りました。

思わずぶちぞう RD に相談するぐらい焦りました。ちゃんとドキュメント読んでなかったです。

ドキュメントには Semi Annual Channel では Server Core と Nano Server のみとしっかりと書いてあります。そろそろサーバーでデスクトップとか言う現状を、捨てる必要があるのかも知れませんね。

Long-term Servicing は今後どのようにアップデートされていくのかもよくわかりませんが、基本的には Semi Annual Channel に乗っかっていくのが現実的な選択肢なのかと思いました。

特に Windows Containers を使う場合には追従は必須だと思われます。

Docker のインストール

Microsoft のドキュメントだと DockerMsftProvider を使うように書いてますが、微妙にバージョンが古いのが落ちてくるようになってます。この現状に Docker の人がしびれを切らしたのか、fork されて DockerProvider というのが配布されています。

なので Docker 側のドキュメントでは DockerProvider を使うようにと書いてあります。

といっても使い方はほぼ変わらず、DockerMsftProvider から DockerProvider に変えるだけです。

Install-Module DockerProvider -Force
Install-Package Docker -ProviderName DockerProvider -Force

これでインストールが完了しますが、Hyper-V Containers を使う場合には別途 Hyper-V をインストールする必要があります。

Install-WindowsFeature Hyper-V

自分の環境では何故かコンテナからインターネットへの通信が出来ない事象が発生しました。ぶちぞう RD と話しながら解決策を探しましたが、結局わからなかったので Azure に構築しました。

Version 1709 向け Docker Image

Version 1709 では Server Core / Nano Server のイメージサイズが大幅に削減されています。Nano Server は Debian と同じぐらいにまで小さくなってますし、Server Core もまあまあ小さくなりました。

今のところ Docker Hub で公開されている Version 1709 向けイメージは以下の通りです。

# Server Core 1709
docker pull microsoft/windowsservercore:1709
docker pull microsoft/dotnet-framework:4.7.1-windowsservercore-1709
docker pull microsoft/iis:windowsservercore-1709
docker pull microsoft/aspnet:4.7.1-windowsservercore-1709

# Nano Server 1709
docker pull microsoft/nanoserver:1709
docker pull microsoft/aspnetcore:2.0.0-nanoserver-1709

タグ名の付け方は大体見たらわかるような感じですね。

f:id:shiba-yan:20171107021107p:plain

新しい Version 1709 向け Docker Image を使うには当然ながらホストが Version 1709 である必要があるので、今のところは自前で環境を用意する必要があるのが少し辛いところです。

VSTS や AppVeyor も Server Core のみ提供の 1709 に対応してくるかわからないので、下手したら CI サービス全滅という可能性もありそうです。