しばやん雑記

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

Web App for Containers と ACR Tasks が Windows Server 2019 にアップデートされていた

久し振りに Web App for Containers (Windows) を作成してみたら、ホスト OS が Windows Server 2019 にアップデートされてることに気が付きました。

正式リリースではないですがアップデートはほぼ確実でしょう。これで大幅にサイズが削減された Docker Image を使えるようになりそうです。

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

確認出来たのは West US の Premium Container だったので、、Windows Containers を現実的な時間で扱うためと、パブリックプレビュー中につき互換性問題が発生しないので早々にアップデートしたのでしょう。

前に書いた通り、Windows Server 2019 の Docker Image は 2016 と比較して 1/3 ぐらいになっています。

ただし今のところはベースとなる Server Core や Nano Server のイメージはキャッシュされていないようでした。GA までには改善されるのではないかと思っていますが、キャッシュされていたとしても Deployment Slot を使ったウォームアップは必須でしょう。

前に試した時には Hyper-V Containers なのか裏を取れてなかったですが、今回 2016 版の Nano Server + IIS なイメージをデプロイして動作を確認したので Hyper-V Containers で動いてると確認出来ました。

Process Isolation と異なりメモリ使用量が多いので、PC2 だと割とギリギリなケースが多そうです。実際に 4 サイト分を立ち上げたら、メモリ不足で最後のコンテナが上がってこなくなりました。

とりあえず実際に Windows Server 2019 ベースのイメージをデプロイして試しました。分かりやすくて手っ取り早いので、大体確認には IIS の Docker Image を使うようにしています。

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

IIS のいつもの画面を見せてもしょうがないので、Docker のログで LTSC 2019 でもコンテナが立ち上がってることを確認しました。Server Core のイメージがキャッシュされていないので時間はかかりましたが、それでも LTSC 2016 と比べると圧倒的に速いです。

今は Azure Portal 側のバリデーションが 2019 のイメージに対応していないので、Portal から 2019 のイメージを設定しようとするとエラーになります。ARM Explorer や Azure CLI からなら回避できるはずです。

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

Web App for Containers の Windows Server 2019 化によって実行環境は整いそうなので Docker Image のビルド周りを調べてみると、ACR Tasks がひっそりと Windows Server 2019 にアップデートされたようです。

これも実際に LTSC 2019 のイメージを使うように変更してビルドさせると、問題なく終わりました。

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

以前に調べた時は Version 1803 だったので、ACR Tasks は割と対応が早い方のようです。

ACR Tasks は Hyper-V Containers で動いていることを以前に確認していたので、もちろん LTSC 2019 より古いイメージも扱えるので現時点では最強感があります。

残念ながら Azure DevOps や AppVeyor などは 2019 にアップデートされていません。気長に待ちましょう。

今回は Web App for Containers (Windows) だけのアップデートでしたが、順当にいけば 2016 のアップデートの時のように、特定のリージョンから通常の App Service も 2019 になっていくのだと思います。