Я хочу запустить 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