# Docker Arm images (https://depot.dev/docs/container-builds/how-to-guides/arm-containers)

## 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`](/docs/cli/reference/container-builds#depot-build) or [`docker build`](/docs/container-builds/how-to-guides/docker-build#how-to-use-depot-with-docker), we launch optimized builders for each architecture requested with a persistent layer cache attached to them. Each image builder, by default, has 16 CPUs and 32GB of memory. If you're on a startup or business plan, you can configure your builders to be larger, with up to 64 CPUs and 128 GB of memory. Each builder also has a fast NVMe SSD with at least 50GB for layer caching.

## How to build Docker images for Arm CPUs like Apple Silicon 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 a macOS device running Apple Silicon (M1, M2, M3, M4), there is nothing extra you need to do. We will detect the architecture and route the build to an Arm builder.

```shell
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.

```shell
docker build --platform linux/arm64 .
```

We have integration guides for most of the CI providers:

* [Bitbucket Pipelines](/docs/container-builds/integrations/bitbucket-pipelines)
* [Buildkite](/docs/container-builds/integrations/buildkite)
* [CircleCI](/docs/container-builds/integrations/circleci)
* [GitHub Actions](/docs/container-builds/integrations/github-actions)
* [GitLab CI](/docs/container-builds/integrations/gitlab-ci)
* [Google Cloud Build](/docs/container-builds/integrations/google-cloud-build)
* [Jenkins](/docs/container-builds/integrations/jenkins)
* [Travis CI](/docs/container-builds/integrations/travis-ci)

## 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`.

```shell
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`:

```shell
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`](/docs/cli/reference/container-builds#depot-build) instead where we have made load faster & more intelligent.

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

## For AI Agents

The full site index is at [llms.txt](https://depot.dev/llms.txt). Append `.md` to any documentation, blog, changelog, or customer URL to fetch its markdown source directly.