[Product Launch] ARM + Docker - Generally Available

The ability to use CircleCI’s Docker executor on ARM instances.

Usage:

version: 2.1
jobs:
  arm_example:
    docker:
      - image: cimg/base:2023.06
    resource_class: arm.medium
    steps:
      - run: echo "hello, world"

Remote Docker:

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/base:2023.06
    resource_class: arm.medium
    steps:
      - setup_remote_docker

Supported Resource Classes & Prices

Non-Remote Docker ARM:

arm.medium: 2 vCPU & 8 GB RAM, 13 credits/min (Available to Free, Performance, and Scale pricing plans)
arm.large: 4 vCPU & 16 GB RAM, 26 credits/min (Available to Free, Performance, and Scale pricing plans)
arm.xlarge: 8 vCPU & 32 GB RAM, 52 credits/min (Available to Performance and Scale pricing plans)
arm.2xlarge: 16 vCPU & 64 GB RAM, 104 credits/min (Available to Scale pricing plan)

Remote Docker ARM:

arm.medium: 2 vCPU & 8 GB RAM, 13 credits/min (Available to Free, Performance, and Scale pricing plans)
arm.large: 4 vCPU & 16 GB RAM, 26 credits/min (Available to Free, Performance, and Scale pricing plans)
arm.xlarge: 8 vCPU & 32 GB RAM, 52 credits/min (Available to Performance, and Scale pricing plans)
arm.2xlarge: 16 vCPU & 64 GB RAM, 104 credits/min (Available to Scale pricing plan)

Important Details:

Supported images:

  • cimg/node:20.5.0 (current)
  • cimg/node:18.17.0
  • cimg/rust:1.71
  • cimg/openjdk:17.0.8
  • cimg/openjdk:11.0.20
  • cimg/deploy:2023.07.1
  • cimg/aws:2023.07.1
  • cimg/azure:2023.07.1
  • cimg/mariadb:11.0.2
  • cimg/mariadb:10.11.4
  • cimg/mariadb:10.10.5
  • cimg/mariadb:10.9.7
  • cimg/mariadb:10.6.14
  • cimg/php:8.2
  • cimg/php:8.1.22
  • cimg/go:1.20.7
  • cimg/go:1.19.12
  • cimg/deploy:2023.08.1
  • cimg/aws:2023.08.1
  • cimg/azure:2023.08.1
  • cimg/postgres:11.21
  • cimg/postgres:12.16
  • cimg/postgres:13.12
  • cimg/postgres:14.9
  • cimg/postgres:15.4
  • postgis variants
  • cimg/redis:7.2
  • cimg/python:3.11.5
  • cimg/python:3.10.13
  • cimg/python:3.9.18
  • cimg/python:3.8.18
  • cimg/ruby flavors

If you try to use an unsupported image, you will see a job failure with a warning:

"WARNING: docker image cimg/python:3.11.4 targets wrong architecture (found amd64 but need [arm64 arm64v8 arm32v7 arm32v6])"

The Docker version for Remote Docker with ARM will only support default & edge.

3 Likes

FYI: Updated post above on July 19 as a handful of convenience images are now built for ARM.

1 Like

FYI: Updated post above on July 20 as well as more convenience images are now built for ARM.

1 Like

FYI: Updated post above on July 21 as well as more convenience images are now built for ARM.

FYI: Updated post above on August 1 as more convenience images are now built for ARM.

FYI: Updated post above on August 2 as more convenience images are now built for ARM.

version: 2.1

jobs:
build:
docker:
- image: cimg/base:2023.06
resource_class: arm.medium
steps:
- setup_remote_docker

@vilius12G did you have a question related to that config.yml?

from what I see here using arm is more expensive that not using arm. will that change?

1 Like

@orarbel Final pricing & specs are still being finalized, we’ll update this page & the official resource class pricing page when the functionality is “Generally Available”.

In the announcement post, the resource classes use the form arm.medium or arm.large. However, looking at the documentation on resource classes (Using the Docker execution environment), that table shows arm-medium, with a dash. Would you be able to clarify which form is valid?

@jlocsei sorry for the inconsistency, I’m working on some updates to the docs to fix that.

Both should be valid. I am going to make all of the docs use the “.” over the hyphens though.

1 Like

FYI: Updated original post on August 14 as more convenience images are now built for ARM.

FYI: Updated original post on August 16 as more convenience images are now built for ARM.

FYI: Resource class specs have been updated in the original post

FYI: Updated original post on August 25 as more convenience images are now built for ARM (Python)

FYI: Updated original post on August 30 as more convenience images are now built for ARM (Ruby)

Hi, is Android image supported?

@vibinr Unfortunately no as the emulator package that we rely on does not support arm64. Enable arm64 builds · Issue #88 · CircleCI-Public/cimg-android · GitHub for details

Are there any building benchmarks to determine if this is faster than using machine images directly?