これにハマっていた。

It’s not possible to use Docker volume mounting with the docker executor, but using the machine executor it’s possible to mount local directories to your running Docker containers.

ref. How can I use Docker volume mounting on CircleCI? – CircleCI Support Center

See also. CircleCI上でDockerとファイルをうまくやりとりする - Qiita

config.yml

仕上がったCircleCIの設定ファイルは下記の通り。

machine: の下に image: ubuntu-2204:2023.04.2 を定義すればOK.

jobs:
  build:
    machine:
      image: ubuntu-2204:2023.04.2
    steps:
      - checkout
      - run: docker compose build
      - ...

Available machines

利用可能なmachine image に関しては下記より調べることができる。

CircleCI イメージ (cimg)

Available resource_class

利用可能な resource_classは下記。

  • arm.medium
  • arm.large
  • arm.xlarge
  • arm.2xlarge

Arm 実行環境の使用 - CircleCI

setup_remote_docker

もともとやろうとしていたのでは、setup_remote_docker 方式。

jobs:
  build:
    docker:
      - image: cimg/base:2022.06
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    steps:
      # ... steps for building/testing app ...
      - setup_remote_docker:
          version: 20.10.14

ref. Run Docker commands - CircleCI

ただこれだと冒頭に述べたように docker volume mount が機能せず、断念した。

内部的には DOCKER_HOST を切り替えているようだ。

DOCKER_HOST で全く異なるホストの Docker が指定されているんですな.

CircleCI の setup_remote_docker を設定した時に留意すべきこと 〜 追記 〜 - ようへいの日々精進XP

circleci/docker Orb

circleci/docker で docker のinstallができる。

orbs:
  docker: circleci/docker@2.2.0

jobs:
  build:
    steps:
      - ...
      - docker/install-docker-tools
      - ...