Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ãªãã¡ã¬ã³ã¹èšäºã§ã¯ã.NET ã¢ããªãã³ã³ãããŒãšããŠçºè¡ãããšãã«çæãããã³ã³ãã㌠ã€ã¡ãŒãžãæ§æããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãã®èšäºã§ã¯ãã€ã¡ãŒãžãå®è¡ç°å¢ãããã³ã³ã³ãããŒã®èµ·åæã«å®è¡ãããã³ãã³ããå¶åŸ¡ããããã«èšå®ã§ããããŸããŸãªããããã£ã«ã€ããŠèª¬æããŸãã
ã³ã³ãããŒæ§æã§ã¯ã次㮠MSBuild ããããã£ãšé ç®ã䜿çšã§ããŸãã
| ããããã£ãŸãã¯ã¢ã€ãã | 説æ |
|---|---|
ContainerAppCommand |
ã¢ããªã®è«çãšã³ã㪠ãã€ã³ãã |
ContainerAppCommandArgs |
ã¢ããªã«è«ççã«å¿ èŠãªåŒæ°ã |
ContainerAppCommandInstruction |
ãšã³ããªãã€ã³ããšã³ãã³ãã®çµã¿åããæ¹æ³ãå¶åŸ¡ããŸãã |
ContainerArchiveOutputPath |
ã³ã³ãã㌠ã€ã¡ãŒãžã tar.gz ã¢ãŒã«ã€ããšããŠæžã蟌ããã¹ã |
ContainerBaseImage |
ã³ã³ãããŒã«äœ¿çšããåºæ¬ã€ã¡ãŒãžã |
ContainerDefaultArgs |
ã¢ããªã®ãŠãŒã¶ãŒãªãŒããŒã©ã€ãå¯èœãªæ¢å®ã®åŒæ°ã |
ContainerEntrypoint |
(éæšå¥š)ãã€ããªã¯ãã³ã³ãããŒã®èµ·åæã«å®è¡ãããŸãã |
ContainerEntrypointArgs |
(éæšå¥š) ContainerEntrypointã®æ¢å®ã®åŒæ°ã |
ContainerEnvironmentVariable |
ã³ã³ãããŒã«è¿œå ãããç°å¢å€æ°ã |
ContainerFamily |
åºæ¬ã€ã¡ãŒãžã®ãã¡ã㪠ããªã¢ã³ã ( alpineãªã©)ã |
ContainerImageFormat |
ã€ã¡ãŒãžåœ¢åŒ: Docker ãŸã㯠OCIã |
ContainerImageTag |
ã€ã¡ãŒãžã«å¯ŸããŠçæãããã¿ã°ã |
ContainerLabel |
ã³ã³ãã㌠ã€ã¡ãŒãžã«è¿œå ãããã¡ã¿ããŒã¿ ã©ãã«ã |
ContainerPort |
ã³ã³ãããŒã«ãã£ãŠå ¬éããã TCP ãŸã㯠UDP ããŒãã |
ContainerPublishInParallel |
ãã«ã RID çºè¡ã䞊åã§å®è¡ãããã©ãããå¶åŸ¡ããŸãã |
ContainerRegistry |
çºè¡æžã¿ã€ã¡ãŒãžã®å®å ã¬ãžã¹ããªã |
ContainerRepository |
ã³ã³ãã㌠ã€ã¡ãŒãžã®ååã |
ContainerRuntimeIdentifier(s) |
ã³ã³ãããŒã® OS ãšã¢ãŒããã¯ãã£ã |
ContainerUser |
ã³ã³ãããŒãå®è¡ãããæ¢å®ã®ãŠãŒã¶ãŒã |
ContainerWorkingDirectory |
ã³ã³ãããŒå ã®äœæ¥ãã£ã¬ã¯ããªã |
LocalRegistry |
DockerãPodmanã wslcãApple ã® container CLI ãªã©ã䜿çšããããŒã«ã« ã³ã³ãã㌠ããŒã«ã |
ã³ã³ãããŒã®ããããã£ãæ§æãã
çæãããã³ã³ãããŒã®å€ãã®åŽé¢ã¯ãMSBuild ããããã£ã䜿çšããŠå¶åŸ¡ã§ããŸãã äžè¬ã«ã Dockerfile ã§ã³ãã³ãã䜿çšããŠããã€ãã®æ§æãèšå®ã§ããå Žåã¯ãMSBuild ã䜿çšããŠåãæäœãè¡ãããšãã§ããŸãã
æèš
ããã«å¯Ÿããå¯äžã®äŸå€ã¯ãRUN ã³ãã³ãã§ãã ã³ã³ãããŒã®æ§ç¯æ¹æ³ã«ããããããã®ã³ãã³ãããšãã¥ã¬ãŒãããããšã¯ã§ããŸããã ãã®æ©èœãå¿
èŠãªå Žåã¯ã Dockerfile ã䜿çšããŠã³ã³ãã㌠ã€ã¡ãŒãžããã«ãããããšãæ€èšããŠãã ããã
.NET SDK ã䜿çšã㊠RUN ã³ãã³ããå®è¡ããæ¹æ³ã¯ãããŸããã ãããã®ã³ãã³ãã¯ãå€ãã®å Žåãäžéšã® OS ããã±ãŒãžãã€ã³ã¹ããŒã«ããããæ°ãã OS ãŠãŒã¶ãŒãäœæããããä»»æã®æ°ã®ãã®ãäœæãããããããã«äœ¿çšãããŸãã .NET SDK ã³ã³ãããŒæ§ç¯æ©èœãåŒãç¶ã䜿çšããå Žåã¯ã代ããã«ããããã®å€æŽã䜿çšããŠã«ã¹ã¿ã åºæ¬ã€ã¡ãŒãžãäœæããŠããããã®åºæ¬ã€ã¡ãŒãžã䜿çšã§ããŸãã 詳现ã«ã€ããŠã¯ãContainerBaseImageãåç
§ããŠãã ããã
åºæ¬ã€ã¡ãŒãžãå¶åŸ¡ãããã©ã°
次ã®ããããã£ã¯ãã³ã³ãããŒã«äœ¿çšããåºæ¬ã€ã¡ãŒãžãšãã®éžææ¹æ³ãå¶åŸ¡ããŸãã
ContainerBaseImage
ã³ã³ãããŒã®åºæ¬ã€ã¡ãŒãž ããããã£ã¯ãã€ã¡ãŒãžã®åºç€ãšããŠäœ¿çšãããã€ã¡ãŒãžãå¶åŸ¡ããŸãã æ¢å®ã§ã¯ããããžã§ã¯ãã®ããããã£ã«åºã¥ããŠæ¬¡ã®å€ãæšè«ãããŸãã
- ãããžã§ã¯ããèªå·±å®çµåã®å Žåã
mcr.microsoft.com/dotnet/runtime-depsã€ã¡ãŒãžãåºæ¬ã€ã¡ãŒãžãšããŠäœ¿çšãããŸãã - ãããžã§ã¯ãã ASP.NET Core ãããžã§ã¯ãã®å Žåã
mcr.microsoft.com/dotnet/aspnetã€ã¡ãŒãžãåºæ¬ã€ã¡ãŒãžãšããŠäœ¿çšãããŸãã - ãã以å€ã®å Žåã¯ã
mcr.microsoft.com/dotnet/runtimeã€ã¡ãŒãžãåºæ¬ã€ã¡ãŒãžãšããŠäœ¿çšãããŸãã
ç»åã®ã¿ã°ã¯ãéžæãã TargetFrameworkã®æ°å€ã³ã³ããŒãã³ãã§ãããšæšå®ãããŸãã ããšãã°ãnet6.0 ãã¿ãŒã²ãããšãããããžã§ã¯ãã§ã¯ãæšè«ãããåºæ¬ã€ã¡ãŒãžã® 6.0 ã¿ã°ãäœæãããnet7.0-linux ãããžã§ã¯ãã§ã¯ 7.0 ã¿ã°ã䜿çšãããŸãã
ããã§å€ãèšå®ããå Žåã¯ãããŒã¹ãšããŠäœ¿çšããã€ã¡ãŒãžã®å®å šä¿®é£Ÿå (ä»»æã®ã¿ã°ãå«ã) ãèšå®ããå¿ èŠããããŸãã
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0</ContainerBaseImage>
</PropertyGroup>
.NET SDK ããŒãžã§ã³ 8.0.200 以éã§ã¯ãContainerBaseImage æšè«ãæ¹åããããµã€ãºãšã»ãã¥ãªãã£ãæé©åãããŸããã
-
linux-musl-x64ãŸãã¯linux-musl-arm64ã©ã³ã¿ã€ã èå¥åã察象ãšãããšããããžã§ã¯ãã確å®ã«å®è¡ãããããã«ãalpineã€ã¡ãŒãžããªã¢ã³ããèªåçã«éžæãããŸãã- ãããžã§ã¯ãã§
PublishAot=trueã䜿çšããå Žåã¯ãæé©ãªãµã€ãºãšã»ãã¥ãªãã£ã®ããã«åºæ¬ã€ã¡ãŒãžã®nightly/runtime-depsjammy-chiseled-aotããªã¢ã³ãã䜿çšãããŸãã - ãããžã§ã¯ãã§
InvariantGlobalization=falseã䜿çšããå Žåã¯ãããŒã«ã©ã€ãºãåŒãç¶ãæ©èœããããã«ã-extraããªã¢ã³ãã䜿çšãããŸãã
- ãããžã§ã¯ãã§
ã€ã¡ãŒãžããªã¢ã³ãã®ãµã€ãºãšç¹æ§ã®è©³çްã«ã€ããŠã¯ãã.NET 8.0 Container Image Size Report
ContainerFamily
.NET 8 以éã§ã¯ãContainerFamily MSBuild ããããã£ã䜿çšããŠãMicrosoft ãæäŸããå¥ã®ã³ã³ãã㌠ã€ã¡ãŒãž ãã¡ããªãã¢ããªã®åºæ¬ã€ã¡ãŒãžãšããŠéžæã§ããŸãã ãã®å€ãèšå®ãããšãéžæãã TFM åºæã®ã¿ã°ã®æ«å°Ÿã«ãã®å€ã远å ãããæå®ãããã¿ã°ã倿ŽãããŸãã ããšãã°ã.NET åºæ¬ã€ã¡ãŒãžã® Alpine Linux ããªã¢ã³ãã䜿çšããã«ã¯ãContainerFamily ã alpineã«èšå®ã§ããŸãã
<PropertyGroup>
<ContainerFamily>alpine</ContainerFamily>
</PropertyGroup>
äžèšã®ãããžã§ã¯ãæ§æã§ã¯ã.NET 8 ã¿ãŒã²ãã ã¢ããªã® 8.0-alpine ã®æçµçãªã¿ã°ãçæãããŸãã
ãã®ãã£ãŒã«ãã¯èªç±åœ¢åŒã§ãããå€ãã®å ŽåãããŸããŸãªãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãæ¢å®ã®ããã±ãŒãžæ§æããŸãã¯åºæ¬ã€ã¡ãŒãžã«å¯Ÿãããã®ä»ã®å€æŽã® ãã¬ãŒã㌠ãéžæããããã«äœ¿çšã§ããŸãã ãã®ãã£ãŒã«ãã¯ãContainerBaseImage ãèšå®ãããŠããå Žåã¯ç¡èŠãããŸãã 詳现ã«ã€ããŠã¯ãã.NET ã³ã³ãã㌠ã€ã¡ãŒãž
ContainerRuntimeIdentifier(s)
ContainerRuntimeIdentifier ããããã£ã¯ãContainerBaseImage ãè€æ°ã®ãã©ãããã©ãŒã ããµããŒãããŠããå Žåã«ãã³ã³ãããŒã® OS ãšã¢ãŒããã¯ãã£ãæå®ããŸãã ããšãã°ãmcr.microsoft.com/dotnet/runtime ã€ã¡ãŒãžã§ã¯ãlinux-x64ãlinux-armãlinux-arm64ãããã³ win10-x64ããµããŒããããŸãã æ¢å®ã§ã¯ãããã¯ã³ã³ãããŒã®çºè¡æã«äœ¿çšããã RuntimeIdentifier ã«èšå®ãããŸãã éåžžããã®ããããã£ãæç€ºçã«èšå®ããå¿
èŠã¯ãããŸããã代ããã«ã-r ã³ãã³ãã§ dotnet publish ãªãã·ã§ã³ã䜿çšããŸãã éžæããã€ã¡ãŒãžãæå®ãã RuntimeIdentifierããµããŒãããŠããªãå Žåããšã©ãŒã¯ãµããŒããããŠããèå¥åã瀺ããŸãã
ãã®ããããã£ã䜿çšããå¿
èŠããŸã£ãããªãããã«ãContainerBaseImage ããããã£ã«ã¯åžžã«ãã¿ã°ãå«ãå®å
šä¿®é£Ÿã€ã¡ãŒãžåãèšå®ã§ããŸãã
<PropertyGroup>
<ContainerRuntimeIdentifier>linux-arm64</ContainerRuntimeIdentifier>
</PropertyGroup>
è€æ°ã¢ãŒããã¯ã㣠ã€ã¡ãŒãžã«è€æ°ã®ã³ã³ãã㌠ã©ã³ã¿ã€ã èå¥åãæå®ããã«ã¯ãè€æ°ã® ContainerRuntimeIdentifiersãèšå®ããã®ãšåæ§ã«ãTargetFrameworks ããããã£ã§ã»ãã³ãã³ã§åºåãããã©ã³ã¿ã€ã èå¥åã®ã»ããã䜿çšããŸãã
<PropertyGroup>
<ContainerRuntimeIdentifiers>linux-x64;linux-arm64</ContainerRuntimeIdentifiers>
</PropertyGroup>
倧äºãª
ContainerRuntimeIdentifiers ããããã£ã¯ãRuntimeIdentifiers ããããã£ã®ãµãã»ããã§ããå¿
èŠããããŸãã ãã®æ¡ä»¶ãæºããããŠããªãå Žåããã«ã ãã€ãã©ã€ã³ã®éèŠãªéšåã倱æããå¯èœæ§ããããŸãã
è€æ°ã® ContainerRuntimeIdentifiers ãèšå®ãããšããã«ãã¢ãŒããã¯ã㣠ã€ã¡ãŒãžãäœæãããŸãã 詳现ã«ã€ããŠã¯ãã ãã«ãã¢ãŒããã¯ã㣠ã€ã¡ãŒãžããåç
§ããŠãã ããã
æèš
.NET 8 以éã§ã¯ãMicrosoftã®ã³ã³ãã㌠ã€ã¡ãŒãžã«ãããã§ã¹ã ãªã¹ãWindowsããªã¢ã³ããå«ãŸããŠããŸããã Windowsãã¿ãŒã²ããã«ããã«ã¯ãç¹å®ã®ã€ã¡ãŒãž ã¿ã°ã ContainerBaseImage (äŸ: mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-ltsc2022) ãšããŠäœ¿çšããŸãã
.NET ã§ãµããŒããããã©ã³ã¿ã€ã èå¥åã®è©³çްã«ã€ããŠã¯ãRID ã«ã¿ãã°ã®
ãã«ãã¢ãŒããã¯ã㣠ã€ã¡ãŒãž
ãã«ãã¢ãŒããã¯ã㣠ã€ã¡ãŒãžã䜿çšãããšã1 ã€ã®ã³ã³ãã㌠ã€ã¡ãŒãžã§è€æ°ã®ã¢ãŒããã¯ãã£ããµããŒãã§ãããããã¯ãã¹ãã©ãããã©ãŒã ã®éçºãšãããã€ãç°¡åã«ãªããŸãã .NET SDK ã§ã¯ã ContainerRuntimeIdentifiers ããããã£ã䜿çšããŠããããµããŒãããŠããŸãã
SDK ããŒãžã§ã³ 8.0.405ã9.0.102ãããã³ 9.0.2xx 以éã§ã¯ããã«ã RID ã³ã³ãããŒã®çºè¡ããµããŒããããŠããŸãã
/t:PublishContainerã䜿çšããŠçºè¡ããå Žå:
- 1 ã€ã®
RuntimeIdentifierãŸãã¯ContainerRuntimeIdentifierãæå®ãããšã以åãšåæ§ã«åäžã¢ãŒããã¯ã㣠ã³ã³ãããŒãçæãããŸãã - 1 ã€ã®
RuntimeIdentifierãæå®ãããŠããããè€æ°ã®RuntimeIdentifiersãŸãã¯ContainerRuntimeIdentifiersãèšå®ãããŠããå ŽåãSDK ã¯æå®ããã RID ããšã«ã¢ããªãçºè¡ããçµæã®ã€ã¡ãŒãžã OCI ã€ã¡ãŒãž ã€ã³ããã¯ã¹ã«çµåããŸãã ãã®ã€ã³ããã¯ã¹ã䜿çšãããšãè€æ°ã®ã¢ãŒããã¯ãã£åºæã®ã€ã¡ãŒãžã§ 1 ã€ã®ååãå ±æã§ããŸãã
æèš
ContainerRuntimeIdentifiers ããããã£ã¯ãRuntimeIdentifiers ããããã£ã®ãµãã»ããã§ããå¿
èŠããããŸãã 詳现ã«ã€ããŠã¯ãã ContainerRuntimeIdentifiersããåç
§ããŠãã ããã
ãã®æ©èœã«ãããæ··åã¢ãŒããã¯ãã£ç°å¢ã§ã®ã³ã³ãã㌠ã¯ãŒã¯ãããŒãåçåãããŸãã ããšãã°ã linux-x64 ãã¹ãã®éçºè
ã¯ã linux-x64 ãš linux-arm64ã®äž¡æ¹ããµããŒãããã³ã³ãããŒãçºè¡ã§ãããããã€ã¡ãŒãžåãã©ãã«ã倿Žããããšãªããããããã®ã¢ãŒããã¯ãã£ã«ãããã€ã§ããŸãã
çæããã OCI ã€ã¡ãŒãž ã€ã³ããã¯ã¹ã¯ãææ°ã®ã³ã³ãã㌠ããŒã«ã§åºããµããŒããããŠãããäºææ§ãšäœ¿ããããã匷åãããŠããŸãã
çæãããã€ã¡ãŒãžã«äŸåããªãã¡ã¿ããŒã¿ãå¶åŸ¡ãããã©ã°
次ã®ããããã£ã¯ãã¿ãŒã²ãã ã©ã³ã¿ã€ã èå¥åã«é¢ä¿ãªããçæãããã³ã³ãã㌠ã€ã¡ãŒãžã«é©çšãããã¡ã¿ããŒã¿ãšæ§æãå¶åŸ¡ããŸãã
ContainerImageFormat
ContainerImageFormat MSBuild ããããã£ã䜿çšããŠãã€ã¡ãŒãžåœ¢åŒãDockerãŸãã¯OCIãšããŠæå®ã§ããŸãã æ¢å®ã§ã¯ã.NET ããŒã«ã¯åºæ¬ã€ã¡ãŒãžãã圢åŒãæšæž¬ããŸãã ããšãã°ã.NET åºæ¬ã€ã¡ãŒãžã§ã¯ãDocker åºæã®åœ¢åŒ application/vnd.docker.distribution.manifest.v2+jsonã䜿çšãããŸãã ãã ããå€ãã®ææ°ã®ããŒã«ã§ã¯ãOCI 圢åŒã® application/vnd.oci.image.manifest.v1+jsonãåªå
ãããŸãã ç¹å®ã®åœ¢åŒã匷å¶ããã«ã¯ã次ã®ããã«ããããã£ãèšå®ããŸãã
<PropertyGroup>
<ContainerImageFormat>OCI</ContainerImageFormat>
</PropertyGroup>
ã©ã¡ãã®åœ¢åŒããæ å ±ã倱ãããšãªããã»ãšãã©äº€æå¯èœã§ãã
æèš
ãã«ãã¢ãŒããã¯ã㣠ã€ã¡ãŒãžããã«ãããå Žåãçµæã®ã€ã¡ãŒãžåœ¢åŒã¯åžžã« OCI ã«ãªããŸãã
ContainerImageTag
ã³ã³ãã㌠ã€ã¡ãŒãž ã¿ã° ããããã£ã¯ãã€ã¡ãŒãžã«å¯ŸããŠçæãããã¿ã°ãå¶åŸ¡ããŸãã 1 ã€ã®ã¿ã°ãæå®ããã«ã¯ãContainerImageTag ã䜿çšããè€æ°ã®ã¿ã°ã«ã¯ ContainerImageTagsã䜿çšããŸãã
倧äºãª
ContainerImageTagsã䜿çšãããšãäžæã®ã¿ã°ããšã« 1 ã€ãã€ãè€æ°ã®ç»åãäœæãããŸãã
ã¿ã°ã¯ãå€ãã®å Žåãç°ãªãããŒãžã§ã³ã®ã¢ããªãåç §ããããã«äœ¿çšãããŸãããç°ãªããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ãç°ãªãæ§æãåç §ããããšãã§ããŸãã
.NET 8 以éã§ã¯ãã¿ã°ãæå®ãããŠããªãå Žåãæ¢å®å€ã¯ latestã§ãã 以åã®ããŒãžã§ã³ã§ã¯ãæ¢å®ã®ã¿ã°ã¯ãããžã§ã¯ãã® Version ã§ããã
æ¢å®å€ããªãŒããŒã©ã€ãããã«ã¯ã次ã®ããããã®ããããã£ãæå®ããŸãã
<PropertyGroup>
<ContainerImageTag>1.2.3-alpha2</ContainerImageTag>
</PropertyGroup>
è€æ°ã®ã¿ã°ãæå®ããã«ã¯ãè€æ°ã® ContainerImageTagsãèšå®ããã®ãšåæ§ã«ãTargetFrameworks ããããã£ã§ã»ãã³ãã³ã§åºåãããã¿ã°ã®ã»ããã䜿çšããŸãã
<PropertyGroup>
<ContainerImageTags>1.2.3-alpha2;latest</ContainerImageTags>
</PropertyGroup>
ã¿ã°ã«ã¯ãæå€§ 127 æåã®è±æ°åãããªãªããã¢ã³ããŒã¹ã³ã¢ãããã·ã¥ã®ã¿ãå«ããããšãã§ããŸãã è±æ°åãŸãã¯ã¢ã³ããŒã¹ã³ã¢ã§å§ããå¿ èŠããããŸãã ãã®ä»ã®ãã©ãŒã ã§ã¯ããšã©ãŒãã¹ããŒãããŸãã
æèš
ContainerImageTagsãŸãã¯;åºåãå€ãå¿
èŠãšãã MSBuild ããããã£ã䜿çšããå Žåã¯ãã³ãã³ã ã©ã€ã³ããdotnet publishãåŒã³åºããšãã«ãç¹ã« CI/CD ç°å¢ã§é©åãªãšã¹ã±ãŒããè¡ããŸãã ãšã¹ã±ãŒãèŠåã¯ãPowerShell ãš Bash ã§ç°ãªããŸãã äŸãã°æ¬¡ãæããããŸãã
dotnet publish --os linux --arch x64 /t:PublishContainer /p:ContainerImageTags=`"1.2.3-alpha2`;latest`"
PowerShell ã§ã¯ã; æåãš " æåã®äž¡æ¹ããšã¹ã±ãŒãããå¿
èŠããããŸãã
dotnet publish --os linux --arch x64 /t:PublishContainer /p:ContainerImageTags='"1.2.3-alpha2;latest"'
Bash ã§ã¯ã" æåã®ã¿ããšã¹ã±ãŒãããå¿
èŠããããŸãã
ããã«ãããmy-app:1.2.3-alpha2 ãš my-app:latestã® 2 ã€ã®ç»åãçæãããŸãã
å 端
ContainerImageTags ããããã£ã§åé¡ãçºçããå Žåã¯ã代ããã«ç°å¢å€æ° ContainerImageTags ã¹ã³ãŒããèšå®ããããšãæ€èšããŠãã ããã
$Env:ContainerImageTags='1.2.3;latest'; dotnet publish --os linux --arch x64 /t:PublishContainer
ContainerLabel
ã³ã³ãã㌠ã©ãã«ã¯ãã¡ã¿ããŒã¿ ã©ãã«ãã³ã³ãããŒã«è¿œå ããŸãã ã©ãã«ã¯å®è¡æã«ã³ã³ãããŒã«åœ±é¿ããŸããããå€ãã®å Žåãã»ãã¥ãªã㣠ã¹ãã£ããŒããã®ä»ã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ããŒã«ã§äœ¿çšããããã«ããŒãžã§ã³ãšãªãŒãµãªã³ã° ã¡ã¿ããŒã¿ãæ ŒçŽããããã«äœ¿çšãããŸãã ä»»æã®æ°ã®ã³ã³ãã㌠ã©ãã«ãæå®ã§ããŸãã
ContainerLabel ããŒãã«ã¯ã次㮠2 ã€ã®å±æ§ããããŸãã
-
Include: ã©ãã«ã®ããŒã -
Value: ã©ãã«ã®å€ (空ã®å ŽåããããŸã)ã
<ItemGroup>
<ContainerLabel Include="org.contoso.businessunit" Value="contoso-university" />
</ItemGroup>
æ¢å®ã§äœæãããã©ãã«ã®äžèЧã«ã€ããŠã¯ãæ¢å®ã®ã³ã³ãã㌠ã©ãã«
ContainerRepository
ã³ã³ãã㌠ãªããžããªã¯ãdotnet/runtime ã my-appãªã©ãã€ã¡ãŒãžèªäœã®ååã§ãã æ¢å®ã§ã¯ããããžã§ã¯ãã® AssemblyName ã䜿çšãããŸãã
<PropertyGroup>
<ContainerRepository>my-app</ContainerRepository>
</PropertyGroup>
ã€ã¡ãŒãžå㯠1 ã€ä»¥äžã®ã¹ã©ãã·ã¥åºåãã®ã»ã°ã¡ã³ãã§æ§æãããããããå°æåã®è±æ°åãããªãªããã¢ã³ããŒã¹ã³ã¢ãããã·ã¥ã®ã¿ãå«ããããšãã§ããŸããå é ã¯æåãŸãã¯æ°åã§å§ãŸãå¿ èŠããããŸãã ãã以å€ã®æåãæå®ãããšããšã©ãŒãã¹ããŒãããŸãã
å®è¡ã¡ã¿ããŒã¿ãå¶åŸ¡ãããã©ã°
次ã®ããããã£ã¯ãã©ã³ã¿ã€ã åºæã®å®è¡åäœãšãã«ãã¢ãŒããã¯ã㣠ã€ã¡ãŒãžã®çæãå¶åŸ¡ããŸãã
ContainerAppCommandContainerAppCommandArgsContainerAppCommandInstructionContainerDefaultArgs-
ContainerEntrypoint(éæšå¥š) -
ContainerEntrypointArgs(éæšå¥š) ContainerEnvironmentVariableContainerPortContainerPublishInParallelContainerUserContainerWorkingDirectory
ContainerAppCommand
ã¢ã㪠ã³ãã³ãæ§æé
ç®ã¯ãã¢ããªã®è«çãšã³ã㪠ãã€ã³ãã§ãã ã»ãšãã©ã®ã¢ããªã§ã¯ããã㯠AppHost ã§ãããã¢ããªçšã«çæãããå®è¡å¯èœãã€ããªã§ãã ã¢ããªã§ AppHost ãçæãããªãå Žåãéåžžããã®ã³ãã³ã㯠dotnet <your project dll>ã ãããã®å€ã¯ãåºæ¬ã³ã³ãããŒå
ã® ENTRYPOINT ã®åŸããŸã㯠ENTRYPOINT ãå®çŸ©ãããŠããªãå Žåã«çŽæ¥é©çšãããŸãã
ContainerAppCommand æ§æã«ã¯ãentrypoint ã³ãã³ãã§äœ¿çšããã³ãã³ãããªãã·ã§ã³ããŸãã¯åŒæ°ã衚ãåäžã® Include ããããã£ããããŸãã
<ItemGroup Label="ContainerAppCommand Assignment">
<!-- This is how you would start the dotnet ef tool in your container -->
<ContainerAppCommand Include="dotnet" />
<ContainerAppCommand Include="ef" />
<!-- This shorthand syntax means the same thing, note the semicolon separating the tokens. -->
<ContainerAppCommand Include="dotnet;ef" />
</ItemGroup>
ContainerAppCommandArgs
ãã®ã¢ã㪠ã³ãã³ãåŒæ°æ§æé
ç®ã¯ãContainerAppCommandã«é©çšããå¿
èŠãããã¢ããªã«è«ççã«å¿
èŠãªåŒæ°ã衚ããŸãã æ¢å®ã§ã¯ãã¢ããªã«ã¯äœãçæãããŸããã ååšããå ŽåãåŒæ°ã¯å®è¡æã«ã³ã³ãããŒã«é©çšãããŸãã
ContainerAppCommandArgs æ§æã«ã¯ãInclude ã³ãã³ãã«é©çšãããªãã·ã§ã³ãŸãã¯åŒæ°ã衚ãåäžã® ContainerAppCommand ããããã£ããããŸãã
<ItemGroup>
<!-- Assuming the ContainerAppCommand defined above,
this would be the way to force the database to update.
-->
<ContainerAppCommandArgs Include="database" />
<ContainerAppCommandArgs Include="update" />
<!-- This is the shorthand syntax for the same idea -->
<ContainerAppCommandArgs Include="database;update" />
</ItemGroup>
ContainerAppCommandInstruction
ã¢ã㪠ã³ãã³ãåœä»€ã®æ§æã¯ãContainerEntrypointãContainerEntrypointArgsãContainerAppCommandãContainerAppCommandArgsãããã³ ContainerDefaultArgs ãçµã¿åãããŠãã³ã³ãããŒã§å®è¡ãããæçµçãªã³ãã³ãã圢æããæ¹æ³ãå¶åŸ¡ããã®ã«åœ¹ç«ã¡ãŸãã ããã¯ãåºæ¬ã€ã¡ãŒãžã« ENTRYPOINT ãååšãããã©ããã«ãã£ãŠå€§ããç°ãªããŸãã ãã®ããããã£ã¯ã"DefaultArgs"ã"Entrypoint"ããŸã㯠"None"ã® 3 ã€ã®å€ã®ãããããåãåããŸãã
-
Entrypoint:- ãã®ã¢ãŒãã§ã¯ããšã³ã㪠ãã€ã³ãã¯ã
ContainerAppCommandãContainerAppCommandArgsãããã³ContainerDefaultArgsã«ãã£ãŠå®çŸ©ãããŸãã
- ãã®ã¢ãŒãã§ã¯ããšã³ã㪠ãã€ã³ãã¯ã
-
None:- ãã®ã¢ãŒãã§ã¯ããšã³ã㪠ãã€ã³ãã¯ã
ContainerEntrypointãContainerEntrypointArgsãããã³ContainerDefaultArgsã«ãã£ãŠå®çŸ©ãããŸãã
- ãã®ã¢ãŒãã§ã¯ããšã³ã㪠ãã€ã³ãã¯ã
-
DefaultArgs:- ããã¯æãè€éãªã¢ãŒãã§ãã
ContainerEntrypoint[Args]é ç®ãååšããªãå Žåã¯ãContainerAppCommand[Args]ãšContainerDefaultArgsã䜿çšããŠãšã³ã㪠ãã€ã³ããšã³ãã³ããäœæããŸãã å®å šã«å¶åŸ¡ã§ããããã«ãdotnetãŸãã¯/usr/bin/dotnetã«ããŒãã³ãŒãã£ã³ã°ãããåºæ¬ã€ã¡ãŒãžã®åºæ¬ã€ã¡ãŒãžãšã³ããªãã€ã³ãã¯ã¹ããããããŸãã -
ContainerEntrypointãšContainerAppCommandã®äž¡æ¹ãååšããå Žåã¯ãContainerEntrypointããšã³ã㪠ãã€ã³ãã«ãªããContainerAppCommandãã³ãã³ãã«ãªããŸãã
- ããã¯æãè€éãªã¢ãŒãã§ãã
æèš
ContainerEntrypoint ããã³ ContainerEntrypointArgs æ§æé
ç®ã¯ã.NET 8 ã®æç¹ã§éæšå¥šãšãªã£ãŠããŸãã
倧äºãª
ããã¯ãäžçŽãŠãŒã¶ãŒåãã§ãããã»ãšãã©ã®ã¢ããªã¯ãšã³ããªãã€ã³ãããã®çšåºŠã«ã«ã¹ã¿ãã€ãºããå¿
èŠã¯ãããŸããã 詳现ããã³ã·ããªãªã®ãŠãŒã¹ ã±ãŒã¹ãæäŸããå Žåã¯ããgitHub: .NET SDK ã³ã³ãããŒãã«ãã®ãã£ã¹ã«ãã·ã§ã³
ContainerDefaultArgs
ãã®æ¢å®ã®åŒæ°æ§æé ç®ã¯ãã¢ããªã®ãŠãŒã¶ãŒããªãŒããŒã©ã€ãã§ããåŒæ°ã衚ããŸãã ããã¯ãã¢ããªãç°¡åã«éå§ã§ããæ¹æ³ã§å®è¡ããå¿ èŠãããå Žåãããæ¢å®å€ãæäŸããã®ã«é©ããæ¹æ³ã§ãããã«ã¹ã¿ãã€ãºã¯ç°¡åã§ãã
ContainerDefaultArgs æ§æã«ã¯ãInclude ã³ãã³ãã«é©çšãããªãã·ã§ã³ãŸãã¯åŒæ°ã衚ãåäžã® ContainerAppCommand ããããã£ããããŸãã
<ItemGroup>
<!-- Assuming the ContainerAppCommand defined above,
this would be the way to force the database to update.
-->
<ContainerDefaultArgs Include="database" />
<ContainerDefaultArgs Include="update" />
<!-- This is the shorthand syntax for the same idea -->
<ContainerDefaultArgs Include="database;update" />
</ItemGroup>
ContainerEntrypoint
æèš
ãã®é
ç®ã¯ã.NET 8 ã®æç¹ã§éæšå¥šã§ãã 代ããã« ContainerAppCommand ã䜿çšãã ContainerAppCommandInstruction ã Entrypoint ãŸã㯠DefaultArgsã«èšå®ããŸãã
ã³ã³ãã㌠ãšã³ããªãã€ã³ãã¯ãã³ã³ãããŒã®èµ·åæã«æ¢å®ã§å®è¡ããããã€ããªãå¶åŸ¡ããŸãã æ¢å®ã§ã¯ãå®è¡å¯èœãã€ããªãäœæãããã«ãã®å Žåããã®ãã€ããªã¯ ContainerEntrypointãšããŠèšå®ãããŸãã å®è¡å¯èœãã€ããªãäœæããªããã«ãã§ã¯ã dotnet path/to/application.dll ã䜿çšãããŸãã
ContainerEntrypoint æ§æã«ã¯ãentrypoint ã³ãã³ãã§äœ¿çšããã³ãã³ãããªãã·ã§ã³ããŸãã¯åŒæ°ã衚ãåäžã® Include ããããã£ããããŸãã
<ItemGroup>
<ContainerEntrypoint Include="dotnet" />
<ContainerEntrypoint Include="ef" />
<!-- This shorthand syntax means the same thing, note the semicolon separating the tokens. -->
<ContainerEntrypoint Include="dotnet;ef" />
</ItemGroup>
ContainerEntrypointArgs
æèš
ãã®é
ç®ã¯ã.NET 8 ã®æç¹ã§éæšå¥šã§ãã 代ããã« ContainerAppCommandArgs ã䜿çšãã ContainerAppCommandInstruction ã Entrypoint ãŸã㯠DefaultArgsã«èšå®ããŸãã
ã³ã³ãããŒãšã³ããªãã€ã³ãåŒæ°é
ç®ã¯ã ContainerEntrypointã«æäŸãããæ¢å®ã®åŒæ°ãå¶åŸ¡ããŸãã ããã¯ã ContainerEntrypoint ããŠãŒã¶ãŒãåç¬ã§äœ¿çšããå¯èœæ§ãããããã°ã©ã ã§ããå Žåã«äœ¿çšããŸãã
ContainerEntrypointArgsæ§æã«ã¯ãInclude ã³ãã³ãã«é©çšãããªãã·ã§ã³ãŸãã¯åŒæ°ã衚ãåäžã®ContainerEntrypoint ããããã£ããããŸãã
<ItemGroup>
<ContainerEntrypointArgs Include="database" />
<ContainerEntrypointArgs Include="update" />
<!-- This is the shorthand syntax for the same idea -->
<ContainerEntrypointArgs Include="database;update" />
</ItemGroup>
ContainerEnvironmentVariable
ã³ã³ãããŒç°å¢å€æ°ããŒãã䜿çšãããšãç°å¢å€æ°ãã³ã³ãããŒã«è¿œå ã§ããŸãã ç°å¢å€æ°ã¯ãã³ã³ãããŒå ã§å®è¡ãããŠããã¢ããªããããã«ã¢ã¯ã»ã¹ã§ããå®è¡äžã®ã¢ããªã®ã©ã³ã¿ã€ã åäœã倿Žããããã«ãã䜿çšãããŸãã
ContainerEnvironmentVariable ããŒãã«ã¯ã次㮠2 ã€ã®å±æ§ããããŸãã
-
Include: ç°å¢å€æ°ã®ååã -
Value: ç°å¢å€æ°ã®å€ã
<ItemGroup>
<ContainerEnvironmentVariable Include="LOGGER_VERBOSITY" Value="Trace" />
</ItemGroup>
詳现ã«ã€ããŠã¯ã.NET ç°å¢å€æ°
æèš
çŸåšãã³ã³ãã㌠ã€ã¡ãŒãžã®çºè¡æã« .NET CLI ããç°å¢å€æ°ãèšå®ããããšã¯ã§ããŸããã 詳现ã«ã€ããŠã¯ãã GitHub: .NET SDK ã³ã³ãã㌠ãã«ãããåç §ããŠãã ããã
ContainerPort
ã³ã³ãã㌠ããŒãã¯ãäŒéå¶åŸ¡ãããã³ã« (TCP) ãŸãã¯ãŠãŒã¶ãŒ ããŒã¿ã°ã©ã ãããã³ã« (UDP) ããŒããã³ã³ãããŒã®æ¢ç¥ã®ããŒãã®äžèЧã«è¿œå ããŸãã ããã«ãããDocker ãªã©ã®ã³ã³ãã㌠ã©ã³ã¿ã€ã ã¯ããããã®ããŒãããã¹ã ãã·ã³ã«èªåçã«ãããã§ããŸãã ããã¯ã³ã³ãããŒã®ããã¥ã¡ã³ããšããŠãã䜿çšãããŸãããèªåããŒã ãããã³ã°ãæå¹ã«ããããã«ã䜿çšã§ããŸãã
ContainerPort ããŒãã«ã¯ã次㮠2 ã€ã®å±æ§ããããŸãã
-
Include: å ¬éããããŒãçªå·ã -
Type: æ¢å®å€ã¯tcpã§ãæå¹ãªå€ã¯tcpãŸãã¯udpã§ãã
<ItemGroup>
<ContainerPort Include="80" Type="tcp" />
</ItemGroup>
.NET 8 以éã§ã¯ãããã€ãã®æ¢ç¥ã® ASP.NET ç°å¢å€æ°ã«åºã¥ããŠæç€ºçã«æå®ãããŠããªãå ŽåãContainerPort ãæšè«ãããŸãã
ASPNETCORE_URLSASPNETCORE_HTTP_PORTSASPNETCORE_HTTPS_PORTS
ãããã®ç°å¢å€æ°ãååšããå Žåããããã®å€ã¯è§£æãããTCP ããŒã ãããã³ã°ã«å€æãããŸãã ãããã®ç°å¢å€æ°ã¯ãåºæ¬ã€ã¡ãŒãž (ååšããå Žå) ããããŸãã¯ãããžã§ã¯ãã§å®çŸ©ãããŠããç°å¢å€æ°ãã ContainerEnvironmentVariable é
ç®ãä»ããŠèªã¿åãããŸãã 詳现ã«ã€ããŠã¯ããContainerEnvironmentVariable ããåç
§ããŠãã ããã
ContainerPublishInParallel
ãã«ã RID ã³ã³ãããŒã®å Žåãç¹å®ã®ãããžã§ã¯ãã®çš®é¡ (Blazor WebAssembly ãªã©) ã§ãã«ãç«¶åç¶æ
ãçºçããå¯èœæ§ããããŸãã ããã«å¯ŸåŠããããã«ã.NET SDK ããŒãžã§ã³ 8.0.408ã9.0.300ãããã³ 10.0 以éã§ã¯ã ContainerPublishInParallel ããããã£ã䜿çšããŠçºè¡ããã»ã¹ã®äžŠååŠçãå¶åŸ¡ã§ããŸãã æ¢å®ã§ã¯ãçºè¡ã¯ã©ã³ã¿ã€ã èå¥å (RID) ããšã«äžŠåã«è¡ãããŸãã ãã®ããããã£ã false ã«èšå®ãããšãé æ¬¡çºè¡ãä¿èšŒãããå®å®æ§ãåäžããŸãããæéããããå ŽåããããŸãã
<PropertyGroup>
<ContainerPublishInParallel>false</ContainerPublishInParallel>
</PropertyGroup>
ãã«ã RID çºè¡ã®è©³çްã«ã€ããŠã¯ãã ContainerRuntimeIdentifier(s)ããåç §ããŠãã ããã
ContainerUser
ãŠãŒã¶ãŒæ§æããããã£ã¯ãã³ã³ãããŒãå®è¡ããæ¢å®ã®ãŠãŒã¶ãŒãå¶åŸ¡ããŸãã ããã¯ãå€ãã®å Žåãéã«ãŒã ãŠãŒã¶ãŒãšããŠã³ã³ãããŒãå®è¡ããããã«äœ¿çšãããŸããããã¯ãã»ãã¥ãªãã£ã®ãã¹ã ãã©ã¯ãã£ã¹ã§ãã ãã®æ§æã«æ³šæããå¿ èŠãããå¶çŽãããã€ããããŸãã
- ãŠãŒã¶ãŒåãLinux ãŠãŒã¶ãŒ IDãã°ã«ãŒãåãLinux ã°ã«ãŒã IDã
username:groupnameããã®ä»ã® ID ããªã¢ã³ããªã©ãããŸããŸãªåœ¢åŒã䜿çšã§ããŸãã - æå®ããããŠãŒã¶ãŒãŸãã¯ã°ã«ãŒããã€ã¡ãŒãžã«ååšãããšããæ€èšŒã¯ãããŸããã
- ãŠãŒã¶ãŒã倿Žãããšãç¹ã«ãã¡ã€ã« ã·ã¹ãã ã® ã¢ã¯ã»ã¹èš±å¯ãªã©ã®ç¹ã§ãã¢ããªã®åäœ
倿Žã§ããŸãã
ãã®ãã£ãŒã«ãã®æ¢å®å€ã¯ããããžã§ã¯ã TFM ãšã¿ãŒã²ãã ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ã«ãã£ãŠç°ãªããŸãã
- .NET 8 以éã察象ãšããMicrosoft ã©ã³ã¿ã€ã ã€ã¡ãŒãžã䜿çšããŠããå Žåã¯ã次ã®ããã«ããŸãã
- Linux ã§ã¯ãã«ãŒãã¬ã¹ ãŠãŒã¶ãŒ
appã䜿çšãããŸã (ãã ãããã®ãŠãŒã¶ãŒ ID ã«ãã£ãŠåç §ãããŸã)ã - Windows ã§ã¯ãã«ãŒãã¬ã¹ ãŠãŒã¶ãŒ
ContainerUserã䜿çšãããŸã
- Linux ã§ã¯ãã«ãŒãã¬ã¹ ãŠãŒã¶ãŒ
- ãã以å€ã®å Žåãæ¢å®ã®
ContainerUserã¯äœ¿çšãããŸãã
<PropertyGroup>
<ContainerUser>my-existing-app-user</ContainerUser>
</PropertyGroup>
å 端
APP_UID ç°å¢å€æ°ã¯ãã³ã³ãããŒå
ã®ãŠãŒã¶ãŒæ
å ±ãèšå®ããããã«äœ¿çšãããŸãã ãã®å€ã¯ãåºæ¬ã€ã¡ãŒãžã§å®çŸ©ãããŠããç°å¢å€æ° (Microsoft .NET ã€ã¡ãŒãžãªã©) ããååŸããããšããContainerEnvironmentVariable æ§æã䜿çšããŠèªåã§èšå®ããããšãã§ããŸãã
ã«ãŒã ãŠãŒã¶ãŒãšããŠå®è¡ããããã«ã¢ããªãæ§æããã«ã¯ãContainerUser ããããã£ã rootã«èšå®ããŸãã ãããžã§ã¯ã ãã¡ã€ã«ã«ã次ã®ã³ãŒãã远å ããŸãã
<PropertyGroup>
<ContainerUser>root</ContainerUser>
</PropertyGroup>
ãŸãã¯ãã³ãã³ã ã©ã€ã³ãã dotnet publish ãåŒã³åºããšãã«ããã®å€ãèšå®ããããšãã§ããŸãã
dotnet publish -p ContainerUser=root
ContainerWorkingDirectory
ã³ã³ãããŒäœæ¥ãã£ã¬ã¯ã㪠ããŒãã¯ãä»ã®ã³ãã³ããå®è¡ãããŠããªãå Žåã«ã³ãã³ããå®è¡ãããã³ã³ãããŒã®äœæ¥ãã£ã¬ã¯ããªãå¶åŸ¡ããŸãã
æ¢å®ã§ã¯ã/app ãã£ã¬ã¯ããªã®å€ãäœæ¥ãã£ã¬ã¯ããªãšããŠäœ¿çšãããŸãã
<PropertyGroup>
<ContainerWorkingDirectory>/bin</ContainerWorkingDirectory>
</PropertyGroup>
çæãããã€ã¡ãŒãžã®å®å ãå¶åŸ¡ãããã©ã°
次ã®ããããã£ã¯ãçæãããã³ã³ãã㌠ã€ã¡ãŒãžãæ ŒçŽãŸãã¯çºè¡ããå Žæãå¶åŸ¡ããŸãã
ContainerArchiveOutputPath
tar.gz ã¢ãŒã«ã€ãå
ã«ã³ã³ãã㌠ã€ã¡ãŒãžãäœæããã«ã¯ãContainerArchiveOutputPath ããããã£ã䜿çšããŸãã ãã®æ©èœã¯ãã¯ãŒã¯ãããŒãåçŽã§ã¯ãªããããšãã°ç»åãããã·ã¥ããåã«ã¹ãã£ã³ ããŒã«ãå®è¡ããå¿
èŠãããå Žåã«äŸ¿å©ã§ãã ã¢ãŒã«ã€ããäœæãããããã¢ãŒã«ã€ãã®ç§»åãã¹ãã£ã³ããŸãã¯ããŒã«ã« Docker ããŒã«ãã§ãŒã³ãžã®èªã¿èŸŒã¿ãè¡ãããšãã§ããŸãã
ã¢ãŒã«ã€ãã«çºè¡ããã«ã¯ãContainerArchiveOutputPath ããããã£ã dotnet publish ã³ãã³ãã«è¿œå ããŸããæ¬¡ã«äŸã瀺ããŸãã
dotnet publish \
-p PublishProfile=DefaultContainer \
-p ContainerArchiveOutputPath=./images/sdk-container-demo.tar.gz
ãã©ã«ããŒåãŸãã¯ç¹å®ã®ãã¡ã€ã«åãæã€ãã¹ãæå®ã§ããŸãã ãã©ã«ããŒåãæå®ãããšãã€ã¡ãŒãž ã¢ãŒã«ã€ã ãã¡ã€ã«ã«å¯ŸããŠçæããããã¡ã€ã«å㯠$(ContainerRepository).tar.gzãšããååã«ãªããŸãã ãããã®ã¢ãŒã«ã€ãã«ã¯ããã¹ãŠã® ContainerImageTagsã«å¯Ÿã㊠1 ã€ã®ãã¡ã€ã«ãäœæãããããããããã®äžã«è€æ°ã®ã¿ã°ãå«ããããšãã§ããŸãã
ContainerRegistry
ã³ã³ãã㌠ã¬ãžã¹ã㪠ããããã£ã¯ãæ°ããäœæãããã€ã¡ãŒãžãããã·ã¥ããå Žæã§ããå®å
ã¬ãžã¹ããªãå¶åŸ¡ããŸãã æ¢å®ã§ã¯ãããŒã«ã« Docker ããŒã¢ã³ã«ããã·ã¥ãããŸããããªã¢ãŒã ã¬ãžã¹ããªãæå®ããããšãã§ããŸãã èªèšŒãå¿
èŠãšãããªã¢ãŒã ã¬ãžã¹ããªã䜿çšããå Žåã¯ãæ¢ç¥ã® docker login ã¡ã«ããºã ã䜿çšããŠèªèšŒããŸãã 詳现ã«ã€ããŠã¯ããã³ã³ãã㌠ã¬ãžã¹ããªãžã®èªèšŒ ããåç
§ããŠãã ããã ãã®ããããã£ã䜿çšããå
·äœçãªäŸã«ã€ããŠã¯ã次㮠XML ã®äŸãèããŠã¿ãŸãããã
<PropertyGroup>
<ContainerRegistry>registry.mycorp.com:1234</ContainerRegistry>
</PropertyGroup>
ãã®ããŒã«ã¯ã Docker Registry HTTP API V2 ããµããŒããããã¹ãŠã®ã¬ãžã¹ããªãžã®çºè¡ããµããŒãããŸãã ããã«ã¯ã次ã®ã¬ãžã¹ããªãæç€ºçã«å«ãŸããŸã (å€ãã®å Žåãæé»çã«)ã
- Azure Container Registry ã®
- Amazon Elastic Container Registry ã
ãã - Google ã¢ãŒãã£ãã¡ã¯ã ã¬ãžã¹ããª
- Docker Hub ã®
- GitHub ããã±ãŒãž ã
ãã - GitLab ã§ãã¹ãããã Container Registry ã
ãã - Quay.io
ãããã®ã¬ãžã¹ããªã®æäœã«é¢ããæ³šæäºé ã«ã€ããŠã¯ã ã¬ãžã¹ããªåºæã®æ³šæäºé ãåç §ããŠãã ããã
LocalRegistry
LocalRegistry MSBuild ããããã£ã¯ãããŒã«ã« ãœãŒã¹ã«ããã·ã¥ãããšãã«äœ¿çšããããŒã«ã« ã³ã³ãã㌠ããŒã«ãæå®ããŸãã ãµããŒããããå€ã¯ã Dockerã Podmanã Wslcãããã³ MacOSContainerã§ãã
èšå®ãããŠããªãå ŽåãSDK ã¯å¯çšæ§ã«åºã¥ããŠããŒã«ã決å®ããŸãã .NET 11 以éãSDK 㯠Docker ãš Podman ã®åã«ãã©ãããã©ãŒã ãã€ãã£ã ããŒã«ãåªå ããŸãã
- Windowsã§ã
wslcãååšãããã®ãµãŒãã¹ãå®è¡ãããŠããå Žåã¯ãwslcã䜿çšãããŸãã - macOS ã§ã¯ãApple ã®
containerCLI ãååšãããã®ãµãŒãã¹ãå®è¡ãããŠããå Žåã¯ãcontainerã䜿çšãããŸãã -
dockerãšpodmanã®äž¡æ¹ãååšããdockerãpodmanã®ãšã€ãªã¢ã¹ã§ããå Žåã¯ãpodmanã䜿çšãããŸãã -
dockerã®ã¿ãååšããå Žåã¯ãdockerã䜿çšãããŸãã -
podmanã®ã¿ãååšããå Žåã¯ãpodmanã䜿çšãããŸãã - ãµããŒããããŠããããŒã«ã« ããŒã«ãååšããªãå Žåã¯ããšã©ãŒãã¹ããŒãããŸãã
ããŒã«ã« ã¬ãžã¹ã㪠ããŒã«ãæç€ºçã«èšå®ããã«ã¯ãæ¬¡ã®æ§æã䜿çšããŸãã
<PropertyGroup>
<LocalRegistry>Podman</LocalRegistry>
</PropertyGroup>
ã³ã³ãã㌠ã€ã¡ãŒãžã®ååä»ãã®æ§æ
ã³ã³ãã㌠ã€ã¡ãŒãžã¯ãç¹å®ã®ååä»ãèŠåã«åŸããŸãã ã€ã¡ãŒãžã®ååã¯ãããã€ãã®éšåãã¬ãžã¹ããªããªãã·ã§ã³ã®ããŒãããªããžããªãããã³ãªãã·ã§ã³ã®ã¿ã°ãšãã¡ããªã§æ§æãããŸãã
REGISTRY[:PORT]/REPOSITORY[:TAG[-FAMILY]]
ããšãã°ãå®å
šä¿®é£Ÿ mcr.microsoft.com/dotnet/runtime:8.0-alpine ã€ã¡ãŒãžåã«ã€ããŠèããŠã¿ãŸãã
-
mcr.microsoft.comã¬ãžã¹ããªã§ã (ãã®å Žå㯠Microsoft ã³ã³ãã㌠ã¬ãžã¹ããªã衚ããŸã)ã -
dotnet/runtimeãªããžããªã§ã (ãã ãããããuser/repositoryãšèãã人ãããŸã)ã -
8.0-alpineã¯ã¿ã°ãšãã¡ããªã§ã (ãã¡ããªã¯ãOS ããã±ãŒãžã®ãããŸãããè§£æ¶ããã®ã«åœ¹ç«ã€çç¥å¯èœãªæå®åã§ã)ã
次ã®ã»ã¯ã·ã§ã³ã§èª¬æããäžéšã®ããããã£ã¯ãçæãããã€ã¡ãŒãžåã®äžéšã®ç®¡çã«å¯Ÿå¿ããŠããŸãã ã€ã¡ãŒãžåãšãã«ã ããããã£ã®é¢ä¿ããããããæ¬¡ã®è¡šãèããŠã¿ãŸãããã
| ã€ã¡ãŒãžåéšå | MSBuild ãããã㣠| å€ã®äŸ |
|---|---|---|
REGISTRY[:PORT] |
ContainerRegistry |
mcr.microsoft.com:443 |
PORT |
ContainerPort |
:443 |
REPOSITORY |
ContainerRepository |
dotnet/runtime |
TAG |
ContainerImageTag |
8.0 |
FAMILY |
ContainerFamily |
-alpine |
æ¢å®ã®ã³ã³ãã㌠ã©ãã«
ã©ãã«ã¯ãã³ã³ãã㌠ã€ã¡ãŒãžã«äžè²«æ§ã®ããã¡ã¿ããŒã¿ãæäŸããããã«ãã䜿çšãããŸãã çµã¿èŸŒã¿ã®ã³ã³ãã㌠ããŒã«ã«ã¯ãçæãããã€ã¡ãŒãžã®å質ãåäžãããæ¢å®ã®ã©ãã«ãããã€ãçšæãããŠããŸãã
ContainerGenerateLabelsã false ã«èšå®ããããšã§ãæ¢å®ã®ã©ãã«çæããã¹ãŠç¡å¹ã«ããããšãã§ããŸãã ããã«ã忢å®ã®ã©ãã«ã«ã¯ããã®ç¹å®ã®ã©ãã«ãç¡å¹ã«ããããã« false ã«èšå®ã§ããåå¥ã®æå¹åãã©ã°ããããŸãã
å¯èœã§ããã°ãæ¢åã® MSBuild ããããã£ã«ãã£ãŠãããã®ã©ãã«ã®å€ãæäŸãããŸãã ãã®ä»ã®ããããã£ã§ã¯ãå€ãæç€ºçã«å¶åŸ¡ã§ããŸãã
| 泚é | æ¢å®å€ | å°çšããããã£å | ãã©ãŒã«ãã㯠ããããã£å | æå¹ãªããããã£å | æ³šèš |
|---|---|---|---|---|---|
org.opencontainers.image.created ãš org.opencontainers.artifact.created |
çŸåšã® UTC DateTime ã® RFC 3339 åœ¢åŒ | ContainerGenerateLabelsImageCreated |
|||
org.opencontainers.artifact.description ãš org.opencontainers.image.description |
ContainerDescription |
Description |
ContainerGenerateLabelsImageDescription |
||
org.opencontainers.image.authors |
ContainerAuthors |
Authors |
ContainerGenerateLabelsImageAuthors |
||
org.opencontainers.image.url |
ContainerInformationUrl |
PackageProjectUrl |
ContainerGenerateLabelsImageUrl |
||
org.opencontainers.image.documentation |
ContainerDocumentationUrl |
PackageProjectUrl |
ContainerGenerateLabelsImageDocumentation |
||
org.opencontainers.image.version |
ContainerVersion |
PackageVersion |
ContainerGenerateLabelsImageVersion |
||
org.opencontainers.image.vendor |
ContainerVendor |
ContainerGenerateLabelsImageVendor |
|||
org.opencontainers.image.licenses |
ContainerLicenseExpression |
PackageLicenseExpression |
ContainerGenerateLabelsImageLicenses |
||
org.opencontainers.image.title |
ContainerTitle |
Title |
ContainerGenerateLabelsImageTitle |
||
org.opencontainers.image.base.name |
ContainerBaseImage |
ContainerGenerateLabelsImageBaseName |
|||
org.opencontainers.image.base.digest |
ContainerGenerateLabelsImageBaseDigest |
ããã¯ãéžæããåºæ¬ã€ã¡ãŒãžã® SHA ãã€ãžã§ã¹ãã§ãã .NET SDK 9.0.100 以éããå©çšã§ããŸãã | |||
org.opencontainers.image.source |
PrivateRepositoryUrl |
ContainerGenerateLabelsImageSource |
PublishRepositoryUrlãtrueãããŠããå Žåã«ã®ã¿æžã蟌ãŸããŸãã ãŸãããã«ãã®äžéšã§ãã Sourcelink ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãäŸåããŸãã |
||
org.opencontainers.image.revision |
SourceRevisionId |
ContainerGenerateLabelsImageRevision |
PublishRepositoryUrlãtrueãããŠããå Žåã«ã®ã¿æžã蟌ãŸããŸãã ãŸãããã«ãã®äžéšã§ãã Sourcelink ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ãäŸåããŸãã |
é¢é£é ç®
- dotnet çºè¡ ã䜿çšã㊠.NET ã¢ããªãã³ã³ãããŒåãã
- .NET ã³ã³ãã㌠ã€ã¡ãŒãž ã
ãã