しばやん雑記

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

Windows Server Insider Preview Build 17035 で Windows Containers 周りが改善

ちょっと前に次の Semi-Annual Channel 向けの Windows Server Inside Preview がリリースされてました。ぶちぞう RD が空リプしてましたが、6 時とか完全に寝てるので気が付きません。

S2D とか個人的にはどうでもよくて、やっぱり注目はずっと WinNAT 周りの制約と言い続けてきた、ループバックアドレスでコンテナにアクセスできない点が解消されたことです。

  • Developers can now use localhost or loopback (127.0.0.1) to access services running in containers on the host
Announcing Windows Server Insider Preview Build 17035 - Windows Experience BlogWindows Experience Blog

Windows Containers では docker run 時に指定したポートフォワーディングの指定が実質的には動作しておらず、docker inspect を叩いてコンテナの IP アドレスを取得して、直接見に行くことしか出来ませんでした。

それが次の Semi-Annual Channel では解消されて、他のプラットフォーム上の Docker と同じように、簡単にループバックアドレスを使ってアクセス出来るようになります。多分 Windows 10 でも同じでしょう。

ちゃんと Azure 上に Nested VM を作成して、ループバックアドレスで見れるか確認しました。

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

見ての通り、問題なくループバックアドレスでポートフォワーディングが動いてることが分かりました。

Visual Studio の Docker 拡張は docker inspect を内部的に叩いているので、将来的にはループバックアドレスを使うように挙動が変更されるかも知れません。

そしてブログには書いていませんでしたが、Insider Preview の Docker Image をダウンロードしてくると、Version 1709 と比べて Server Core は 1GB ほどサイズが削減されていました。

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

Insider Preview の段階では IIS / ASP.NET / .NET Framework などの Insider 向けイメージが提供されていないので、今回は IIS だけ GitHub から Dockerfile などを落としてきて、自分でイメージをビルドしました。

初期の Server Core が展開後 10GB ほどあったことを考えると、半分以下になったことになります。

今の Version 1709 でも初回にかかる時間が半分ぐらいになっていて、割と我慢できるぐらいの時間になってますが、さらに短縮される可能性がありそうです。そろそろプロダクションで使ってみたい。