{"record":{"id":"c27ecf5262acaf81","repo":"docker/cli","slug":"s-not-found","errorCode":null,"errorMessage":"%s not found","messagePattern":"(.+?) not found","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/command/manifest/push.go","lineNumber":76,"sourceCode":"\n\tflags := cmd.Flags()\n\tflags.BoolVarP(&opts.purge, \"purge\", \"p\", false, \"Remove the local manifest list after push\")\n\tflags.BoolVar(&opts.insecure, \"insecure\", false, \"Allow push to an insecure registry\")\n\treturn cmd\n}\n\nfunc runPush(ctx context.Context, dockerCli command.Cli, opts pushOpts) error {\n\ttargetRef, err := normalizeReference(opts.target)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmanifests, err := newManifestStore(dockerCli).GetList(targetRef)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(manifests) == 0 {\n\t\treturn fmt.Errorf(\"%s not found\", targetRef)\n\t}\n\n\treq, err := buildPushRequest(manifests, targetRef, opts.insecure)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := pushList(ctx, dockerCli, req); err != nil {\n\t\treturn err\n\t}\n\tif opts.purge {\n\t\treturn newManifestStore(dockerCli).Remove(targetRef)\n\t}\n\treturn nil\n}\n\nfunc buildPushRequest(manifests []types.ImageManifest, targetRef reference.Named, insecure bool) (pushRequest, error) {\n\treq := pushRequest{targetRef: targetRef, insecure: insecure}","sourceCodeStart":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/docker/cli/blob/4f84911bfe8811e9b028e4b1fee8e7510be79387/cli/command/manifest/push.go#L58-L94","documentation":"Returned by `runPush` (push.go:71-77) when `GetList(targetRef)` succeeds but returns an empty slice. This means no manifest list with that name exists in the local store, so there is nothing to push. Distinct from a NotFound error from the store itself.","triggerScenarios":"Running `docker manifest push typo-name` where the list was never created locally, or was already purged by a previous `push --purge`.","commonSituations":"Forgetting to run `docker manifest create` first, typo in the list name, or a prior push with --purge that removed it.","solutions":["Create the list first: `docker manifest create <name> <images...>`.","Verify the name matches what was created (check for typos/tag differences).","Re-create after a --purge push if you need to push again.","Inspect local manifests to confirm presence before pushing."],"exampleFix":"# before\ndocker manifest push mylist:v2     # never created\n# after\ndocker manifest create mylist:v2 img1 img2\ndocker manifest push mylist:v2","handlingStrategy":"validation","validationCode":"store := newManifestStore(cli)\nlist, err := store.GetList(targetRef)\nif err != nil || len(list) == 0 {\n    return fmt.Errorf(\"no local manifest list %s; run `docker manifest create` first\", targetRef)\n}","typeGuard":null,"tryCatchPattern":"if err := runPush(ctx, cli, opts); err != nil {\n    if strings.HasSuffix(err.Error(), \" not found\") {\n        return fmt.Errorf(\"%w — create the list before pushing\", err)\n    }\n    return err\n}","preventionTips":["Always create the list before push.","Avoid push --purge until you're sure you won't re-push.","Verify the list name spelling."],"tags":["manifest","push","not-found","manifest-store","docker-cli"],"backgroundTag":null,"analyzedSha":"4f84911bfe8811e9b028e4b1fee8e7510be79387","analyzedAt":"2026-08-07T12:15:29.814Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}