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.
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:
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 .
Note: docker build
does not allow you to --load
a multi-platform Docker image natively. You will get the error docker exporter does not currently support exporting manifest lists
if you try to do so. To get that functionality, you must run depot configure-docker
so that Depot can take over the docker build
and handle load correctly.