When Microsoft provides you with container image, they provide everything you need to run .NET application. And no more. But what if we want to add our own tools?
Well, there's nothing preventing you from using just standard docker stuff. For example, enriching default Alpine Linux image would just require creating a Dockerfile
with the following content:
FROM mcr.microsoft.com/dotnet/runtime:7.0-alpine
RUN apk add iputils traceroute curl netcat-openbsd
Essentially we tell Docker to use Microsoft's image as our baseline and to install a few packages. To "execute" those commands, simply use the file to build an image:
docker build --tag dotnet-runtime-7.0-alpine-withtools .
To see if all works as intended, we can simply test it with Docker.
docker run --rm -it dotnet-runtime-7.0-alpine-withtools sh
Once happy, just tag and push it. In this case, I'm adding it to the local repository.
docker tag dotnet-runtime-7.0-alpine-withtools:latest localhost:5000/dotnet-runtime:7.0-alpine-withtools
docker push localhost:5000/dotnet-runtime:7.0-alpine-withtools
In our .NET project, we just need to change the ContainerBaseImage
value and publish it as usual:
<ContainerBaseImage>localhost:5000/dotnet-runtime:7.0-alpine-withtools</ContainerBaseImage>
PS: If you don't have Docker running locally, don't forget to start it:
docker run -d -p 5000:5000 --name registry registry:2