Abstract : Manually creates a multi platform manifest (image) and push it to docker hub.
For instance we will target linux/amd64 and linux/arm64 :
docker build -t fugeritorg/fugeritorg/graalkus:latest-amd64native-pgo --platform linux/amd64 .
docker push fugeritorg/fugeritorg/graalkus:latest-amd64native-pgo
docker build -t fugeritorg/fugeritorg/graalkus:latest-arm64native-pgo --platform linux/arm64 .
docker push fugeritorg/fugeritorg/graalkus:latest-arm64native-pgo
docker manifest create \
fugeritorg/fj-doc-playground-quarkus:3.1.5 \
--amend fugeritorg/fj-doc-playground-quarkus:3.1.5-linux-amd64 \
--amend fugeritorg/fj-doc-playground-quarkus:3.1.5-linux-arm64
docker manifest push fugeritorg/fj-doc-playground-quarkus:3.1.5
This quickstart is based on : https://www.docker.com/blog/multi-arch-build-and-images-the-simple-way/
Depending on you system, method 2A could not work with message “${your manifest} is a manifest list”
If one of the image was build on a different system for a different platform, maybe it is needed to pull it forcely, for instance :
docker pull --platform linux/amd64 fugeritorg/graalkus:latest-amd64native-pgo
It is possible to use buildx to build a new image from the two created :
docker buildx imagetools create -t fugeritorg/graalkus:latest-native-pgo \
fugeritorg/graalkus:latest-amd64native-pgo \
fugeritorg/graalkus:latest-arm64native-pgo
This solution was borrowed from :
https://stackoverflow.com/questions/75521775/buildx-docker-image-claims-to-be-a-manifest-list