.NET コンテナーで対象とする OS
ヒント
このコンテンツは eBook の「コンテナー化された .NET アプリケーションの .NET マイクロサービス アーキテクチャ」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。
Docker でサポートされるオペレーティング システムの多様性と .NET Framework と .NET 8 の違いを考慮すると、使用しているフレームワークに応じて、特定の OS と特定のバージョンをターゲットにする必要があります。
Windows の場合、Windows Server Core または Windows Nano Server を使用できます。 これらの Windows バージョンでは、.NET Framework または .NET 8 で必要になる可能性があるさまざまな特性 (Windows Server Core の IIS と Nano Server の Kestrel のようなセルフホステッド Web サーバー) が提供されます。
Linux の場合、複数のディストリビューションを利用できます。また、Linux は公式の .NET Docker イメージ (Debian など) でサポートされています。
図 3-1 では、使用されている .NET Framework に応じて利用可能な OS のバージョンを確認できます。
図 3-1. .NET Framework のバージョンに応じて対象にすることができるオペレーティング システム
.NET Framework のレガシー アプリケーションをデプロイする場合は、レガシー アプリと IIS と互換性がある、Windows Server Core をターゲットにする必要がありますが、より大きなイメージが含まれます。 .NET 8 アプリケーションを展開する場合、クラウドに最適化され、Kestrel が使用され、小型で起動速度が速い Windows Nano Server をターゲットにすることができます。 Debian や Alpine などをサポートしている Linux もターゲットにすることができます。
別の Linux ディストリビューションを使用したい場合や、Microsoft が提供していないバージョンのイメージが必要な場合は、独自の Docker イメージを作成することもできます。 たとえば、従来の .NET Framework と Windows Server Core 上で実行されている ASP.NET Core を使用してイメージを作成することができます (ただし、Docker の場合はあまり一般的ではないシナリオです)。
Dockerfile ファイルにイメージ名を追加すると、次の例のように、使用するタグに応じてオペレーティング システムとバージョンを選択できます。
Image | Comments |
---|---|
mcr.microsoft.com/dotnet/runtime:8.0 | .NET 8 マルチアーキテクチャ: Docker ホストに応じて Linux と Windows Nano Server をサポートします。 |
mcr.microsoft.com/dotnet/aspnet:8.0 | ASP.NET Core 8.0 マルチアーキテクチャ: Docker ホストに応じて Linux と Windows Nano Server をサポートします。 aspnetcore イメージでは、ASP.NET Core 用に 少しの最適化が行われています。 |
mcr.microsoft.com/dotnet/aspnet:8.0-bullseye-slim | Linux Debian ディストリビューション上の .NET 8 ランタイムのみ |
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 | Windows Nano Server 上の .NET 8 ランタイムのみ (Windows Server バージョン 1809) |
.NET