Building Docker images for Arm via docker build
from a host architecture running an Intel chip is forced to use QEMU emulation to build Docker Arm images. It's also only possible to build multi-platform Docker images using emulation or running your own BuildKit builders.
Depot removes emulation altogether.
Depot is a remote Docker container build service that orchestrates optimized BuildKit builders on native CPUs for Intel (x86) and Arm (arm64).
When a Docker image build is routed to Depot either via depot build
or docker build
, we launch optimized builders for each architecture requested with a persistent layer cache attached to them. Each builder has 16 CPUs, 32GB of memory, and at least 50GB of fast NVMe cache SSDs.
With depot build
or docker build
configured to use Depot, it automatically detects the architecture you're building for and routes the build to the appropriate builder.
So, if you're building a Docker image from an M1 or M2 MacBook, there is nothing extra you need to do. We will detect the architecture and route the build to an Arm builder.
If you're building a Docker image from an Intel machine, like a CI provider, you can specify --platform linux/arm64
to build a Docker Arm image.
We have integration guides for most of the CI providers:
With Depot, we can launch multiple builders in parallel to build multi-platform Docker images concurrently. To build a multi-platform Docker image for both Intel & Arm, we can specify --platform linux/amd64,linux/arm64
to depot build
or docker build
.
--load
If you want to load a multi-platform Docker image into your local Docker daemon, you will hit an error when using docker buildx build --load
:
This is because the default behavior of load does not support loading multi-platform Docker images. To get around this, you can use depot build --load
instead where we have made load faster & more intelligent.