ubuntu/dotnet-aspnet

Verified Publisher

By Canonical

Updated 2 days ago

Chiselled Ubuntu runtime image for ASP.NET apps. Long-term tracks maintained by Canonical.

Image
Languages & frameworks
26

100K+

ubuntu/dotnet-aspnet repository overview

ubuntu/dotnet-aspnet is a rock for dotnet-aspnet maintained by Canonical.

ASP.NET is an open source web framework, created by Microsoft, for building modern web apps and services with .NET. Read the .NET documentation to learn how to deploy your .NET application with container images.

About Chiselled Ubuntu

This image does not include bash nor a package manager nor the .NET SDK. Read more about Chiselled Ubuntu for .NET, a new class of OCI images, on the Ubuntu blog; reading how Canonical and Microsoft partner together to deliver and support .NET on Ubuntu.

If you're looking to publish a self-contained .NET app, please have a look at the ubuntu/dotnet-deps repository. If you're looking for the .NET runtime (without ASP.NET), please then look at the ubuntu/dotnet-runtime repository.

[Learn more about dotnet-aspnet]

Tags and Architectures

NOTE: These tags follow a specific naming convention that respects the concept of channels.

TagsSupported untilVersionBaseArchitectures
8.0-24.04_stable
aliases8.0, 8.0-24.04_158, 8.0-24.04_beta, 8.0-24.04_beta_158, 8.0-24.04_candidate, 8.0-24.04_candidate_158, 8.0-24.04_edge, 8.0-24.04_edge_158, 8.0-24.04_stable_158, 8.0_beta, 8.0_candidate, 8.0_edge, 8.0_stable, beta, candidate, edge, stable
11/20268.024.04amd64, arm64, ppc64le, s390x
10.0-26.04_edge
aliases10.0-26.04_edge
05/203110.026.04s390x, arm64, ppc64le, amd64
View deprecated tags
TagsSupport ended onUpgrade Path
9.0-25.04_stable
aliases9.0-25.04, 9.0-25.04_beta, 9.0-25.04_candidate
01/2026 -
9.0-24.10_stable
aliases9.0, 9.0-24.10_145, 9.0-24.10_beta, 9.0-24.10_beta_145, 9.0-24.10_candidate, 9.0-24.10_candidate_145, 9.0-24.10_edge, 9.0-24.10_edge_145, 9.0-24.10_stable_145, 9.0_beta, 9.0_candidate, 9.0_edge, 9.0_stable
07/2025 -
6.0-22.04_stable
aliases6.0, 6.0-22.04_158, 6.0-22.04_beta, 6.0-22.04_beta_158, 6.0-22.04_candidate, 6.0-22.04_candidate_158, 6.0-22.04_edge, 6.0-22.04_edge_158, 6.0-22.04_stable_158, 6.0_beta, 6.0_candidate, 6.0_edge, 6.0_stable
11/2024 -
7.0-23.04_beta
aliases7.0-23.04_73, 7.0-23.04_beta_73, 7.0-23.04_edge_73, 7.0_beta
05/2024 -
6.0-22.10_beta
aliases6.0-22.10_1, 6.0-22.10_edge_1
07/2023 -
9.0-25.04_edge
aliases9.0-25.04_edge
01/2026 -
7.0-23.04_edge
aliases7.0-23.04_100, 7.0-23.04_edge_100, 7.0_edge
05/2024 -
7.0-22.10_edge
aliases7.0-22.10_61, 7.0-22.10_edge_61
07/2023 -
6.0-22.10_edge
aliases6.0-22.10_61, 6.0-22.10_edge_61
07/2023 -

Get started

This rock's entrypoint is Pebble, a container-optimized init process that enables the orchestration of a collection of local service processes as an organized set.

[Learn more about Pebble]

Inspect

To view the Pebble services and checks defined in this rock:

docker run --rm ubuntu/dotnet-aspnet:9.0-25.04_stable plan
For an older version that is not a rock

The container spins up with the default entrypoint. To inspect the entrypoint and command:

docker inspect --format='{{.Config.Entrypoint}} {{.Config.Cmd}}' ubuntu/dotnet-aspnet:9.0-25.04_stable
Run

To run this rock, use any of the usual container runtimes, for example, docker:

docker run --name dotnet-aspnet-container \
    -e TZ=UTC \
    ubuntu/dotnet-aspnet:9.0-25.04_stable \
    exec dotnet

