다음을 통해 공유


.NET 컨테이너 이미지

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

태그 지정 체계

.NET 8부터 컨테이너 이미지는 차별화되는 방식에서 더 실용적입니다. 이미지를 구분하는 데 사용되는 특징은 다음과 같습니다.

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

크기에 최적화된 이미지

다음 이미지는 가능한 가장 작은 이미지 크기를 초래하는 데 초점을 맞췄습니다.

  • 알파인
  • 마리너 디스트로리스
  • Ubuntu 조각된

이러한 이미지는 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 책벌레 이미지에 tzdata를 추가하는 것은 tzdata(Debian에 아직 포함되지 않음)에 대한 업데이트가 없는 한 실질적인 효과가 없으며, 이때 .NET 이미지에는 최신 tzdata가 포함됩니다.

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

시나리오 기반 이미지

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

runtime-deps 필요성은 네이티브 AOT, *-distroless*-chiseled 이미지 형식으로도 확장됩니다. 각 OS에 대해 세 가지 이미지 변형이 제공됩니다(모두 runtime-deps). *-chiseled 이미지를 사용하는 다음 예제를 살펴보겠습니다.

  • 8.0-jammy-chiseled: tzdata 또는 ICU가 없는 Core CLR용 이미지.
  • 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 이미지를 사용할 수 있습니다. 세계화 기능이 필요한 네이티브 AOT 앱 및 Core CLR 자체 포함/단일 파일 앱은 8.0-jammy-chiseled-extra사용할 수 있습니다.

Alpine 및 Mariner 이미지는 동일한 체계를 사용합니다.

메모

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

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

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

AOT 이미지는 다음을 위해 게시됩니다.

  • 알파인
  • 선원
  • Ubuntu

자세한 내용은 Native AOT 배포참조하세요.

Docker 허브 리포지토리

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

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

이미지 리포지토리 이미지
sdk mcr.microsoft.com/dotnet/sdk
aspnet mcr.microsoft.com/dotnet/aspnet
런타임 mcr.microsoft.com/dotnet/runtime
런타임-deps mcr.microsoft.com/dotnet/runtime-deps
모니터 mcr.microsoft.com/dotnet/monitor
Aspire 대시보드 mcr.microsoft.com/dotnet/aspire-dashboard
샘플 mcr.microsoft.com/dotnet/samples

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

이미지 리포지토리 이미지
야간 aspnet mcr.microsoft.com/dotnet/nightly/aspnet
야간 모니터 mcr.microsoft.com/dotnet/nightly/monitor
야간 런타임-의존성 mcr.microsoft.com/dotnet/nightly/runtime-deps
야간 런타임 mcr.microsoft.com/dotnet/nightly/runtime
야간 SDK mcr.microsoft.com/dotnet/nightly/sdk
나이트리 아스파이어 대시보드 mcr.microsoft.com/dotnet/nightly/aspire-dashboard

.NET Framework 이미지 저장소 :

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

참고