.NET コンテナー イメージ
.NET には、さまざまなシナリオのさまざまなコンテナー イメージが用意されています。 この記事では、さまざまな種類の画像とその使用方法について説明します。 公式イメージの詳細については、Docker Hub: Microsoft .NET リポジトリを参照してください。
タグ付けスキーム
.NET 8 以降では、コンテナー イメージの区別方法がより実用的になります。 画像を区別するには、次の特性が使用されます。
- アプリのターゲット フレームワーク モニカー (TFM)。
- OS、バージョン、アーキテクチャ。
- イメージの種類 (たとえば、
runtime
、aspnet
、sdk
)。 - 画像のバリアント (たとえば、
*-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
このグローバリゼーション戦術は、同じタグを持つ runtime
、aspnet
、および 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 |
関連項目
.NET