瀏覽代碼

Merge pull request #46301 from vvoland/c8d-legacybuilder-fix-layermismatch

c8d/legacybuilder: Fix `mismatched image rootfs` errors
Sebastiaan van Stijn 1 年之前
父節點
當前提交
b4c59d25d6
共有 2 個文件被更改,包括 10 次插入4 次删除
  1. 1 4
      daemon/containerd/image_builder.go
  2. 9 0
      image/image.go

+ 1 - 4
daemon/containerd/image_builder.go

@@ -493,9 +493,6 @@ func (i *ImageService) CreateImage(ctx context.Context, config []byte, parent st
 		return nil, err
 	}
 
-	newImage := dimage.NewImage(dimage.ID(createdImage.Target.Digest))
-	newImage.V1Image = imgToCreate.V1Image
-	newImage.V1Image.ID = string(createdImage.Target.Digest)
-	newImage.History = imgToCreate.History
+	newImage := dimage.Clone(imgToCreate, dimage.ID(createdImage.Target.Digest))
 	return newImage, nil
 }

+ 9 - 0
image/image.go

@@ -259,6 +259,15 @@ func NewChildImage(img *Image, child ChildConfig, os string) *Image {
 	}
 }
 
+// Clone clones an image and changes ID.
+func Clone(base *Image, id ID) *Image {
+	img := *base
+	img.RootFS = img.RootFS.Clone()
+	img.V1Image.ID = id.String()
+	img.computedID = id
+	return &img
+}
+
 // History stores build commands that were used to create an image
 type History = ocispec.History