Почему сбой моего gitlab-runner (в контейнере Docker) с нескольких дней, я ничего не менял

#docker #gitlab #gitlab-ce

# #docker #gitlab #gitlab-ce

Вопрос:

У меня сервер Ubuntu 18.04. На этом сервере запущен экземпляр gitlab-ce 12.7.5 в контейнере docker и gitlab-runner 12.8.0 также в контейнере docker. С нескольких дней все конвейеры выходят из строя с:

 *Running with gitlab-runner 12.8.0 (1b659122)
  on ddddd kbuTsA6j
Using Docker executor with image ubuntu:18.04 ...
00:02
Pulling docker image ubuntu:18.04 ...
Using docker image sha256:2c047404e52d7f17bdac4121a13cd844447b74e13063f8cb8f8b314467feed06 for ubuntu:18.04 ...
ERROR: Job failed (system failure): Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:459: container init caused: process_linux.go:422: setting cgroup config for procHooks process caused: resulting devices cgroup doesn't match target mode: unknown (executor_docker.go:810:0s)*
 

Файл config.toml контейнера gitlab-runner выглядит следующим образом:

 concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "ddddd"
  url = "https://myreplacedname.stratoserver.net:8929/"
  token = "kbuTsA6jgE_GrM"
  tls-ca-file = "/etc/gitlab-runner/certs/myreplacedname.stratoserver.net.crt"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.docker]
    tls_verify = false
    image = "docker:19.03.1"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/srv/gitlab-runner/config:/etc/gitlab-runner", "/cache", "/builds:/builds"]
    shm_size = 0

 

Еще несколько дней назад все работало нормально. Я был бы очень рад, если бы вы могли мне помочь. Спасибо!

Ответ №1:

Я потратил несколько дней, пытаясь найти решение той же проблемы. Я обнаружил, что присвоение значения false privileged полю вашего [runners.docker] раздела решает эту проблему.

Итак, в вашем случае результирующая конфигурация будет выглядеть так:

 concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "ddddd"
  url = "https://myreplacedname.stratoserver.net:8929/"
  token = "kbuTsA6jgE_GrM"
  tls-ca-file = "/etc/gitlab-runner/certs/myreplacedname.stratoserver.net.crt"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.docker]
    tls_verify = false
    image = "docker:19.03.1"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/srv/gitlab-runner/config:/etc/gitlab-runner", "/cache", "/builds:/builds"]
    shm_size = 0
 

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

Комментарии:

1. большое вам спасибо!!! Я также трачу 3 дня на эту проблему раньше. 🙂 это очень странно. Прежний не функционировал бы без «privileged = true», а теперь необходимо обратное.. Я спрашиваю себя, тестируют ли создатели документации даже свою собственную документацию. Но теперь он работает с предложенным вами исправлением.

2. Большое вам спасибо!

3. Это сработало, спасибо