Detect containerd image store for multi-arch builds and add Podman manifest support #12597
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Multi-arch container builds require containerd image store (Docker) or manifest support (Podman). Without detection, builds silently fail or produce incorrect results when users request multiple platforms.
Changes
New API
Task<bool> SupportsMultiArchAsync()toIContainerRuntimeDocker detection
docker info --format jsonand parses for containerd image store configurationDriverStatusfor"Image store": "containerd"orDriver == "containerd"Podman multi-arch
podman manifest --helppodman manifest create <name>--manifest <name>to build commandBuild orchestration
ResourceContainerImageBuilderchecks runtime support before multi-platform buildslinux/amd64when multi-arch unavailableExample warning output
Fixes #12133
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
centralus.data.mcr.microsoft.comdotnet publish /home/REDACTED/work/aspire/aspire/tests/testproject/TestProject.ServiceA/TestProject.ServiceA.csproj --configuration Release /t:PublishContainer /p:ContainerRepository=servicea(dns block)dotnet publish /home/REDACTED/work/aspire/aspire/tests/testproject/TestProject.ServiceA/TestProject.ServiceA.csproj --configuration Release /t:PublishContainer /p:ContainerRepository=servicea /p:ContainerArchiveOutputPath=/tmp/test-output /p:ContainerImageFormat=OCI /p:ContainerRuntimeIdentifier=linux-x64(dns block)buildkitd --allow-insecure-entitlement=network.host(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.