microsoft / microsoft/WSL

WSLC: Enable containerd image store for OCI image-layout and multi-platform image loading

Open
#41,123 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

feature wslc
Dominant language
C++
Stars
33.7k
Forks
1.8k
Avg merge
3d 17h
Merged PRs (30d)
116

Description

**Is your feature request related to a problem? Please describe.**

`wslc image load --input` cannot currently load OCI image-layout archives containing `oci-layout`, `index.json`, and content-addressed blobs. This prevents tools from loading standard multi-platform image archives into WSLC.

I've been working on adding support for `wslc` into the [.NET SDK's native container publishing support](https://github.com/dotnet/sdk/pull/55249) but found during testing our multi-arch image publishing that `wslc` wouldn't load the OCI image layout archive. Other .NET-supported backends like Docker with its containerd image store, Podman, and Apple's `container` CLI do at this point in time.

**Describe the solution you'd like**

Enable support for OCI layouts in `wslc` to enable seamless use of multi-arch image indexes in the tool.

**Describe alternatives you've considered**

- The .NET SDK could convert the OCI layout to a Docker archive before calling WSLC. Docker archive output does not provide a good standard representation for multi-platform images and can lose the image index.
- Load each images' platform separately. This still requires a way to construct and retain the local multi-platform manifest list and it hard to use for users, since it's unclear how to reference each specific image platform at run-time.
- Push the images and index to a temporary registry and pull them through WSLC. This requires additional infrastructure and turns a local publish into a registry operation.
- Exclude WSLC from .NET SDK multi-platform local publishing. This avoids the failure but leaves WSLC with less functionality than other supported local runtimes.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the wslc image load --input entry point and trace how Docker archives are currently handled. Compare that path with the OCI layout files named in the issue, including index.json and content-addressed blobs, and determine how multi-platform indexes should reach the containerd image store. Done means WSLC can load standard OCI image-layout archives while preserving multi-platform images.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
backend, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.