Преглед на файлове

c8d: Preserve image labels when tagging

Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
Djordje Lukic преди 1 година
родител
ревизия
f5535d516f
променени са 1 файла, в които са добавени 5 реда и са изтрити 4 реда
  1. 5 4
      daemon/containerd/image_tag.go

+ 5 - 4
daemon/containerd/image_tag.go

@@ -16,14 +16,15 @@ import (
 
 // TagImage creates an image named as newTag and targeting the given descriptor id.
 func (i *ImageService) TagImage(ctx context.Context, imageID image.ID, newTag reference.Named) error {
-	target, err := i.resolveDescriptor(ctx, imageID.String())
+	targetImage, err := i.resolveImage(ctx, imageID.String())
 	if err != nil {
 		return errors.Wrapf(err, "failed to resolve image id %q to a descriptor", imageID.String())
 	}
 
 	newImg := containerdimages.Image{
 		Name:   newTag.String(),
-		Target: target,
+		Target: targetImage.Target,
+		Labels: targetImage.Labels,
 	}
 
 	is := i.client.ImageService()
@@ -40,7 +41,7 @@ func (i *ImageService) TagImage(ctx context.Context, imageID image.ID, newTag re
 
 		// Check if image we would replace already resolves to the same target.
 		// No need to do anything.
-		if replacedImg.Target.Digest == target.Digest {
+		if replacedImg.Target.Digest == targetImage.Target.Digest {
 			i.LogImageEvent(imageID.String(), reference.FamiliarString(newTag), events.ActionTag)
 			return nil
 		}
@@ -65,7 +66,7 @@ func (i *ImageService) TagImage(ctx context.Context, imageID image.ID, newTag re
 	defer i.LogImageEvent(imageID.String(), reference.FamiliarString(newTag), events.ActionTag)
 
 	// The tag succeeded, check if the source image is dangling
-	sourceDanglingImg, err := is.Get(compatcontext.WithoutCancel(ctx), danglingImageName(target.Digest))
+	sourceDanglingImg, err := is.Get(compatcontext.WithoutCancel(ctx), danglingImageName(targetImage.Target.Digest))
 	if err != nil {
 		if !cerrdefs.IsNotFound(err) {
 			logger.WithError(err).Warn("unexpected error when checking if source image is dangling")