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



  • 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
    



Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2