go-containerregistry icon indicating copy to clipboard operation
go-containerregistry copied to clipboard

FR: Support resumable push

Open LiuShuaiyi opened this issue 2 years ago • 1 comments

Hi team,

I wonder if it's possible to support resumable push in go-containerregistry. We found that pushing XL image layers (we have images with 40GB+ layers) often fails under choppy network conditions or when the servers are throttled, and it seems go-containerregistry uploads the entire image layer in one single PATCH request instead of splitting a layer into chunks, so every time a layer push failed it had to start all over again.

Supporting resumable push in go-containerregistry will help our use cases greatly I think. If this is not possible, would also love to learn if there are other OCI client libraries that already support this functionality.

Thanks

References:

  • https://docs.docker.com/registry/spec/api/
  • https://github.com/opencontainers/distribution-spec/blob/main/spec.md#resumable-push
  • https://github.com/moby/moby/issues/4872
  • https://github.com/goharbor/harbor/issues/15150
  • https://github.com/regclient/regclient

LiuShuaiyi avatar Sep 14 '22 23:09 LiuShuaiyi