Does this library still has external docker engine dependency? #537
-
I have read this article which is great by the way. One confusing thing about is this below block. A container image is made of two primary parts: some JSON configuration containing metadata about how
the image can be run, and a list of tarball archives that represent the file system.
In .NET 7, we added several APIs to the .NET Runtime for handling TAR files and streams
(https://devblogs.microsoft.com/dotnet/announcing-dotnet-7-preview-4/#added-new-tar-apis,)
and that opened the door to manipulating container images programmatically.
This approach has been demonstrated very successfully in projects like Jib
(https://github.com/GoogleContainerTools/jib) in the Java ecosystem,
Ko (https://github.com/google/ko) for Go,
and even in .NET with projects like konet (https://github.com/lippertmarkus/konet).
It’s obvious that a simple tool-driven approach to generate container images is becoming more popular.
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
Hey @nithinbandaru1, thanks for the questions. This project is currently not a standalone library, but yes it does create OCI images following the spec. It does not require Docker to create the images, but the default mode of operation saves the newly-generated image to the local Docker daemon. This of course can be customized - you can push the image to any compliant container registry via the The tools built into the .NET SDK are not directly usable as a library - for that I might suggest using https://github.com/mthalman/DockerRegistryClient, though that library is very focused on the 'read' side of the equation. This repo originally started out as a library, but we combined the unopinionated library and the very opinionated MSBuild Task code early on for development convenience. One of my longer-term wishlist items for this repo is to
|
Beta Was this translation helpful? Give feedback.
Ah, I think I see. The SDK tooling isn't going to grow to be a replacement for the Docker Engine itself. Docker has roughly three main parts:
The SDK is only ever going to do the first part. You still need Docker or another container runtime to run the generated images, and the SDK doesn't really care about storing a lot of images (though we do store metadata/layers in our own cache strictly for building user app images).