コンテナーの移植性
適用対象: Windows Server バージョン 23H2
移植性は、Windows Server Annual Channel for Containers の機能です。 移植性により、アップグレード プロセスが合理化され、コンテナーが提供する柔軟性と互換性の強化を最大限に活用できます。 この記事では、コンテナー イメージの移植性を年間チャネル コンテナー ホストに最適化する方法について詳しく説明します。
Windows Server Annual Channel for Containers は、効率を向上させ、Windows コンテナーと Linux コンテナーの両方の移植性を最適化するために、Azure Kubernetes Service とコンテナーに重点を置いた Windows Server デプロイ用に設計された Windows Server のエディションです。 Windows Server のコンテナーの年間チャネルの詳細については、TechCommunity のお知らせを参照してください。
移植性のしくみ
Windows では、多くの場合、コンポーネントがユーザー モードとカーネル モード 密接に結び付けられたモジュール型カーネルを使用します。 緊密にバインドされたコンポーネントは、カーネル モード ドライバーの上にグラフィカル インターフェイスを追加したり、カーネル モードをユーザー モード コンテキスト スイッチに減らすことでパフォーマンスを最適化したりするのに役立ちます。 ただし、コンテナーには課題があります。 移植性により、ユーザー モードで実行されているコンテナーは、ホスト オペレーティング システムのバージョンとは異なるコンテナー イメージ バージョンでワークロードを実行できます。
移植性がないと、ユーザーはイメージとホストのバージョンが一致するワークロードのみを実行できます。 たとえば、Windows Server 2022 ホストを実行しているユーザーは、Windows Server 2019 プロセス分離コンテナーを実行できませんでした。 ホストとコンテナー イメージの間のバージョン管理は、Windows コンテナー化の重要な問題を表しており、コンテナー ホストの新しいバージョンへの移行は困難でした。 たとえば、Windows Server 2022 LTSC では、ホストの更新と同時に、すべてのインフラストラクチャとアプリケーション イメージが最新バージョンに更新されている必要がありました。
アプリケーション バイナリ インターフェイス
アプリケーション バイナリ インターフェイス (ABI) を使用すると、さまざまなプログラミング言語でユーザー およびカーネル モード のインターフェイスを操作できます。 ランタイム オブジェクトとのクライアント コードの対話は最下位レベルで行われます。クライアント言語コンストラクトは、オブジェクトの ABI への呼び出しに変換されます。 Windows コンテナーの移植性により、ユーザーとカーネルの対話に安定した ABI が導入されます。 この安定した ABI は、システムのユーザーコンポーネントとカーネルコンポーネントを切り離し、システムのカーネル要素とユーザー要素を個別に更新する機能を提供します。
コンテナーは、ABI レイヤーを除き、基本レイヤーからすべてのユーザー モード バイナリを実行できます。
次の図は、ユーザー モード コンポーネントとカーネル モード コンポーネント間の通信を示しています。
どのバージョンを使用できますか?
Nano Server、Server Core、および Windows Server コンテナー イメージは、Windows Server 2019 以降を実行するコンテナーの Long-Term サービス チャネル経由でのみ使用できます。 サポートされている Windows Server コンテナー イメージの詳細については、「基本イメージのサービス ライフサイクル を参照してください。
Windows Server バージョン 23H2 コンテナー ホストでは、Windows Server 2022 Long Term Servicing Channel (LTSC) コンテナー イメージのみがサポートされます。
Azure Kubernetes Service では現在、Windows Server 2019 以降のホストがサポートされています。 Windows Server Annual Channel for Containers は、Microsoft が Kubernetes 1.28 と共に提供するもう 1 つのコンテナー OS オプションです。 年間チャネルに基づいて新しいノード プールを作成し、それらのノードに Windows Server 2022 コンテナー イメージを展開し続けることができます。 Microsoft は、年次チャネル バージョンと新しい Kubernetes リリースを年単位で自動的に更新します。 ただし、最新の LTSC リリースに従って、コンテナーが最新であることを確認することもお勧めします。
手記
以前のコンテナー イメージ リリースは、新しいホスト OS で実行できますが、新しいコンテナー イメージ オペレーティング システムは以前のホスト オペレーティング システムでは実行できません。