しばやん雑記

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

Windows Server 2019 の Docker Image と MCR への移行

停止されていた Windows Server 2019 の公開がようやく再開されました。同時に Windows Server 2019 ベースの Server Core / Nano Server イメージも公開が再開されています。

これでようやく LTSC なバージョン上でサイズが縮小された Docker Image を使う準備が出来ました。

既にこれまで Windows Server 2016 を使っていたイメージに 2019 版が追加され始めています。主に .NET Framework 周りは対応が早く、既に ltsc2019 で各種イメージが選べます。

サイズが ltsc2016 と比べて 1/3 近くになっていることも確認できます。やっと実用が可能なサイズに。

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

ASP.NET や ASP.NET Core (Nano Server) や IIS 向けには 2019 はまだ提供されていないですが、既に PR は作成されているので、近日中にリリースされると思われます。

それはそうと今回の 2019 リリースに合わせて、これまで Docker Hub で公開されていたイメージが Microsoft Container Registry からの公開に切り替わっています。

2019 年から latest タグを使わないようにしていくみたいなので、既に latest を使っている場合には注意。

Docker Hub で新しいイメージ名が確認出来るので迷わないと思いますが、MCR は公開されているイメージやタグをブラウズする機能がないので、正直使いにくいなと思います。

一応タグ名は同じでイメージ名だけが変わっているみたいなので、単純な置き換えで済みます。

# これまで
docker pull microsoft/windowsservercore:ltsc2016

# これから
docker pull mcr.microsoft.com/windows/servercore:ltsc2016

命名のルールは MCR の方が分かりやすいです。現実的にはタグは ltsc2016 か ltsc2019 しか使わないと思うので、この二つだけ覚えておけばよいと思います。

今のところは Server Core / Nano Server などの OS ベースとなるイメージや、PowerShell Core / Azure Functions Runtime / SQL Server 2019 Preview などが MCR に移行済みのようです。

https://hub.docker.com/u/microsoft/

.NET Framework や .NET Core 周りのイメージも順次 MCR への移行を進めていく予定のようです。GitHub の Issue にイメージ名のプロポーザルが載っています。

まだリリースされていないし、確定でもないようですが Server Core のように階層化された形で管理されるようです。既に .NET Core のイメージは結構使われているので、バッサリと移行は行わないみたいです。

MCR は当然ながら Azure 上に構築されていて、さらに Traffic Manager を使って各地に分散されているので、Azure Pipelines や Web App for Containers などで使うとネットワーク的に有利な予感です。