次の方法で共有


.NET コンテナーで対象とする OS

ヒント

このコンテンツは eBook の「コンテナー化された .NET アプリケーションの .NET マイクロサービス アーキテクチャ」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

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 のバージョンを確認できます。

Diagram showing what OS to use with which .NET containers.

図 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)