← All posts

Running Docker on Linux ARM from my Mac

Keeping development tools on an ARM Mac while a Linux ARM machine runs the containers.

On this page

Why separate them

I keep my editor and development tools on my ARM Mac, but let a Linux ARM machine run Docker. Databases and several services can eat up memory and storage, so I moved the containers, images, and volumes to the other machine.

I still use Docker, Compose, and Buildx from the Mac. A Docker context connects them to the Linux machine over SSH, so the commands stay close to where I'm working.

What the installer covers

I put the setup into an installer: the tools on both machines, the Docker context, and a check that they can talk to each other. There are optional modules for SSD storage and clearing out old resources, plus Colima for running containers locally on the Mac.

The project started with a Radxa running Armbian. The installer also accounts for other ARM64 hardware running Debian, Ubuntu, or Armbian.

What runs on each machine

Develop on the Mac. Run containers on Linux ARM.

MacDevelopment tools
Docker context
over SSH
Linux ARMContainers and storage

On the Mac

  • Editor
  • Docker CLI
  • Compose
  • Buildx

The Docker CLI reaches the remote Engine through a Docker context over SSH.

On Linux ARM

  • Docker Engine
  • Images
  • Volumes
  • Containers

Docker Engine runs the containers and stores images and volumes on Linux ARM.

This split depends on the connection between the two machines.

Limitations

The connection between the machines is part of the arrangement, so a slow link gets in the way. The remote machine is also ARM: moving a workload there doesn't solve an x86-only dependency. For the projects that fit, I get to keep working from the Mac while Linux takes care of the containers.