dotnet-runtime

Dotnet Runtime Docker Image

为.NET应用提供的精简版Ubuntu运行时镜像,由Canonical维护长期支持版本。

24 次收藏下载次数: 0状态:社区镜像维护者:Ubuntu 官方镜像仓库类型:镜像最近更新:21 小时前

精简版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_stable
8.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/2026Ubuntu 24.04 LTS上的dotnet-runtime 8.0amd64, arm64, ppc64le, s390x
9.0-25.04_edge01/2026Ubuntu 25.04上的dotnet-runtime 9.0amd64, 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(或发送邮件至***)。

使用方法和配置说明

本地启动镜像

sh
docker 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版本

  1. 创建示例应用(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!");
    
  2. 发布应用:

    sh
    dotnet publish -c Release -o app
    
  3. 运行容器:

    sh
    docker 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及更高版本

  1. 修改项目文件的TargetFramework为net9.0,发布应用:

    sh
    dotnet publish -c Release -o app
    
  2. 运行容器:

    sh
    docker 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"]

调试

  • 查看容器日志:

    sh
    docker logs -f dotnet-runtime-container
    
  • 9.0-25.04及更高版本:通过Pebble查看日志:

    sh
    docker exec -it dotnet-runtime-container pebble logs
    

错误报告和功能请求

如发现镜像 bug 或需请求功能,请提交issue至:
https://bugs.launchpad.net/ubuntu-docker-images/+filebug

标题格式为 "dotnet-runtime: <问题摘要>",并附镜像摘要(通过以下命令获取):

sh
docker images --no-trunc --quiet ubuntu/dotnet-runtime:<tag>

废弃通道与标签

以下通道(标签)不再更新,请升级至新版本,或联系Canonical获取支持。

通道版本生命周期结束(EOL)升级路径
9.0-24.10Ubuntu 24.10上的dotnet-runtime 9.007/2025-
6.0-22.04Ubuntu 22.04 LTS上的dotnet-runtime 6.011/2024-
7.0-23.04Ubuntu 23.04上的dotnet-runtime 7.005/2024-
6.0-22.10Ubuntu 22.10上的dotnet-runtime 6.007/2023-
7.0-22.10Ubuntu 22.10上的dotnet-runtime 7.007/2023-

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 dotnet-runtime 镜像标签

docker pull docker.xuanyuan.run/ubuntu/dotnet-runtime:<标签>

DockerHub 原生拉取命令

docker pull ubuntu/dotnet-runtime:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告