.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
, aspnet
및 sdk
이미지에서 사용됩니다.
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
이미지는 동일한 태그가 있는 runtime
및 aspnet
이미지의 토대입니다. 기본적으로 네이티브 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 안정적인 이미지 리포지토리:
이미지 리포지토리 | 이미지 |
---|---|
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 대시보드 | 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 |
야간 Aspire 대시보드 | mcr.microsoft.com/dotnet/nightly/aspire-dashboard |
.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 |
참고 항목
.NET