There are two options I know of.
First, you can have buildx
run builds on multiple nodes, one for each platform, rather than using qemu
. For that, you would use docker buildx create --append
to add the additional nodes to the builder instance. The downside of this is you'll need the nodes accessible from the node running docker buildx
which typically doesn't apply to ephemeral cloud build environments.
The second option is to use the experimental docker manifest
command. Each builder would push a separate tag. And at the end of all those, you would use docker manifest create
to build a manifest list and docker manifest push
to push that to a registry. Since this is an experimental feature, you'll want to export DOCKER_CLI_EXPERIMENTAL=enabled
to see it in the command line. (You can also modify ~/.docker/config.json
to have an "experimental": "enabled"
entry.)