Docker manifest push seems not to mount from the images which have already been pushed

Hi, everyone!

I want to create and push a manifest using two images on two different platforms (linux/amd64 and linux/arm64/v8).

Here is our pipeline:

  1. Our pipeline would build and push two images needed in parallel. Then, these two images were pushed to our harbor with different tags. (e.g. domain/docker_project/<amd64/arm64v8>/name:tag)
  2. After that, the pipeline created a manifest using
docker manifest create domain/docker_project/name:tag domain/docker_project/amd64/name:tag domain/docker_project/arm64v8/name:tag
  1. But when the pipeline ran docker manifest push and I noticed that it took a long time to push the manifest created.
Docker Version:
Client: Docker Engine - Community
Version: 20.10.14
API version: 1.41
Go version: go1.16.15
Git commit: a224086
Built: Thu Mar 24 01:48:02 2022
OS/Arch: linux/amd64
Context: default
Experimental: true

Server: Docker Engine - Community
Engine:
Version: 20.10.3
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 46229ca
Built: Fri Jan 29 14:31:32 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0

Private Registry:
Harbor v2.2.1-b0d63082

Q: I wonder if there are some methods to push this manifest faster. Maybe its digests can be mounted from another place of the registry just like using docker push since the digests listed in the manifest have already been pushed to the same private registry.