Exporting multi-arch Docker image from local registry to .tar file
-
I have a multi-arch build that is pushing to a local registry I have running:
docker buildx build --platform linux/amd64,linux/arm64 --push -t localhost:5000/myimage:latest
I need to export this multi-arch image to a
.tar
file for future use withdocker load
. I cannot for the life of me find a way to do this.I've tried:
docker pull localhost:5000/myimage:latest docker save -o myimage.tar localhost:5000/myimage:latest
And this exports only the image for my architecture (
amd64
). So then I tried:docker pull --platform linux/arm64 --platform linux/amd64 localhost:5000/myimage:latest docker save -o myimage.tar localhost:5000/myimage:latest
And this has the same result, even though I'm explicitly telling it to pull both architectures.
How can I export a multi-arch image from a local registry as a single
.tar
file?
-
This is answered in the https://www.docker.com/blog/multi-platform-docker-builds/ . For your specific situation, you would perform a build and push for each platform you'd like, then create a manifest file and push that. Then you can perform the save. It would look something like this:
$ docker buildx build --platform linux/amd64 --push -t localhost:5000/myimage:amd64 . $ docker buildx build --platform linux/arm64 --push -t localhost:5000/myimage:arm64 . $ docker manifest create myimage:latest myimage:amd64 myimage:arm64 $ docker manifest push localhost:5000/myimage:latest $ docker image save -o myimage.tar localhost:5000/myimage:latest