patterndockerMinor
Exporting multi-arch Docker image from local registry to .tar file
Viewed 0 times
localimagefilemultiexportingdockerregistryarchfromtar
Problem
I have a multi-arch build that is pushing to a local registry I have running:
I need to export this multi-arch image to a
I've tried:
And this exports only the image for my architecture (
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
docker buildx build --platform linux/amd64,linux/arm64 --push -t localhost:5000/myimage:latestI 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:latestAnd 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:latestAnd 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.