We use cookies to understand how people use Depot.
Guides

Docker Arm images

Docker Arm images with Depot

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.

How to build Docker images for Arm CPUs like M1/M2 MacBooks or AWS Graviton

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.

depot build .

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.

docker build --platform linux/arm64 .

We have integration guides for most of the CI providers:

How to build multi-platform Docker images

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.

depot build --platform linux/amd64,linux/arm64 .

Loading a multi-platform Docker image via --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:

docker exporter does not currently support exporting manifest lists

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.

depot build --platform linux/amd64,linux/arm64 --load .