image_tag.go 977 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package daemon
  2. import (
  3. "github.com/docker/docker/image"
  4. "github.com/docker/docker/reference"
  5. )
  6. // TagImage creates the tag specified by newTag, pointing to the image named
  7. // imageName (alternatively, imageName can also be an image ID).
  8. func (daemon *Daemon) TagImage(imageName, repository, tag string) error {
  9. imageID, err := daemon.GetImageID(imageName)
  10. if err != nil {
  11. return err
  12. }
  13. newTag, err := reference.WithName(repository)
  14. if err != nil {
  15. return err
  16. }
  17. if tag != "" {
  18. if newTag, err = reference.WithTag(newTag, tag); err != nil {
  19. return err
  20. }
  21. }
  22. return daemon.TagImageWithReference(imageID, newTag)
  23. }
  24. // TagImageWithReference adds the given reference to the image ID provided.
  25. func (daemon *Daemon) TagImageWithReference(imageID image.ID, newTag reference.Named) error {
  26. if err := daemon.referenceStore.AddTag(newTag, imageID, true); err != nil {
  27. return err
  28. }
  29. daemon.LogImageEvent(imageID.String(), newTag.String(), "tag")
  30. return nil
  31. }