{"record":{"id":"ba94edaa27ba3a7b","repo":"docker/cli","slug":"unsupported-manifest-format-v","errorCode":null,"errorMessage":"unsupported manifest format: %v","messagePattern":"unsupported manifest format: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"internal/registryclient/fetcher.go","lineNumber":54,"sourceCode":"\tcase *ocischema.DeserializedManifest:\n\t\treturn pullManifestOCISchema(ctx, ref, repo, *v)\n\tcase *manifestlist.DeserializedManifestList:\n\t\treturn types.ImageManifest{}, fmt.Errorf(\"%s is a manifest list\", ref)\n\t}\n\treturn types.ImageManifest{}, fmt.Errorf(\"%s is not a manifest\", ref)\n}\n\nfunc fetchList(ctx context.Context, repo distribution.Repository, ref reference.Named) ([]types.ImageManifest, error) {\n\tmanifest, err := getManifest(ctx, repo, ref)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch v := manifest.(type) {\n\tcase *manifestlist.DeserializedManifestList:\n\t\treturn pullManifestList(ctx, ref, repo, *v)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported manifest format: %v\", v)\n\t}\n}\n\nfunc getManifest(ctx context.Context, repo distribution.Repository, ref reference.Named) (distribution.Manifest, error) {\n\tmanSvc, err := repo.Manifests(ctx)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdgst, opts, err := getManifestOptionsFromReference(ref)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"image manifest for %q does not exist\", ref)\n\t}\n\treturn manSvc.Get(ctx, dgst, opts...)\n}\n\nfunc pullManifestSchemaV2(ctx context.Context, ref reference.Named, repo distribution.Repository, mfst schema2.DeserializedManifest) (types.ImageManifest, error) {\n\tmanifestDesc, err := validateManifestDigest(ref, mfst)","sourceCodeStart":36,"sourceCodeEnd":72,"githubUrl":"https://github.com/docker/cli/blob/4f84911bfe8811e9b028e4b1fee8e7510be79387/internal/registryclient/fetcher.go#L36-L72","documentation":"fetchList (used by GetManifestList) only accepts a DeserializedManifestList. This fires when the referenced image is a single manifest (schema2 or OCI), not a list — the mirror of error 604. The image exists; it is just not multi-arch.","triggerScenarios":"Calling GetManifestList on a single-platform image whose top-level object is a plain manifest, not an index/list.","commonSituations":"Treating every image as multi-arch; a platform-specific tag that was never assembled into a manifest list.","solutions":["Call GetManifest for single-manifest images.","Build and push a manifest list with `docker manifest create` if you need multi-arch semantics.","Detect the media type first and branch to the right API.","Use `docker manifest inspect <ref>` to see whether the image is a list or a single manifest."],"exampleFix":"// before\nlist, err := c.GetManifestList(ctx, ref) // -> unsupported manifest format\n\n// after\nm, err := c.GetManifest(ctx, ref)","handlingStrategy":"fallback","validationCode":"// Try list first; if it is a single manifest, fall back to GetManifest.\nfunc fetchAny(ctx context.Context, c RegistryClient, ref reference.Named) ([]types.ImageManifest, error) {\n    if list, err := c.GetManifestList(ctx, ref); err == nil {\n        return list, nil\n    }\n    m, err := c.GetManifest(ctx, ref)\n    if err != nil {\n        return nil, err\n    }\n    return []types.ImageManifest{m}, nil\n}","typeGuard":null,"tryCatchPattern":"// Single manifest served where a list was expected -> use single API.\nvar se singleErr\nif errors.As(err, &se) {\n    if m, e2 := c.GetManifest(ctx, ref); e2 == nil {\n        return []types.ImageManifest{m}, nil\n    }\n}","preventionTips":["Detect media type before choosing list vs. single API.","Build manifest lists with docker manifest create when you need multi-arch.","Use `docker manifest inspect` to verify an image's structure."],"tags":["docker","registry","manifest","multi-arch"],"backgroundTag":null,"analyzedSha":"4f84911bfe8811e9b028e4b1fee8e7510be79387","analyzedAt":"2026-08-07T12:15:29.814Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}