chainguard-images / images

Public Chainguard Images
https://chainguard.dev/chainguard-images
Apache License 2.0
547 stars 152 forks source link

Add .net image #223

Closed amouat closed 1 year ago

amouat commented 2 years ago

Create a .net image. See https://twitter.com/sbs0x/status/1573359024598405122

dlorenc commented 2 years ago

We've had another request for these!

patflynn commented 2 years ago

ariadne may start on this this week.

patflynn commented 1 year ago

related to https://github.com/wolfi-dev/os/issues/368

tuananh commented 1 year ago

anyone working on this? if not, i can volunteer. i may need some guidance/help on this though :)

patflynn commented 1 year ago

Hi @tuananh, thanks for the offer. @kaniini was planning on working on this soon, let's see what she says.

kaniini commented 1 year ago

I am planning to work on this this week.

patflynn commented 1 year ago

@kaniini has started on this.

patflynn commented 1 year ago

Still workin on .Net. Depending on stuff could be this week or next.

patflynn commented 1 year ago

This issue is blocked by https://github.com/dotnet/sdk/issues/30558. Moving to Q2.

stevehipwell commented 1 year ago

@patflynn is this bug also present in .NET v7?

kaniini commented 1 year ago

At the moment our focus is on .NET 6 as it is the LTS branch. I have not checked with .NET 7 yet.

stevehipwell commented 1 year ago

@kaniini I agree that LTS support should be the primary target; but if .NET 6 has a defect and the maintainers haven't offered to fix it immediately it'd be worth checking if it's still a defect in .NET 7 (which will be closer to the code for the next LTS). Also being able to test with .NET 7 would be useful even if it isn't a LTS.

AFAIK there are a number of pretty major defects in .NET v6 meaning that there are more production deployments of .NET v7 that would be expected for a non LTS version.

kaniini commented 1 year ago

Interesting. I can retry my test with .NET 7 later this week.

stevehipwell commented 1 year ago

@kaniini it looks like the .NET 8 preview should work as the announcement refers to Build your own .NET from dotnet/dotnet; which also suggests that this might not work on .NET 7. I'd guess if this is the case that it's unlikely that it'd be backported so maybe .NET 8 needs to be the target.

RichiCoder1 commented 1 year ago

I think .NET 6 forward was built from source-build, but likely .NET 8 lowered the requirements/complexity further: https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/

That said, while a runtime image would be awesome, an AOT-compatible image might be simpler and backwards-compatible although it still has decently extensive list of requirements: https://github.com/dotnet/core/blob/main/release-notes/7.0/linux-packages.md.

(Microsofts Mariner-based image for reference)

I'm not sure how keen the team is on potentially maintaining two images though, so maybe just a .NET 8 Runtime image might be the best path forward for now?

dlorenc commented 1 year ago

I've managed to get 7 and 8 to build although it's not pretty. We'll get back to this in a few weeks!

gareth-houghton commented 1 year ago

Hey, I'm not sure if this is the right place, but I noticed that aspnet-runtime, dotnet-runtime and dotnet-sdk images had appeared in the registry. @kaniini thanks for the hard work getting them put together! I've had a quick play around and managed to get a sample project running using them which is great.

Although my question is, what's the next steps to get these from experimental status to stable? And I'd be interested to know if there were plans to build a dotnet6 image? Only as that's the current LTS version from Microsoft.

mathieu-benoit commented 1 year ago

Indeed, great to see, thanks @kaniini!

Also, any chance to get the associated dotnet/runtime-deps variation too?

mcr.microsoft.com/dotnet/runtime        7.0.4                                   40450c453530   6 days ago    190MB
mcr.microsoft.com/dotnet/runtime-deps   7.0.4                                   b53cbd54f8b3   6 days ago    117MB
mcr.microsoft.com/dotnet/runtime        7.0.4-alpine3.17-amd64                  017bf992c17b   2 weeks ago   84.2MB
mcr.microsoft.com/dotnet/runtime-deps   7.0.4-alpine3.17-amd64                  ada21ea6f003   2 weeks ago   12.1MB

dotnet/runtime-deps allows to have a smaller container like illustrated above.

Thanks!

kaniini commented 1 year ago

What exactly is runtime-deps used for? What’s the difference between it and runtime?

mathieu-benoit commented 1 year ago

.NET can be published in two different modes: framework-dependent (runtime) or self-contained (runtime-deps). There are pros and cons to use one or the other, but one attractive and popular feature with self-contained is that you can trim your app bundled, minimizing the size of the final image.

patflynn commented 1 year ago

created https://github.com/chainguard-images/images/issues/423 to track the new variant request.