The container logs will show the .NET runtime information and help message. This is because the container expects an application to be given.

For an older version that is not a rock
docker run --name dotnet-aspnet-container \
    -e TZ=UTC \
    ubuntu/dotnet-aspnet:9.0-25.04_stable

The container logs shows the .NET runtime information, as the container has /usr/bin/dotnet as the entrypoint, and --info as the default argument.

Use as a base

In some cases, you may want to augment this rock with additional runtime dependencies. In that case, you can use this rock as a base for your own custom build, as exemplified below:

Here is an example using a Dockerfile to build a Hello World web application image on top of a dotnet-aspnet image:

For rocks (9.0-25.04 and later)
# Clone an existing sample of a .NET Core MVC web app
$ git clone https://github.com/Azure-Samples/dotnetcore-docs-hello-world
$ cd dotnetcore-docs-hello-world

# Let's make sure we use a commit that was designed to work with .NET10.0
$ git checkout 64b101351a364dd1e0c845b64013507e855a6e08

Create a Dockerfile with the following content:

FROM ubuntu:26.04 AS builder

# install the .NET 10 SDK from the Ubuntu archive
# (no need to clean the apt cache as this is an unpublished stage)
RUN apt-get update && apt-get install -y dotnet10 ca-certificates

# add your application code
WORKDIR /source
# using https://github.com/Azure-Samples/dotnetcore-docs-hello-world
COPY . .

# publish your ASP.NET app
RUN dotnet publish -c Release --self-contained false -o /app

FROM ubuntu/dotnet-aspnet:10.0-26.04_edge

WORKDIR /app
COPY --from=builder /app ./

CMD ["exec", "dotnet", "/app/dotnetcoresample.dll"]

Build and run the image with the following commands:

$ docker build -t dotnet-hello-world .
$ docker run --rm -p 8080:8080 dotnet-hello-world

Access your web app at localhost:8080.

For Legacy images (6.0, 8.0, 9.0-24.10)
# Clone an existing sample of a .NET Core MVC web app
$ git clone https://github.com/Azure-Samples/dotnetcore-docs-hello-world
$ cd dotnetcore-docs-hello-world

# Let's make sure we use a commit that was designed to work with .NET8.0
$ git checkout 95b862ca3580c82835322d9eb45eb9ecfd731370

Create a Dockerfile with the following content:

FROM ubuntu:24.04 AS builder

# install the .NET 8 SDK from the Ubuntu archive
# (no need to clean the apt cache as this is an unpublished stage)
RUN apt-get update && apt-get install -y dotnet8 ca-certificates

# add your application code
WORKDIR /source
# using https://github.com/Azure-Samples/dotnetcore-docs-hello-world
COPY . .

# publish your ASP.NET app
RUN dotnet publish -c Release -o /app --self-contained false

FROM ubuntu.azurecr.io/dotnet-aspnet:8.0-24.04_stable

WORKDIR /app
COPY --from=builder /app ./

ENV PORT 8080
EXPOSE 8080

ENTRYPOINT ["dotnet", "/app/dotnetcoresample.dll"]

Build and run the image with the following commands:

$ docker build -t dotnet-hello-world .
$ docker run --rm -p 8080:8080 dotnet-hello-world

Access your web app at localhost:8080.

Get logs

To view the logs of the running container, run:

docker exec dotnet-aspnet-container pebble logs

Or, for a specific service:

docker exec dotnet-aspnet-container pebble logs <service>
For an older version that is not a rock

To view the logs of the running container, run:

docker logs dotnet-aspnet-container
Monitor health checks

Rocks may have predefined health checks that you can list by running:

docker exec dotnet-aspnet-container pebble checks

The overall health of your container can be inspected via:

docker exec dotnet-aspnet-container pebble health

Configuration

Environment variables
OptionDescriptionDefault
TZContainer timezoneNone
DOTNET_SYSTEM_GLOBALIZATION_INVARIANTWhether to use invariant globalization mode.true
ASPNETCORE_URLSThe URLs that the ASP.NET Core app should listen on.http://+:8080

[Report a bug] [Contribute]

Canonical is the provider of this container image. It is the user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within, as well as with Canonical’s IP Policy.

Tag summary

Content type

Image

Digest

sha256:f41a715c2

Size

25.6 MB

Last updated

2 days ago

Requires Docker Desktop 4.37.1 or later.

This week's pulls

Pulls:

2,760

Last week