Docker внутри Docker в кластере Kubernetes - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь запустить капсулу Дженкинса в кластере Кубернетес на голом металле.

Я пытался реализовать docker в docker, так как мне нужно построить образ Docker в конвейере, чтобы я монтировал /var/run/docker.sock как том в контейнер , Проблема, с которой я столкнулся, заключалась в том, что я получал сообщение об отказе в разрешении каждый раз, когда в конвейере Jenkins запускалась команда docker.

Я проверил владение /var/run/docker.sock на узле

srw-rw---- 1 root docker 0 Apr 10 19:47 /var/run/docker.sock

Затем я проверил его внутри работающего контейнера:

srw-rw---- 1 root 116 0 Apr 10 21:33 /var/run/docker.sock

Теперь я немного запутался. Почему я вижу удостоверение личности? Я проверил groupID группы docker на хосте. Это ровно 116. Я думаю, логичным предположением будет то, что владение внутри контейнера точно такое же, как и на хосте. Хотя группа docker на хосте не выглядит как группа docker внутри контейнера. Это правильное предположение? Тогда возникает вопрос: что я сделал не так?

Мой док-файл Jenkins выглядит следующим образом

FROM jenkins/jenkins:2.230-jdk11
....
UN apt-get update -qq  && apt-get install -y docker-ce docker-ce-cli containerd.io

#The following 3 commands I tried to fix the issue, but it did not help
RUN touch /var/run/docker.sock
RUN chown jenkins:docker /var/run/docker.sock
RUN usermod -aG docker jenkins

USER jenkins

Я предполагаю, что группы могут быть как-то - каким-то образом сопоставлены между хост-и гостевой ОС (не уверен, что это работает так (да?)) или - пользователя jenkins следует добавить в группу docker на операционной системе хоста, но я не смог найти, как это сделать. Вероятно, это можно сделать, как предложено здесь , с помощью команды при запуске модуля, но тогда мне придется запускать модуль как пользователь, у которого есть на это права, что может быть не самой лучшей идеей. или - что-то еще

Пожалуйста, посоветуйте, каков рекомендуемый способ заставить это работать.

Спасибо

PS Эту проблему можно четко устранить, указав

  securityContext:
    ..
    runAsGroup: 116
    ..

в определении развертывания, но это недопустимое решение.

...