Image Overview: dotnet-runtime-fips

Overview: dotnet-runtime-fips Chainguard Image

Minimal image for .NET and the .NET Tools.

Download this Image

The image is available on cgr.dev:

docker pull cgr.dev/chainguard-private/dotnet-runtime-fips:latest

Compatibility Notes

The Chainguard .NET images are available on cgr.dev as two variants: dotnet-sdk-fips and dotnet-runtime-fips. The SDK variant contains additional tooling to facilitate development and building, while the runtime variant contains only the runtime to execute .NET applications. Both the sdk-fips and runtime-fips images also have latest-dev version that contain a shell and various other tools for development.

SDK

docker pull cgr.dev/chainguard/dotnet-sdk-fips:latest

Runtime

docker pull cgr.dev/chainguard/dotnet-runtime-fips:latest

FIPS Enablement

Our .NET runtime and sdk images have FIPS enabled versions. However, the underlying .NET core runtime does not include any mechanisms to enforce FIPS compliance according to Microsoft’s official documentation. Accordingly, it is up you and/or your developers to ensure that your application is using FIPS compliant algorithms and that the runtime environment is also properly configured to run in FIPS mode.

Usage

The dotnet-sdk-fips image can be used directly for simple cases, or with a multi-stage build using the dotnet-sdk-fips as the builder and dotnet-runtime-fips as the final target container.

To get started, go to your current dotnet application directory (or where you house your dotnet applications) and execute the following command. This command should be able to detect the dotnet project in your directory and create a base for the docker initialization.

docker init

This command should create the following files.

Dockerfile
compose.yaml
README.Docker.md
.dockerignore

After the files have been created, replace the contents within the created Dockerfile with the following

FROM cgr.dev/chainguard/dotnet-sdk-fips:latest AS build

COPY --chown=nonroot:nonroot . /source

# If your project resides in a sub directory, make sure you are pointing to that directory. ex: If your project resided in a directory called 'app', you would set the destination to /source/app
WORKDIR /source

RUN dotnet publish --use-current-runtime --self-contained false -o Release

# If you are running an ASPNET project, you can instead pull our ASPNET image cgr.dev/chainguard/aspnet-runtime-fips:latest
FROM cgr.dev/chainguard/dotnet-runtime-fips:latest AS final
WORKDIR /

# Copy everything needed to run the app from the "build" stage.
COPY --from=build source .

ENTRYPOINT ["dotnet", "Release/dotnet.dll"]

This will build your application using the SDK image and then copy the built application over to the Runtime image which will then start.

You can run and publish a local image with the following command

docker compose up -d --build

You can also remove the container using the following

docker compose down

Last updated: 2024-04-11 12:38