github.com/coreos/docker@v1.13.1/client/image_tag.go (about) 1 package client 2 3 import ( 4 "errors" 5 "fmt" 6 "net/url" 7 8 "golang.org/x/net/context" 9 10 distreference "github.com/docker/distribution/reference" 11 "github.com/docker/docker/api/types/reference" 12 ) 13 14 // ImageTag tags an image in the docker host 15 func (cli *Client) ImageTag(ctx context.Context, imageID, ref string) error { 16 distributionRef, err := distreference.ParseNamed(ref) 17 if err != nil { 18 return fmt.Errorf("Error parsing reference: %q is not a valid repository/tag", ref) 19 } 20 21 if _, isCanonical := distributionRef.(distreference.Canonical); isCanonical { 22 return errors.New("refusing to create a tag with a digest reference") 23 } 24 25 tag := reference.GetTagFromNamedRef(distributionRef) 26 27 query := url.Values{} 28 query.Set("repo", distributionRef.Name()) 29 query.Set("tag", tag) 30 31 resp, err := cli.post(ctx, "/images/"+imageID+"/tag", query, nil, nil) 32 ensureReaderClosed(resp) 33 return err 34 }