The drone/drone-runner-docker does not include arm support

I’m trying to host a runner on a rpi 4, which is arm64, but I cannot pull the drone/drone-runner-docker image because it does not support linux/arm64.

Here on the install docs, it clearly states that arm64 is supported for runners:
https://docs.drone.io/runner/docker/installation/linux/

Looking at the 1 tag on docker hub, you can see it only supports linux and windows amd64.

image

Even for the arm specific tags, none actually support arm64 either.

Is this not supported anymore?

1 Like

And here’s a support post that claims arm64 is supported as well: Drone/agent or drone/drone-runner-docker?

You are correct that the current drone-runner-docker published docker images appear to be amd64, this is a problem and we are working on fixing it.

However, the arm64 tagged images (like 1-linux-arm64) should run on arm64 machines. The runner docker image is built from the scratch image, and only arm64 binaries are copied in drone-runner-docker/Dockerfile.linux.arm64 at master · drone-runners/drone-runner-docker · GitHub

Are you seeing an error when you try to start the docker runner on arm64?

$ uname -a
Linux <hostname> 5.4.0-1066-raspi #76-Ubuntu SMP PREEMPT Mon Jun 27 11:02:52 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
$ docker run --detach \
>   --volume=/var/run/docker.sock:/var/run/docker.sock \
>   --env=... \
>   --restart=always \
>   --name=runner \
>   --platform=arm64 \
>   drone/drone-runner-docker:1-linux-arm
Unable to find image 'drone/drone-runner-docker:1-linux-arm' locally
1-linux-arm: Pulling from drone/drone-runner-docker
Digest: sha256:f16bd359639df05683a3802c8c0cc27965084f06d5a76f9851381c46c7916e05
Status: Image is up to date for drone/drone-runner-docker:1-linux-arm
docker: Error response from daemon: image with reference drone/drone-runner-docker:1-linux-arm was found but does not match the specified platform: wanted linux/arm64, actual: linux/amd64.
See 'docker run --help'.

Doesn’t work when you include the --platform flag, but it does if you exclude it. thanks for your help!

For anyone else who might find this issue, here’s my final run script that got it working:

$ docker run --detach \
>   --volume=/var/run/docker.sock:/var/run/docker.sock \
>   --env=DRONE_RPC_PROTO=https \
>   --env=DRONE_RPC_HOST=... \
>   --env=DRONE_RPC_SECRET=... \
>   --env=DRONE_RUNNER_CAPACITY=2 \
>   --env=DRONE_RUNNER_NAME=linux-arm64 \
>   --restart=always \
>   --name=runner \
>   drone/drone-runner-docker:1-linux-arm
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
b1efdef6717c2d67c6ac0070a5940bcde51a4099a349403fb53a98aeafc44a83

Get a warning, but it seems to be working.

That said, I’d like to run this in docker swarm as a service… I can try using one of the arm specific tags as well, but I’m not sure this will work in swarm. I can live without that for now though! Thanks :+1:

any updated on this ?