докер в докере без привилегированного режима

докер в докере без привилегированного режима

В прошлый раз я использовал Docker в Docker для runners, нотребуется привилегированный режим

создать файл:

version: '3.7'
services:
  runner:
    image: gitlab/gitlab-runner:latest
    volumes:
      - ./config:/etc/gitlab-runner
      - ./run:/var/run/
#      - /var/run/docker.sock:/var/run/docker.sock

  docker:
    image: docker:dind
    restart: always
    privileged: true # <-- security problems
    volumes:
      - ./run:/var/run/

У меня есть личный ПК. У меня есть команда Gitlab, которой нужно запустить docker buildскрипты docker-compose upс Gitlab CI. Я действительно хочу ускорить CI. Вот почему я делюсь своимхозяиндокер сбегуны, теперь у них есть кэш Docker (образы и т. д.), и когда на одном этапе создается образ, а на другом требуется, это происходит очень быстро.

У меня та же проблема с Jenkins. Мне нужно разделить хост-докер с рабочими узлами.

В прошлый раз я хотел протестировать новый подход и запустить раннеры с их собственным докером. У меня почти нет 2 важных вещей: - ограничение ресурсов (я хочу разделить 7 из 8 ядер ЦП, 10 из 16 ГБ памяти, некоторые ограничения HDD) - безопасность

Важно добавить: у меня нет скриптов CI, которые требуют GPU, сетевых возможностей, монтирования каких-то устройств и т. д. Они обычно делают простые docker buildи docker push, иногда мне нужно захватить артефакты с docker cp, вот и все. Главный вопрос: какзапустить docker в docker без прав root на хост-машине?

Оба режима - совместное использование сокетов или привилегированный режим - создают уязвимости для хост-машин, а виртуальная машина (вроде VirtualBox или чего-то подобного) работает медленно и сложно, к тому же я хочу совместно использовать ресурсы и хочу, чтобы Dockerможетиспользовать 10 из 16 ГБ, но 10 ГБ должны быть свободны, когда он не используется.

У меня возникают некоторые неинформативные ошибки от dind contatiner (до сбоя) при запуске его с обычными привилегиями:

gitlab-runner-docker | mount: permission denied (are you root?)
gitlab-runner-docker | mount: permission denied (are you root?)
gitlab-runner-docker | Could not mount /sys/kernel/security.
gitlab-runner-docker | AppArmor detection and --privileged mode might break.

Какие проблемы у меня будут, если я попробую запустить docker в docker без привилегированного режима? Как это сделать?

решение1

ну, что касается балансировки нагрузки оперативной памяти, я не могу помочь, но вы можете запустить docker в docker (dind) без прав sudo, добавив текущего пользователя в группу docker,

Я не вижу безопасности общих сокетов, поскольку они теряют свою целостность, но я бы рекомендовал создать экземпляр dind с параметром composer с привилегированным параметром: true

Связанный контент