diff --git a/pkg/cmd/image/convert.go b/pkg/cmd/image/convert.go index d628c43158..5d2726c483 100644 --- a/pkg/cmd/image/convert.go +++ b/pkg/cmd/image/convert.go @@ -44,6 +44,7 @@ import ( "github.com/containerd/nerdctl/v2/pkg/api/types" "github.com/containerd/nerdctl/v2/pkg/clientutil" + "github.com/containerd/nerdctl/v2/pkg/imgutil" converterutil "github.com/containerd/nerdctl/v2/pkg/imgutil/converter" "github.com/containerd/nerdctl/v2/pkg/platformutil" "github.com/containerd/nerdctl/v2/pkg/referenceutil" @@ -75,6 +76,14 @@ func Convert(ctx context.Context, client *containerd.Client, srcRawRef, targetRa } convertOpts = append(convertOpts, converter.WithPlatform(platMC)) + imageService := client.ImageService() + img, err := imageService.Get(ctx, srcRawRef) + // Ensure all the layers are here: https://github.com/containerd/nerdctl/issues/3425 + err = imgutil.EnsureAllContent(ctx, client, srcRawRef, img.Target, "", options.GOptions) + if err != nil { + return err + } + estargz := options.Estargz zstd := options.Zstd zstdchunked := options.ZstdChunked