Web App for ContainersのWindowsコンテナ対応が最新OSベースに刷新――Azure各種サービスのWindowsコンテナ対応状況まとめ:Microsoft Azure最新機能フォローアップ(76)
Webアプリのデプロイにコンテナイメージを使用できる「Web App for Containers」のWindowsコンテナ対応(プレビュー)が、Windows Server 2019ベースのイメージに対応しました。Windowsコンテナ対応のその他のサービスと併せて、現時点での対応状況をまとめました。
Web App for ContainersがWindows Server 2019に対応(プレビュー)
「Azure App Service」は、WebアプリをホスティングするためのPaaS(Platform as a Service)型マネージドサービスです。その中の「Web Apps」(旧称、WebSites)は、Windows/Linuxのいずれかを選択して、.NET、Java、Node.js、PHP、Python(Windows)、または.NET Core、Node.js、Java、PHP、Ruby(Linux)で開発したWebアプリの簡単なデプロイとスケールを提供します。
LinuxベースのWeb Appsは「Web Apps Linux」とも呼ばれ、Dockerイメージ(Linuxコンテナイメージ)を使用したWebアプリのデプロイに対応した「Web App for Containers」とともに2017年9月から一般提供されました。Web App for Containersを利用すると、Web Appsで定義済みのアプリケーションスタックとは別のスタック環境を、Docker公式イメージやカスタムイメージを利用して準備することができます。
Dockerのコンテナ技術は、Linuxベースで誕生し、発展してきたものです。MicrosoftはDockerとの協業により、Windows Serverの長期サービスチャネル(Long-Term Servicing Channel:LTSC)の一世代前のWindows Server 2016でDockerのコンテナ技術に対応し、Windows ServerのServer CoreまたはNano ServerをベースOSイメージとした「Windowsコンテナ」(プロセス分離のWindows Serverコンテナおよび仮想化分離のHyper-Vコンテナ)の作成をサポートするようになりました。
2018年8月からは、Web App for Containersにおいて、Windows Server 2016のServer CoreおよびNano Server(このバージョンのNano Serverイメージは2018年10月にサービス終了)ベースのWindowsコンテナサポートがパブリックプレビューとして提供されています。
- Announcing the public preview of Windows Container Support in Azure App Service(2018年8月8日)[英語](Microsoft Azure)
2019年4月初めに、Windowsコンテナ対応のWeb App for Containers用のコンテナホスト環境が、最新のLTSCバージョンであるWindows Server 2019ベースに刷新されました。
- Public preview:Windows Server 2019 container support in Azure App Service(2019年4月3日)[英語](Microsoft Azure)
これにより、Windows Server 2016(LTSC)のServer Coreイメージに加えて、以下に示すWindows Server 2019(LTSC)、Windows Server, version 1803(SAC)、Windows Server, version 1709(SAC)のServer Coreイメージと、Windows Server version 1809(SAC)のNano Serverイメージのサポートが加わりました(画面1)。
- Windows Server 2019 Server Core(mcr.microsoft.com/windows/servercore:ltsc2019)
- Windows Server, version 1809 Nano Server(mcr.microsoft.com/windows/nanoserver:1809)
- Windows Server, version 1803(mcr.microsoft.com/windows/servercore:1803)
- Windows Server, version 1709(mcr.microsoft.com/windows/servercore:1709)
- Windows Serve 2016 Server Core(mcr.microsoft.com/windows/servercore:ltsc2016)
※Windows Server, version 1803以前のNano Serverのサポートは、今回の発表には含まれていません。
※Windows Server 2016バージョンのNano Server(microsoft/nanoserver:latest、sac2016)は既にサービス終了、Windows Server, version 1709のイメージは2019年4月9日にサービス終了予定(いずれも18カ月間のSACサポートポリシーにより)
なお、Windowsコンテナ対応のWeb App for Containersが、パブリックプレビュー提供であることに変わりはありません。また、Windowsコンテナを作成可能なリージョンや料金プランに制限があることにも留意してください。2019年4月初めの時点で利用可能なリージョンは、米国東部(East US)、米国西部(West US)、北ヨーロッパ(North Europe)、西ヨーロッパ(West Europe)、オーストラリア東部(Australia East)、東南アジア(Southeast Asia)です。また、Windowsコンテナの作成には、「PC2 Premiumコンテナ」(Azure Compute Unit合計320、8GBメモリ、Dv3計算能力)以上のプランが必要です。
AzureのWindowsコンテナ対応状況
Windows ServerにおけるDockerコンテナ技術のサポートは、Windows Server 2016(LTSC)から始まり、Windows Server半期チャネル(Semi-Annual Channel:SAC)で改良、改善され、その最新版がWindows Server 2019(LTSC)とWindows Server, version 1809(SAC)に反映されています。
大きな改善点の一つは、ベースOSイメージの大幅な縮小によるコンパクト化と起動時間の短縮です。例えば、Windows Server 2016のServer Coreイメージは11GBを超えますが、Windows Server 2019はその半分以下の4.28GBです。Nano Serverイメージは.NET Coreに最適化され、さらにコンパクト化されています。
既にサポートが終了したWindows Server 2016のNano Server(nanoserver:latestまたはsac2016)は、2018年10月の最後の更新バージョン(ビルド14393.2551)で1.17GBなのに対し、最新のWindows Server, version 1809のNano Server(nanoserver:1809)のサイズは、2019年3月の更新バージョン(ビルド17763.379)で244MBしかありません。
パブリックプレビュー段階ですが、現状、Web App for Containersは、Windows Server 2019が提供する最新のコンテナ技術の恩恵を受けることができる唯一のサービスです。Microsoft Azureには、他にもDockerコンテナ技術に対応した以下のサービスがありますが、これらサービスのWindowsコンテナへの対応状況、日本(東日本、西日本)リージョンでの利用可能性について、2019年4月時点での状況をまとめます。
- Azure Container Instances(ACI)
- Azure Kubernetes Service(AKS)
- Azure Container Service(ACS)
・Azure Container Instances(ACI)
「Azure Container Instances(ACI)」は、2018年4月に一般提供が開始されたマネージドサービスです。ACIの特徴は、サーバレスでLinuxコンテナまたはWindowsコンテナのイメージをデプロイし、アプリを迅速に展開できることです。Azureで最も迅速かつ簡単にコンテナを実行する方法といえるでしょう。
ACIは一般提供開始時点でWindowsコンテナを正式にサポートしており、現在は東日本リージョンでも利用可能です。なお、WindowsコンテナのサポートはWindows Server 2016(LTSC)ベースであり、現在はWindows Server 2016のServer Coreイメージのみがサポートされます(画面2)。
画面2 「Azure Container Instances(ACI)」では、WindowsコンテナとしてWindows Server 2016のServer Coreイメージをサポート。後継のSAC/LTSCバージョンには対応していない
Windows Server SACやWindows Server 2019のServer Core、Nano Serverイメージは使用できません。以前サポートされていた、Windows Server 2016のNano Serverイメージは、2018年10月にサービス終了となっています。今後、Windowsコンテナのホスト環境がWindows Server 2019ベースに刷新されることがあれば、Web App for Containersと同様に最新のコンテナ技術の恩恵を受けられるようになるでしょう。
・Azure Kubernetes Service(AKS)
「Azure Kubernetes Service(AKS)」は、Kubernetesクラスタの作成と管理、クラスタへのコンテナのデプロイと操作を可能にするマネージドサービスです。このサービスは2018年6月に一般提供が始まり、その後間もなく、東日本リージョンでも利用可能になりました。AKSとACIは連携でき、Kubernetesクラスタの容量不足時にACIを仮想ノードとして追加することで、スケールアウトすることが可能です(Virtual Kubeletを使用)。
Windows Server 2019はKubernetesをサポートしており、KubernetesクラスタにWindows Serverベースのノードを追加すれば、Windowsコンテナをデプロイ可能です。しかし、現状、AKSではWindows Serverベースのノードはサポートされておらず、使用できません。
そのため、AKSのKubernetesクラスタに直接デプロイできるのは、Linuxコンテナに限定されます。ただし、Virtual Kubeletを使用してACIでWindowsコンテナをスケジュールし、それをAKSのクラスタの一部として管理することはできます。
・Azure Container Service(ACS)
「Azure Container Service(ACS)」は、運用環境で使用できるDC/OSまたはDocker Swarmクラスタを簡単かつ迅速に構築し、Linuxコンテナをデプロイできるマネージドサービスとしてスタートしました。その後、Kubernetesにも対応しましたが、AKSの一般提供開始によりACSはAKSに置き換えられた形になります。ACSのサービスは引き続き利用可能ですが、2020年1月31日に廃止される予定です。
ACSを利用している場合は、それまでに以下のアナウンスで説明されているように、AKSまたはAzure IaaSに構築したクラスタ環境に移行してください。既に作成済みのクラスタやクラスタ上のアプリは2020年1月31日以降も引き続き動作しますが、操作が制限される他(スケーリングできなくなるなど)、Azureのサポート対象からも外れます。
- Azure Container Serviceは2020年1月31日に廃止予定(Microsoft Azure)
最新情報(2019年5月18日追記)
Azure Kubernetes Service(AKS)のWindows Serverコンテナ対応のプレビューが開始されました。 Windows Serverコンテナは、Kubernetesバージョン1.13.5および1.14.0のWindows Server 2019ノードにおいて、Windows Server 2019のベースOSイメージでプレビューサポートされます。
- Announcing the preview of Windows Server containers support in Azure Kubernetes Service[英語](Microsoft Azure)
筆者紹介
山市 良(やまいち りょう)
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2018/7/1)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 開発者に朗報! Windows 10でWindows Serverコンテナが実行可能に
Windows 10の開発者向け機能として、Dockerによる「Windowsコンテナ」のサポートがあります。これまでは、Hyper-Vで分離された「Hyper-Vコンテナ」だけがサポートされていましたが、最新の「Docker Desktop for Windows」では、「Windows Serverコンテナ」もサポートされました。 - WindowsのDocker(コンテナ)対応、正しく理解できていますか?
Windows Server 2016とWindows 10では「Docker」がサポートされます。一方、Docker社は「Docker for Windows」を提供しています。どちらも“Docker”ですが、両者は似て非なるもの。似たものがいろいろと出てきていますので、整理しておきましょう。 - 「Windows Serverコンテナ」「Hyper-Vコンテナ」「Linuxコンテナ」「Docker」の違いとは?
軽量なアプリケーション実行環境であるコンテナ機能がWindows OSでも使えるようになった。Windowsコンテナには2種類あるが、その違いは? Linuxコンテナとは何が違う? - Kubernetes 1.14がリリース、Windowsコンテナサポートが安定版に到達
Kubernetesプロジェクトは2019年3月25日(米国時間)、Windowsノードの本番サポートなどを盛り込んだKubernetes 1.14をリリースしたと発表した。Kubernetes 1.14では、安定性に重点を置き、既にβ版などとして搭載している機能を成熟させることに力を注いだという。