前回の連載では、ローカル開発環境でのコンテナベースのアプリの開発と、コンテナ対応クラウドへのアプリのデプロイについて基本的なことを説明しました。今回と次回は、Windowsコンテナ対応のコンテナ環境をオンプレミスに導入する際の選択肢とその手順について説明します。
Windowsコンテナに対応するためのサーバーOS要件
コンテナベースのローカルの開発環境としては、以前に紹介したWindows 10/11を含むマルチプラットフォーム対応のDocker Desktopが人気です。
Docker Desktopは、個人、スモールビジネス、教育機関、非商用オープンソースプロジェクトでは無料、それ以外の場合はPro(月額5ドル)/Team(月額9ドル)/Business(月額24ドル)のいずれかの有料サブスクリプションを購入して利用します。
前回の連載では、開発したアプリのコンテナイメージを、Microsoft Azureのコンテナ対応サービスへのデプロイについて簡単に紹介しました。今回は、アプリをオンプレミスのコンテナホスト(サーバー)環境にデプロイして運用することを考えます。
マイクロソフトのWindowsコンテナのサポートポリシー(オンプレミスのシナリオでの Windows Server コンテナのサポート ポリシー)に説明されているとおり、Windowsコンテナは以下のサーバーOSでサポートされています。
Windowsコンテナは基本的にバージョンの上位互換はないため、これらのOSは同一バージョン(ビルド)のWindowsコンテナをプロセス分離モードで、下位バージョン(ビルド)のWindowsコンテナをHyper-V分離モードで実行することができます。
●Windows Server 2022 StandardまたはDatacenter
●Windows Server 2019 StandardまたはDatacenter
●Windows Server 2016 StandardまたはDatacenter
●Azure Stack HCI
※Azure Stack HCIバージョン20H2はWindows Server 2019ベースに構築されたOSビルド(17784)、バージョン21H2はWindows Server 2022と同一のOSビルド(20348)、年内にバージョン23H2がリリースされる予定。
つまり、最新OSを利用すれば、対応バージョンの選択肢が増えるわけです。例えば、Windows Server 2022のコンテナーホストでは、Windows Server 2022(Nano Serverを含む)のWindowsコンテナをプロセス分離モードで、Windows Server 2019および2016のWindowsコンテナをHyper-V分離モードで実行できます。一方、Windows Server 2016コンテナホストでは、Windows Server 2016のWindowsコンテナしか実行できません(Windows Server 2016のNano Serverはすでに廃止)。
Windows Server 2022以降、上位互換の制限が緩和され、新しいバージョン(ビルド)のコンテナホストでWindows Server 2022のWindowsコンテナをプロセス分離モードで実行できるようになりました。例えば、Windows 11(22000以降)のDocker Desktopでは、Windows Server 2022のWindowsコンテナをプロセス分離モードで実行できます。
また、以前お伝えしたように、マイクロソフトは2023年後半から、コンテナホスト向けのOSとして年間(年次)チャネルリリースWindows Server Annual Channel for Containers を提供します。
2023年7月に最初のバージョンのプレビューが開始されています。2023年10月末には、最初のバージョンとなる「Windows Server, version 23H2」(OSビルド25398)がマイクロソフトボリュームライセンスセンター(VLSC)およびVisual Studioサブスクリプションで利用可能になりました。
この新しいOSを利用すれば、最新のOSを実行するプラットフォーム上で、Windows Server 2022のWindowsコンテナをプロセス分離モードで引き続き実行できるようになります。Windows Server Annual Channelは、特にプロセス分離モードのみをサポートするAzure Kubernetes Srevice(ASK)およびAKSハイブリッド環境において、最新のプラットフォームをコンテナに提供できるという利点があります。
コンテナランタイム(エンジン)の選択肢
Windows Server上では、以下のいずれかのコンテナランタイムを利用することができます。
●Mirantis Container Runtime(MCR) ・・・ かつてDocker Enterpriseと呼ばれていたエンタープライズ向けDockerランタイム
●containerd ・・・ kubernetes(k8s) v1.23以降で採用されている業界標準のコンテナランタイム。Hyper-V分離コンテナについては、Containerd v1.7以降で限定的にサポート
●Docker Community Edition(Docker CE) ・・・ Mobyプロジェクトで管理されているDockerランタイム
このうち、マイクロソフトによるサポートが提供されるのは、AKSで使用されるcontainerdのみになります。containerdはスタンドアロン環境に導入することも可能ですが、オンプレミスの大規模な運用環境として導入する場合は、Azure Stack HCIまたはWindows Serverフェールオーバークラスターに比較的簡単に導入できる「AKSハイブリッド」(前者はAKS on Azure Stack HCIとも呼ばれます)を利用することをお勧めします。
Windows Server 2016のリリース以降、マイクロソフトはDocker Enterprise(Docker EE)の使用権とサポートをWindows Serverに付属する形で提供してきましたが、2022年9月にそれをMirantis社に移管しました。そのため、MCRを使用するには、Mirantis社が提供する有償サブスクリプションを購入する必要があります。
また、Docker CE/Mobyのサポートはコミュニティベースになりますが、完全に無料で導入することができ、MCRと同じように使用できます。