.NET 컨테이너 이미지

.NET은 여러 다른 시나리오를 위한 다양한 컨테이너 이미지를 제공합니다. 이 문서에서는 다양한 형식의 이미지와 그 사용 방법을 설명합니다. 공식 이미지에 대한 자세한 내용은 Docker 허브: Microsoft .NET 리포지토리를 참조하세요.

태그 지정 체계

.NET 8부터 컨테이너 이미지를 구분하는 데 더욱 실용적인 방식이 사용됩니다. 이미지를 구분하는 데 다음과 같은 특징을 사용합니다.

  • 앱의 TFM(대상 프레임워크 모니커).
  • OS, 버전, 아키텍처.
  • 이미지 형식(예: runtime, aspnet, sdk).
  • 이미지 변형(예: *-distroless, *-chiseled).
  • 이미지 기능(예: *-aot, *-extra).

크기에 최적화된 이미지

다음 이미지는 가능한 최소한의 크기를 가져오는 데 초점을 맞췄습니다.

  • Alpine
  • Mariner distroless
  • 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, aspnetsdk 이미지에서 사용됩니다.

Important

Debian 책벌레 이미지에 tzdata를 추가하는 것은 tzdata(Debian에 아직 포함되지 않은)에 대한 업데이트로 최신 tzdata가 .NET 이미지에 포함되지 않는 한 실질적인 효과가 없습니다.

Kerberos, LDAP, msquic와 같은 일부 패키지는 여전히 선택 사항입니다. 이러한 패키지는 틈새 시나리오에서만 필요합니다.

시나리오 기반 이미지

runtime-deps 이미지는 특히 표준 사용자와 포트 정의를 포함하기 때문에 상당한 값을 갖습니다. 이 이미지는 자체 포함 및 네이티브 AOT 시나리오에서 사용하기에 편리합니다. 하지만 런타임sdk 이미지에 필요한 runtime-deps 이미지만 제공하는 것으로는 상상할 수 있는 모든 시나리오를 사용하거나 최적의 이미지를 생성하는 데 충분하지 않습니다.

runtime-deps의 필요성은 네이티브 AOT, *-distroless*-chiseled 이미지 형식까지 확장됩니다. 각 OS에 대해 세 가지 이미지 변형이 제공됩니다(모두 runtime-deps 포함). *-chiseled 이미지를 사용하는 다음 예제를 고려해 보세요.

  • 8.0-jammy-chiseled: Core CLR용 이미지로, tzdata 또는 ICU 없음.
  • 8.0-jammy-chiseled-aot: 네이티브 AOT용 이미지로, tzdata, ICU 또는 stdc++ 없음.
  • 8.0-jammy-chiseled-extra: Core CLR 및 네이티브 AOT용 이미지로, tzdata, ICU 및 stdc++ 포함.

시나리오의 관점에서:

8.0-jammy-chiseled 이미지는 동일한 태그가 있는 runtimeaspnet 이미지의 토대입니다. 기본적으로 네이티브 AOT 앱은 크기에 최적화되어 있으므로 8.0-jammy-chiseled-aot 이미지를 사용할 수 있습니다. 세계화 기능이 필요한 Core CLR 자체 포함/단일 파일 앱 및 네이티브 AOT 앱에는 8.0-jammy-chiseled-extra을(를) 사용할 수 있습니다.

Alpine 이미지와 Mariner 이미지는 동일한 구성표를 사용합니다.

참고 항목

Debian 및 Ubuntu(chiseled 외) runtime-deps 이미지에는 여러 변형이 없습니다.

네이티브 AOT 컨테이너 이미지

네이티브 AOT 이미지는 sdk 리포지토리에 게시되고 -aot 접미사로 태그가 지정됩니다. 이러한 이미지를 사용하면 네이티브 AOT 앱을 빌드할 수 있습니다. 일치하는 runtime-deps:*-aot 이미지를 사용하여 배포판용으로 만들어집니다. 보통 이러한 이미지는 일반 SDK 이미지의 두 배 정도로 크기가 큽니다.

AOT 이미지는

  • Alpine
  • Mariner용으로 게시
  • Ubuntu

자세한 내용은 네이티브 AOT 배포를 참조하세요.

Docker 허브 리포지토리

.NET용 공식 Microsoft 이미지는 모두 microsoft-dotnet Docker Hub 조직에 게시됩니다. 다음 리포지토리를 고려해 보세요.

.NET 안정적인 이미지 리포지토리:

이미지 리포지토리 이미지
aspnet mcr.microsoft.com/dotnet/aspnet
monitor mcr.microsoft.com/dotnet/monitor
monitor-base mcr.microsoft.com/dotnet/monitor/base
runtime-deps mcr.microsoft.com/dotnet/runtime-deps
runtime mcr.microsoft.com/dotnet/runtime
samples mcr.microsoft.com/dotnet/samples
sdk mcr.microsoft.com/dotnet/sdk

.NET 야간 이미지 리포지토리:

이미지 리포지토리 이미지
nightly mcr.microsoft.com/dotnet/nightly
nightly-aspnet mcr.microsoft.com/dotnet/nightly/aspnet
nightly-monitor-base mcr.microsoft.com/dotnet/nightly/monitor/base
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

.NET Framework 이미지 리포지토리:

이미지 리포지토리 이미지
프레임워크 mcr.microsoft.com/dotnet/framework
framework-aspnet mcr.microsoft.com/dotnet/framework/aspnet
framework-runtime mcr.microsoft.com/dotnet/framework/runtime
framework-samples mcr.microsoft.com/dotnet/framework/samples
framework-sdk mcr.microsoft.com/dotnet/framework/sdk
framework-wcf mcr.microsoft.com/dotnet/framework/wcf

참고 항목