次の方法で共有


.NET コンテナー イメージ

.NET には、さまざまなシナリオのさまざまなコンテナー イメージが用意されています。 この記事では、さまざまな種類の画像とその使用方法について説明します。 公式イメージの詳細については、Docker Hub: Microsoft .NET リポジトリを参照してください。

タグ付けスキーム

.NET 8 以降では、コンテナー イメージの区別方法がより実用的になります。 画像を区別するには、次の特性が使用されます。

  • アプリのターゲット フレームワーク モニカー (TFM)。
  • OS、バージョン、アーキテクチャ。
  • イメージの種類 (たとえば、runtimeaspnetsdk)。
  • 画像のバリアント (たとえば、*-distroless*-chiseled)。
  • 画像機能 (たとえば、*-aot*-extra)。

サイズに合わせて最適化された画像

次の画像は、可能な限り最小の画像サイズにすることを目的としています。

  • アルパイン
  • マリナー ディストロレス
  • Ubuntu chiseled

これらのイメージは、ICU や tzdata などのグローバリゼーションの依存関係が含まれていないため、小さくなります。 これらのイメージは、グローバリゼーション インバリアント モード用に構成されているアプリでのみ機能します。 不変グローバリゼーション用にアプリを構成するには、次のプロパティをプロジェクト ファイルに追加します。

<PropertyGroup>
  <InvariantGlobalization>true</InvariantGlobalization>
</PropertyGroup>

ヒント

SDK イメージは、*-distroless または *-chiseled イメージの種類に対して生成されません。 複合イメージは、Core CLR 向けの最小の aspnet オファリングです。

グローバリゼーションに適した画像

グローバリゼーションを必要とするコンテナー化されたアプリは、グローバリゼーションの依存関係を必要とするため、イメージ のサイズを拡大します。 Ubuntu と Debian のイメージには、ICU と tzdata が既にインストールされています。

tzdata 依存関係が次の画像に追加されました。

  • runtime-deps:8.0-jammy
  • runtime-deps:8.0-bookworm-slim

このグローバリゼーション戦術は、同じタグを持つ runtimeaspnet、および sdk 画像によって使用されます。

重要

Debian bookworm イメージに tzdata を追加しても、tzdata (Debian にまだ含まれていない) の更新がない限り、実用的な効果はありません。その時点で、.NET イメージには新しい tzdata が含まれます。

Kerberos、LDAP、msquic など、一部のパッケージは引き続き省略可能です。 これらのパッケージは、ニッチなシナリオでのみ必要です。

シナリオ ベースのイメージ

runtime-deps のイメージには、特に標準ユーザーとポートの定義が含まれていることから、重要な価値があります。 自己完結型およびネイティブ AOT シナリオに使用すると便利です。 ただし、ランタイムsdk イメージで必要な runtime-deps イメージを提供するだけでは、想像を絶するシナリオをすべて有効にしたり、最適なイメージを生成したりするには不十分です。

runtime-deps のニーズは、ネイティブの AOT、*-distroless、および *-chiseled イメージの種類にも及びます。 OS ごとに、3 つのイメージ バリアントが提供されます (すべて runtime-deps)。 *-chiseled イメージを使用する次の例を考えてみましょう。

  • 8.0-jammy-chiseled: コア CLR 用のイメージ。tzdata または ICU はありません。
  • 8.0-jammy-chiseled-aot: ネイティブ AOT 用のイメージ。tzdata、ICU、stdc++ はありません。
  • 8.0-jammy-chiseled-extra: コア CLR とネイティブ AOT の両方のイメージには、tzdata、ICU、stdc++ が含まれます。

シナリオの観点から:

8.0-jammy-chiseled イメージは、同じタグの runtime イメージと aspnet イメージのベースです。 既定では、ネイティブ AOT アプリはサイズに合わせて最適化されているため、8.0-jammy-chiseled-aot イメージを使用できます。 グローバリゼーション機能を必要とするネイティブ AOT アプリと Core CLR 自己完結型/単一ファイル アプリでは、8.0-jammy-chiseled-extraを使用できます。

Alpine と Mariner のイメージでは、同じスキームが使用されます。

手記

Debian と Ubuntu (非チゼル) runtime-deps イメージには複数のバリエーションがありません。

ネイティブ AOT のコンテナー イメージ

ネイティブ AOT イメージは、sdk リポジトリに発行され、-aot サフィックスでタグ付けされます。 これらのイメージにより、ネイティブ AOT アプリの構築が可能になります。 これらは、一致する runtime-deps:*-aot イメージを持つディストリビューション用に作成されます。 これらのイメージは大きく、通常の SDK イメージの 2 倍のサイズが一般的です。

AOT イメージは次の目的で公開されます。

  • アルパイン
  • 船員
  • Ubuntu

詳細については、「ネイティブ AOT デプロイ」を参照してください。

Docker ハブ リポジトリ

.NET 用の公式の Microsoft イメージはすべて、microsoft-dotnet Docker Hub 組織に公開されます。 次のリポジトリについて考えてみましょう。

.NET の安定したイメージリポジトリ:

イメージ リポジトリ 画像
sdk mcr.microsoft.com/dotnet/sdk
aspnet mcr.microsoft.com/dotnet/aspnet
runtime mcr.microsoft.com/dotnet/runtime
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
monitor mcr.microsoft.com/dotnet/monitor
aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard
samples mcr.microsoft.com/dotnet/samples

.NET のイメージ (ナイトリー版) リポジトリ:

イメージ リポジトリ 画像
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor mcr.microsoft.com/dotnet/nightly/monitor
nightly-runtime-deps mcr.microsoft.com/dotnet/nightly/runtime-deps
nightly-runtime mcr.microsoft.com/dotnet/nightly/runtime
nightly-sdk mcr.microsoft.com/dotnet/nightly/sdk
nightly-aspire-dashboard mcr.microsoft.com/dotnet/nightly/aspire-dashboard

.NET Framework イメージ リポジトリ:

イメージ リポジトリ 画像
framework mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
framework-runtime mcr.microsoft.com/dotnet/framework/runtime
フレームワークサンプル mcr.microsoft.com/dotnet/framework/samples
framework-sdk mcr.microsoft.com/dotnet/framework/sdk
framework-wcf mcr.microsoft.com/dotnet/framework/wcf

関連項目