Запуск OCI Containers в качестве обычных пользователей - PullRequest
0 голосов
/ 11 июля 2019

Для многих инструментов разработки я считаю полезным устанавливать их в контейнере и выполнять сборки и тестирование внутри них.С небольшим количеством сценария-обертки для сборки быстро растущей командной строки, не так уж сложно запускать даже приложения с графическим интерфейсом (X-windows), такие как IDE, в них.

Однако, предоставляя пользователю доступ к системеЭкземпляр демона docker фактически дает им права root, потому что они могут запускать контейнер от имени root и монтировать любую часть файловой системы хоста в нем.На машинах разработчиков это, как правило, не проблема, так как основной пользователь уже имеет полные права sudo в любом случае, но на некоторых общих машинах это может быть.

Теперь runc, инструмент под докером, который фактически создает контейнеры,способен запускать не-root, используя userns и subusers.Однако это ничего не дает для загрузки изображений из репозиториев и управления ими.И демон Docker может быть настроен для запуска от имени определенного пользователя, но не для запуска контейнеров, как запрашивающий их пользователь.

Таким образом, существует ли способ, с помощью которого любой пользователь в системе может запускать контейнеры, как они сами, с помощью субпользователей,но все еще имел доступ к реестрам?

Я видел инструменты для построения контейнеров в этих условиях, например img , которые действительно запускают runc под капотом сsubusers, но если я что-то пропустил, у него нет удобного способа запуска и управления встроенными контейнерами.Предположительно предполагается, что они будут содержать системные службы, но я хочу вместо этого использовать контейнеры в качестве стандартных сред для конкретных пользовательских задач.

1 Ответ

1 голос
/ 13 июля 2019

Вы можете использовать podman вместо docker, его могут запускать обычные пользователи без повышенных привилегий. Единственное, что вам может потребоваться настроить (как root) перед его использованием - это отображение subuid / subgid (см. Примечания по установке). CLI этого инструмента похож на Docker (podman pull, podman run и т. Д.) И может также использовать реестры Docker.

Есть некоторые ограничения для контейнеров без корней, но в большинстве случаев этого вполне достаточно.

...