HiveBrain v1.2.0
Get Started
← Back to all entries
patterndockerMinor

Exporting multi-arch Docker image from local registry to .tar file

Submitted by: @import:stackexchange-devops··
0
Viewed 0 times
localimagefilemultiexportingdockerregistryarchfromtar

Problem

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 with docker 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?

Solution

This is answered in the Docker blog post on 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

Context

StackExchange DevOps Q#16511, answer score: 2

Revisions (0)

No revisions yet.