зеркало из https://github.com/microsoft/docker.git
35 строки
889 B
Go
35 строки
889 B
Go
package client
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/url"
|
|
|
|
"golang.org/x/net/context"
|
|
|
|
distreference "github.com/docker/distribution/reference"
|
|
"github.com/docker/docker/api/types/reference"
|
|
)
|
|
|
|
// ImageTag tags an image in the docker host
|
|
func (cli *Client) ImageTag(ctx context.Context, imageID, ref string) error {
|
|
distributionRef, err := distreference.ParseNamed(ref)
|
|
if err != nil {
|
|
return fmt.Errorf("Error parsing reference: %q is not a valid repository/tag", ref)
|
|
}
|
|
|
|
if _, isCanonical := distributionRef.(distreference.Canonical); isCanonical {
|
|
return errors.New("refusing to create a tag with a digest reference")
|
|
}
|
|
|
|
tag := reference.GetTagFromNamedRef(distributionRef)
|
|
|
|
query := url.Values{}
|
|
query.Set("repo", distributionRef.Name())
|
|
query.Set("tag", tag)
|
|
|
|
resp, err := cli.post(ctx, "/images/"+imageID+"/tag", query, nil, nil)
|
|
ensureReaderClosed(resp)
|
|
return err
|
|
}
|