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

Проблема решена, выполнив все по нижеуказанным шагам

  1. установить контейнер lxd согласно https://stgraber.org/2016/04/13/lxd-2-0-docker-in-lxd-712/

  2. установить gitlab-runner согласно https://docs.gitlab.com/runner/install/linux-repository.html

  3. https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

Другие вопросы по тегам