Skip to content

Instantly share code, notes, and snippets.

@radimih
Last active April 2, 2026 11:00
Show Gist options
  • Select an option

  • Save radimih/897151bde8e72d473d6421865e480af3 to your computer and use it in GitHub Desktop.

Select an option

Save radimih/897151bde8e72d473d6421865e480af3 to your computer and use it in GitHub Desktop.
GitLab CI/CD: запуск GitLab Runner через Docker

Из коробки может быть запущен только один экземпляр GitLab Runner. Это можно обойти с помощью Docker. Но зачем? :)

Один GitLab Runner может обслуживать неограниченное количество executor'ов.

Установка

Запуск GitLab Runner

docker run -d \
           --restart always \
           -v gitlab-runner-config:/etc/gitlab-runner \
           -v gitlab-runner-home:/home/gitlab-runner \
           -v /var/run/docker.sock:/var/run/docker.sock \
           --name gitlab-runner \
           gitlab/gitlab-runner:latest

Отличия от описанного в документации способа в том, что явно указывается volume для домашнего каталога раннера. Именно в нем содается подкаталог builds. Если volume не указывать, то он будет создан автоматически с ничего не значащим именем.

Регистрация executor'а

docker exec -it gitlab-runner gitlab-runner register

Docker volumes

При установке GitLab Runner (см. выше) будут созданы два стандартных volume'а:

  • gitlab-runner-config - содержит конфигурационный файл GitLab Runner'а - config.toml
  • gitlab-runner-home - содержит подкаталоги builds и cache для всех shell-executor'ов

При первом же использовании docker-executor'а на проекте автоматически будут созданы два служебных volume'а для хранения кэша и рабочего каталога сборки (Build Directory).

Каждый volume создается путем однократного запуска контейнера на основе образа gitlab/gitlab-runner-helper. Эти контейнеры остаются в остановленном состоянии. Имена контейнеров: runner-{Id executor}-project-{Id проекта}-concurrent-0-cache-{хэш}.

Точки монтирования данных volume'ов внутри рабочих контейнеров, запускаемых в .gitlab-ci.yml по директивам image и services:

  • {volume 1}:/builds
  • {volume 2}:/cache

GitLab настоятельно рекомендует не использовать /builds как место для хранения каких-либо артефактов между сборками.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment