Runners are used to execute jobs in GitLab CI

Runner can be shared across the instance of GitLab

They can be specific to a group or project

Extensive configuration


Jobs select runners by specifying a tag

Heads-up: New runner registration

Available since 15.10

New default in 16.0 (May 2023)

Old runner registration behind disabled feature flag in 17.0

Removal of old runner registration in 18.0 (May 2025)

Old process

One token per instance, per group and per project

Credential leak causes a lot of work

New process

Create a runner through the UI or the API

One token per runner


Supported executors: shell, docker, docker-windows, docker-ssh, ssh, parallels, virtualbox, docker+machine, docker-ssh+machine, kubernetes


Jobs are executed in the context of the runner

Docker / Kubernetes

Jobs are executed in a dedicated container / pod

Image cleanup

docuum is able to remove least recently used images


  1. Add runner to GitLab instance: Admin Area CI/CD Runners New instance runner

  2. Configure runner: Check “Run untagged jobs”

  3. Start runner (substitute token below)

     # Switch to directory for this topic
     cd ../160_runners
     # Deploy GitLab runner
     export CI_SERVER_URL=<N>
     export RUNNER_EXECUTOR=docker
     docker compose --project-name gitlab \
         --file ../100_reverse_proxy/compose.yml \
         --file compose.yml \
         up -d