diff --git a/cmd/ctr/commands/images/tag.go b/cmd/ctr/commands/images/tag.go index 40b42926c..e145054e5 100644 --- a/cmd/ctr/commands/images/tag.go +++ b/cmd/ctr/commands/images/tag.go @@ -24,6 +24,7 @@ import ( "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/pkg/transfer/image" + "github.com/containerd/containerd/reference/docker" ) var tagCommand = cli.Command{ @@ -60,6 +61,9 @@ var tagCommand = cli.Command{ if !context.BoolT("local") { for _, targetRef := range context.Args()[1:] { + if _, err := docker.ParseAnyReference(targetRef); err != nil { + return fmt.Errorf("error parsing reference: %q is not a valid repository/tag %v", targetRef, err) + } err = client.Transfer(ctx, image.NewStore(ref), image.NewStore(targetRef)) if err != nil { return err @@ -82,6 +86,9 @@ var tagCommand = cli.Command{ } // Support multiple references for one command run for _, targetRef := range context.Args()[1:] { + if _, err := docker.ParseAnyReference(targetRef); err != nil { + return fmt.Errorf("error parsing reference: %q is not a valid repository/tag %v", targetRef, err) + } image.Name = targetRef // Attempt to create the image first if _, err = imageService.Create(ctx, image); err != nil {