## .NET ## 推荐版本库 * [dotnet/sdk](https://github.com/dotnet/dotnet-docker/blob/main/README.sdk.md): .NET SDK * [dotnet/aspnet](https://github.com/dotnet/dotnet-docker/blob/main/README.aspnet.md): ASP.NET Core 运行时 * [dotnet/runtime](https://github.com/dotnet/dotnet-docker/blob/main/README.runtime.md): .NET运行时 * [dotnet/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/main/README.runtime-deps.md): .NET运行时依赖项 * [dotnet/monitor](https://github.com/dotnet/dotnet-docker/blob/main/README.monitor.md): .NET监控工具 * [dotnet/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/main/README.aspire-dashboard.md): .NET Aspire 控制面板 * [dotnet/samples](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md): .NET示例 ### 关于 [.NET](https://docs.microsoft.com/dotnet/core/)是一个通用开发平台,由微软和[GitHub](https://github.com/dotnet/core)上的.NET社区共同维护。它是跨平台的,支持 Windows、macOS 和 Linux,可用于设备、云和嵌入式/物联网场景。 .NET拥有多项提高开发效率的功能,包括自动内存管理、(运行时)泛型、反射、[异步构造](https://learn.microsoft.com/dotnet/csharp/async)、并发和本地互操作。数百万开发人员利用这些功能高效地构建了高质量的应用程序。 您可以使用 C# 或 F# 编写 .NET 应用程序。 * C#](https://docs.microsoft.com/dotnet/csharp/) 功能强大、类型安全、面向对象,同时保留了 C 风格语言的表现力和优雅。任何熟悉 C 语言和类似语言的人都会发现用 C# 写作非常简单。 * [F#](https://docs.microsoft.com/dotnet/fsharp/)是一种跨平台、开源的函数式编程语言,适用于.NET。它还包括面向对象和命令式编程。 [.NET](https://github.com/dotnet/core)是开放源代码(MIT 和 Apache 2 许可),由微软于 2014 年贡献给[.NET 基金会](http://dotnetfoundation.org)。个人和公司均可自由采用,包括用于个人、学术或商业目的。多家公司使用.NET作为应用程序、工具、新平台和托管服务的一部分。 我们邀请您[贡献新功能](https://github.com/dotnet/core/blob/master/CONTRIBUTING.md)、修复或更新,无论大小;我们总是很高兴收到拉取请求,并尽我们所能尽快处理它们。 > [.NET 文档](https://docs.microsoft.com/dotnet/core/) 关注 [discussions](https://github.com/dotnet/dotnet-docker/discussions/categories/announcements) 与 Docker 相关的 .NET 公告。 #### 新消息: Ubuntu Chiseled 映像 Ubuntu Chiseled .NET 映像是一种 “无发行版 ”容器映像,它只包含 .NET 所需的最小软件包集,其他的都被删除了。 这些映像只包含运行.NET应用程序所需的最少一组软件包,因此部署规模和攻击面大大缩小。 更多信息请参阅 [Ubuntu Chiseled + .NET](https://github.com/dotnet/dotnet-docker/blob/main/documentation/ubuntu-chiseled.md) 文档页面。 ## 使用方法 .NET Docker 示例](https://github.com/dotnet/dotnet-docker/blob/main/samples/README.md) 展示了各种将 .NET 与 Docker 结合使用的方法。请参阅 [Building Docker Images for .NET Applications](https://docs.microsoft.com/dotnet/core/docker/building-net-docker-images) 了解更多信息。 #### 容器示例: 运行一个简单的应用程序 你可以根据[.NET 控制台示例](https://github.com/dotnet/dotnet-docker/blob/main/samples/dotnetapp/README.md),使用预先构建的[.NET Docker 映像](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md)快速运行一个容器。 键入以下命令运行示例控制台应用程序: 控制台 docker run --rm mcr.microsoft.com/dotnet/samples ``` ### Container sample: 运行网络应用程序 你可以根据 [ASP.NET Core 示例](https://github.com/dotnet/dotnet-docker/blob/main/samples/aspnetapp/README.md),使用预构建的[.NET Docker 镜像](https://github.com/dotnet/dotnet-docker/blob/main/README.samples.md)快速运行一个容器。 键入以下命令运行示例网络应用程序: 控制台 docker run -it --rm -p 8000:8080 --name aspnetcore_sample mcr.microsoft.com/dotnet/samples:aspnetapp ``` 应用程序启动后,在 Web 浏览器中导航到 `http://localhost:8000`。您也可以使用本地 IP 地址(如 `http://192.168.1.18:8000`)从另一台计算机查看容器中运行的 ASP.NET Core 网站。 > 注意:从 .NET 8 开始,ASP.NET Core 应用程序(官方映像中)监听 [默认端口为 8080](https://github.com/dotnet/dotnet-docker/blob/6da64f31944bb16ecde5495b6a53fc170fbe100d/src/runtime-deps/8.0/bookworm-slim/amd64/Dockerfile#L7)。这些示例中的 [`-p` 参数](https://docs.docker.com/engine/reference/commandline/run/#publish) 将主机端口 `8000` 映射到容器端口 `8080` (“host:container ”映射)。没有此映射,容器将无法访问。ASP.NET Core 可以 [配置为监听不同或额外的端口](https://learn.microsoft.com/aspnet/core/fundamentals/servers/kestrel/endpoints)。 请参阅 [Hosting ASP.NET Core Images with Docker over HTTPS](https://github.com/dotnet/dotnet-docker/blob/main/samples/host-aspnetcore-https.md) 以在此映像中使用 HTTPS。 ## 映像变体 .NET 容器映像有多种变体,可提供不同的灵活性和部署规模组合。 Image Variants 文档](https://github.com/dotnet/dotnet-docker/blob/main/documentation/image-variants.md) 包含图像变体及其用例的摘要。 ## 相关资源库 .NET: * [dotnet/nightly/sdk](https://github.com/dotnet/dotnet-docker/blob/nightly/README.sdk.md): .NET SDK(预览版) * [dotnet/nightly/aspnet](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspnet.md): ASP.NET Core 运行时(预览版) * [dotnet/nightly/runtime](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime.md): .NET运行时(预览版) * [dotnet/nightly/runtime-deps](https://github.com/dotnet/dotnet-docker/blob/nightly/README.runtime-deps.md): .NET运行时依赖项(预览版) * [dotnet/nightly/monitor](https://github.com/dotnet/dotnet-docker/blob/nightly/README.monitor.md): .NET监控工具(预览版) * [dotnet/nightly/aspire-dashboard](https://github.com/dotnet/dotnet-docker/blob/nightly/README.aspire-dashboard.md): .NET Aspire Dashboard(预览版) .NET框架: * [dotnet/framework](https://github.com/microsoft/dotnet-framework-docker/blob/main/README.md): .NET框架、ASP.NET和WCF * [dotnet/framework/samples](https://github.com/microsoft/dotnet-framework-docker/blob/main/README.samples.md): .NET框架、ASP.NET和WCF示例 ### 支持 ### 生命周期 * [Microsoft Support for .NET](https://github.com/dotnet/core/blob/main/support.md) * 支持的容器平台政策](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md) * 支持的标签政策](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md) ### 图像更新政策 * 基本镜像更新:** 镜像在其基本镜像(如 debian:bookworm-slim、windows/nanoserver:ltsc2022 等)更新后 12 小时内重新构建。 * .NET 发布:** 作为发布新的 .NET 版本的一部分,映像会被重新构建。这包括新的主要版本、次要版本和服务版本。 * 关键 CVE:** 按照下面的 CVE 更新政策所述,重新构建映像以获取关键 CVE 修复。 * 每月重新构建:** 映像每月重新构建一次,通常是在每月的第二个星期二,以便拾取较低严重程度的 CVE 修复。 * 带外更新:** 当需要带外更新来解决关键问题时,有时会重新构建镜像。如果出现这种情况,新的固定版本标签将根据[固定版本标签文档](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-tags.md#fixed-version-tags)进行更新。 #### CVE 更新政策 我们会定期监控 .NET 容器映像是否存在 CVE。当出现以下情况时,将重建给定映像以获取 CVE 的修复: * 我们检测到镜像包含一个 [CVSS](https://nvd.nist.gov/vuln-metrics/cvss) 得分为 “Critical ”的 CVE * 该 CVE 位于添加到我们的 Dockerfile 层的软件包中(这意味着该 CVE 位于我们明确安装的软件包或这些软件包的任何传递依赖关系中) ** AND** 受影响的基础镜像的软件包库中有针对该软件包的 CVE 修复。 请参阅[安全策略](https://github.com/dotnet/dotnet-docker/blob/main/SECURITY.md) 和[容器漏洞工作流程](https://github.com/dotnet/dotnet-docker/blob/main/documentation/vulnerability-reporting.md),了解在 .NET 映像中遇到 CVE 时的更多详情。 ### 反馈 * 提交问题](https://github.com/dotnet/dotnet-docker/issues/new/choose) * [联系 Microsoft 支持](https://support.microsoft.com/contactus/) ### 许可证 * 法律声明: [容器许可证信息](https://aka.ms/mcr/osslegalnotice) * .NET许可证](https://github.com/dotnet/dotnet-docker/blob/main/LICENSE) * 发现 Linux 映像内容许可](https://github.com/dotnet/dotnet-docker/blob/main/documentation/image-artifact-details.md) * Windows 基本映像许可证](https://docs.microsoft.com/virtualization/windowscontainers/images-eula) (仅适用于 Windows 容器 * Windows Server 的定价和许可](https://www.microsoft.com/cloud-platform/windows-server-pricing)