Назад | Перейти на главную страницу

Gitlab runner в докере с исполнителем докера

Я хочу запустить Gitlab CI Runner в контейнере докеров, а также использовать программу-исполнитель докеров для запуска моих сборок в своих собственных контейнерах докеров, причем все это поверх CoreOS.

Это вообще возможно? Каждая документация, которую я нашел до сих пор, предполагает, что Gitlab Runner работает в ОС хоста, что для меня не является жизнеспособным вариантом.

Альтернативой было бы наличие специализированных контейнеров gitlab-runner с установленными в каждом из них зависимостями сборки.

Там есть --privileged параметр

https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities

Что должно дать возможность запускать докер внутри докера. Теоретически это возможно, но вы, вероятно, столкнетесь с другими проблемами.

Вам нужно смонтировать docker.sock, установить --privileged

docker run -d  -v /var/run/docker.sock:/var/run/docker.sock --name gitlab-runner --privileged --restart always -v d:/docker/data/gitlab-runner:/etc/gitlab-runner gitlab/gitlab-runner:latest

И установите config привилегированный.

[[runners]]

  name = "docker2"
  url = "https://gitlab.com/"
  token = "xxxxx"
  executor = "docker"
  [runners.docker]
    image = "alpine:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    shm_size = 0