Feature: `container manifest` subcommand for multi-arch OCI image index creation
- Dominant language
- Swift
- Stars
- 49.9k
- Forks
- 1.8k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 22
Description
## Summary
`container build --platform ` builds single-architecture images correctly, but there is no way to assemble a multi-architecture OCI Image Index (manifest list) from the CLI. Docker provides `docker manifest create/add/push/inspect` and Podman provides `podman manifest` for this workflow. `container` has no equivalent.
## Current workflow (broken)
```bash
# Build per-arch — works fine
container build --platform linux/amd64 -t myrepo/myimage:amd64 .
container build --platform linux/arm64 -t myrepo/myimage:arm64 .
container build --platform linux/ppc64le -t myrepo/myimage:ppc64le .
# Assemble manifest list — no command exists
container manifest create myrepo/myimage:latest # ← Error: Plugin 'container-manifest' not found
```
## Related issue
\#1001 shows that even `container image push` has bugs with OCI Index child manifest registration — the recommended workaround there is already `skopeo copy`. A first-class `container manifest` command would address both the creation gap and provide a reliable push path.
## Proposed commands
Matching Docker/Podman conventions:
```bash
container manifest create myrepo/myimage:latest
container manifest add myrepo/myimage:latest myrepo/myimage:amd64
container manifest add myrepo/myimage:latest myrepo/myimage:arm64
container manifest add myrepo/myimage:latest myrepo/myimage:ppc64le
container manifest push myrepo/myimage:latest
container manifest inspect myrepo/myimage:latest
```
## Workaround (until implemented)
Save each per-arch image as an OCI archive and use `skopeo` to copy to a registry, then use `skopeo` or another tool to create the manifest list:
```bash
container image save myrepo/myimage:amd64 -o image-amd64.tar
skopeo copy oci-archive:image-amd64.tar docker://myrepo/myimage:amd64
container image save myrepo/myimage:arm64 -o image-arm64.tar
skopeo copy oci-archive:image-arm64.tar docker://myrepo/myimage:arm64
# Then use docker manifest or podman manifest to assemble
docker manifest create myrepo/myimage:latest \
myrepo/myimage:amd64 myrepo/myimage:arm64
docker manifest push myrepo/myimage:latest
```
This workaround works today but requires an external registry and additional tools.
## Environment
- macOS 26.0, Apple Silicon
- `container` CLI (current version)
> [!Note]
> Responses generated with Claude
Contributor guide
Research direction
Start by examining the existing `container image push` command and the OCI Index child-manifest handling referenced in issue #1001. Map how CLI subcommands are registered and determine the scope for create, add, push, and inspect. Done means a first-class `container manifest` command can assemble and reliably push multi-architecture OCI image indexes.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100