Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
.NET Containers Without a Dockerfile: dotnet publish /t:PublishContainer and Container MSBuild Properties
With dotnet publish /t:PublishContainer the .NET SDK produces an image without a Dockerfile or a Docker build: it puts the publish output on the base image as one layer, sets the app user and port 8080 itself, and sends the result to the local daemon, a tar file or straight to a registry. We produce Bookstore.Api this way, try ContainerFamily, a multi-architecture index and ContainerImageFormat, and compare it with the Dockerfile path by size, layers and time.
Inside an Image: Layers, Tags, Digests, Registries and Multi-platform Manifests
An image is made of read-only layers, a config and a manifest listing them; for multi-platform images the tag points to an index with one manifest per architecture. Tags move, digests do not: on a local registry we repoint a tag to another image and see what a digest pin buys, read Docker Hub's rate-limit header, and look at the containerd image store and a semver plus SHA tag strategy instead of latest.