Dotnet Runtime Docker Image
为.NET应用提供的精简版Ubuntu运行时镜像,由Canonical维护长期支持版本。
精简版Ubuntu dotnet-runtime镜像
本文档介绍由Canonical提供的基于Ubuntu的dotnet-runtime Docker镜像。该镜像接收安全更新,并会滚动更新至新版本的dotnet-runtime或Ubuntu发行版。本仓库可免费使用,且不受每用户速率限制影响。
镜像概述和主要用途
关于dotnet-runtime
.NET是一个免费、跨平台、开源的开发平台,用于构建多种类型的应用程序。通过.NET,您可以使用多种语言、编辑器和库构建Web、移动、桌面、游戏、物联网等应用。如需了解如何使用容器镜像部署.NET应用,请参阅.NET文档。
关于精简版Ubuntu
本镜像不包含bash、包管理器及.NET SDK。
精简版Ubuntu for .NET是一类新型OCI镜像,更多信息请参见https://ubuntu.com/blog/install-dotnet-on-ubuntu,了解Canonical与Microsoft如何合作提供和支持Ubuntu上的.NET。
- 如需发布自包含的.NET应用,请查看
ubuntu/dotnet-deps仓库 - 如需发布ASP.NET应用,请查看
ubuntu/dotnet-aspnet仓库
核心功能和特性
- 安全更新:接收Ubuntu和.NET官方安全更新
- 多架构支持:覆盖amd64、arm64、ppc64le、s390x等架构
- 长期支持:LTS版本提供长达5年免费安全维护,ESM版本可延长至10年
- 精简体积:基于精简版Ubuntu,减少不必要组件,降低***面
- 版本滚动:自动滚动更新至新版本的dotnet-runtime或Ubuntu发行版
使用场景和适用范围
- 适用场景:部署已构建的.NET应用程序(不含ASP.NET,需使用
dotnet-aspnet镜像) - 适用架构:amd64、arm64、ppc64le、s390x(具体取决于标签)
- 不适用场景:应用构建(不含SDK)、需要bash或包管理器的环境
标签和架构
LTS通道提供长达5年的免费安全维护
通过Canonical的受限仓库提供长达10年的客户安全维护(https://ubuntu.com/security/docker-images#get-in-touch)
| 通道标签 | 支持期限 | 当前版本 | 架构 |
|---|---|---|---|
8.0-24.04_stable8.0, 8.0-24.04_148, 8.0-24.04_beta, 8.0-24.04_beta_148, 8.0-24.04_candidate, 8.0-24.04_candidate_148, 8.0-24.04_edge, 8.0-24.04_edge_148, 8.0-24.04_stable_148, 8.0_beta, 8.0_candidate, 8.0_edge, 8.0_stable, beta, candidate, edge, stable | 11/2026 | Ubuntu 24.04 LTS上的dotnet-runtime 8.0 | amd64, arm64, ppc64le, s390x |
9.0-25.04_edge | 01/2026 | Ubuntu 25.04上的dotnet-runtime 9.0 | amd64, arm64 |
通道标签说明
通道标签按稳定性排序为 stable(稳定)、candidate(候选)、beta(测试)、edge(边缘)。风险较高的通道始终隐含可用:若列出beta,则可拉取edge;若列出candidate,则可拉取beta和edge;若列出stable,则四个通道均可用。镜像会按edge→beta→candidate→stable的顺序发布。
商业用途和扩展安全维护通道
如涉及商业再分发,或需要ESM及未列出的通道/版本,请https://ubuntu.com/security/docker-images#get-in-touch(或发送邮件至***)。
使用方法和配置说明
本地启动镜像
shdocker run -d --name dotnet-runtime-container -e TZ=UTC docker.xuanyuan.run/ubuntu/dotnet-runtime:8.0-24.04_stable
环境变量说明
TZ:设置容器时区,如UTC、Asia/Shanghai等
新入口点 pebble
-
6.0、8.0及9.0-24.10版本:基于Dockerfile构建,入口点为
dotnet
直接运行镜像将显示.NET帮助信息:sh$ docker run --rm ubuntu/dotnet-runtime:8.0-24.04_stable Host: Version: 8.0.16 ... -
9.0-25.04及更高版本:基于Rock构建,入口点为
pebble enter(Pebble是Canonical的轻量级服务管理器)。需通过exec命令访问dotnet:sh$ docker run --rm ubuntu/dotnet-runtime:9.0-25.04_edge exec dotnet Usage: dotnet [options] ...
运行.NET应用
适用于6.0、8.0及9.0-24.10版本
-
创建示例应用(HelloWorld.csproj和Program.cs):
xml<!-- HelloWorld.csproj --> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> </Project>csharp// Program.cs Console.WriteLine("Hello, World!"); -
发布应用:
shdotnet publish -c Release -o app -
运行容器:
shdocker run --rm -v $PWD/app:/app docker.xuanyuan.run/ubuntu/dotnet-runtime:8.0-24.04_stable /app/HelloWorld.dll Hello, World!
适用于9.0-25.04及更高版本
-
修改项目文件的
TargetFramework为net9.0,发布应用:shdotnet publish -c Release -o app -
运行容器:
shdocker run --rm -v $PWD/app:/app docker.xuanyuan.run/ubuntu/dotnet-runtime:9.0-25.04_edge exec dotnet /app/HelloWorld.dll Hello, World!
构建.NET应用镜像
适用于6.0、8.0及9.0-24.10版本
dockerfile# 构建阶段:使用Ubuntu 24.04安装SDK并编译应用 FROM docker.xuanyuan.run/ubuntu:24.04 AS builder RUN apt-get update && apt-get install -y dotnet8 ca-certificates WORKDIR /source COPY . . RUN dotnet publish -c Release -o /app # 运行阶段:基于dotnet-runtime镜像 FROM docker.xuanyuan.run/ubuntu/dotnet-runtime:8.0-24.04_beta WORKDIR /app COPY --from=builder /app ./ ENTRYPOINT ["dotnet", "/app/HelloWorld.dll"]
适用于9.0-25.04及更高版本
dockerfile# 构建阶段:使用Ubuntu 25.04安装SDK并编译应用 FROM docker.xuanyuan.run/ubuntu:25.04 AS builder RUN apt-get update && apt-get install -y dotnet9 ca-certificates WORKDIR /source COPY . . RUN dotnet publish -c Release -o /app # 运行阶段:基于dotnet-runtime镜像 FROM docker.xuanyuan.run/ubuntu/dotnet-runtime:9.0-25.04_edge WORKDIR /app COPY --from=builder /app ./ CMD ["exec", "dotnet", "/app/HelloWorld.dll"]
调试
-
查看容器日志:
shdocker logs -f dotnet-runtime-container -
9.0-25.04及更高版本:通过Pebble查看日志:
shdocker exec -it dotnet-runtime-container pebble logs
错误报告和功能请求
如发现镜像 bug 或需请求功能,请提交issue至:
https://bugs.launchpad.net/ubuntu-docker-images/+filebug
标题格式为 "dotnet-runtime: <问题摘要>",并附镜像摘要(通过以下命令获取):
shdocker images --no-trunc --quiet ubuntu/dotnet-runtime:<tag>
废弃通道与标签
以下通道(标签)不再更新,请升级至新版本,或联系Canonical获取支持。
| 通道 | 版本 | 生命周期结束(EOL) | 升级路径 |
|---|---|---|---|
| Ubuntu 24.10上的dotnet-runtime 9.0 | 07/2025 | - | |
| Ubuntu 22.04 LTS上的dotnet-runtime 6.0 | 11/2024 | - | |
| Ubuntu 23.04上的dotnet-runtime 7.0 | 05/2024 | - | |
| Ubuntu 22.10上的dotnet-runtime 6.0 | 07/2023 | - | |
| Ubuntu 22.10上的dotnet-runtime 7.0 | 07/2023 | - |
ubuntu 命名空间的其他可用镜像:
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
轩辕镜像加速拉取命令点我查看更多 dotnet-runtime 镜像标签
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务