GitLab Runner - исполнитель Docker в контейнере LXD
Я пытаюсь запустить GitLab Runner с Docker Executor внутри LXD контейнера. Сделать это на полпути, но все еще не работает должным образом.
Кто-нибудь случайно запустил его и смог рассказать, как это сделать?
2 ответа
Вы должны настроить свой док-контейнер для запуска как привилегированный. Проверьте файл config.toml runner и установите его так:
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
shm_size = 0
[runners.cache]
Insecure = false
Также убедитесь, что вы запустили свой контейнер LXC с параметрами:
lxc launch --verbose IMAGE CONTAINER_NAME -c security.nesting = true -c security.privileged = true
Кроме того, проверьте профиль LXC, который будет установлен следующим образом:
config:
raw.lxc: |-
lxc.apparmor.profile = unconfined
lxc.cgroup.devices.allow = a
lxc.mount.auto=proc:rw sys:rw
lxc.cap.drop=
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
root:
path: /
pool: lxd-pa
type: disk
name: default
В случае, если даже эти настройки не изменят поведение контейнера Docker, попробуйте отключить apparmor на контейнере LXC
При использовании шагов, описанных выше для "исполнителя docker-in-docker", я получаю:
ERROR: Preparation failed: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"process_linux.go:367: setting cgroup config for procHooks process caused \\\"failed to write a *:* rwm to devices.allow: write /sys/fs/cgroup/devices/docker/e55913c80640ad080bf04445658e8cc801cae570fddfa40d05405e025e160625/devices.allow: operation not permitted\\\"\"": unknown (executor_docker.go:714:0s)
LXD версия: 3.0.1 Ubuntu-сервер 18.04.1
Проблема решена, выполнив все по нижеуказанным шагам
установить контейнер lxd согласно https://stgraber.org/2016/04/13/lxd-2-0-docker-in-lxd-712/
установить gitlab-runner согласно https://docs.gitlab.com/runner/install/linux-repository.html
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html