Для многих инструментов разработки я считаю полезным устанавливать их в контейнере и выполнять сборки и тестирование внутри них.С небольшим количеством сценария-обертки для сборки быстро растущей командной строки, не так уж сложно запускать даже приложения с графическим интерфейсом (X-windows), такие как IDE, в них.
Однако, предоставляя пользователю доступ к системеЭкземпляр демона docker фактически дает им права root, потому что они могут запускать контейнер от имени root и монтировать любую часть файловой системы хоста в нем.На машинах разработчиков это, как правило, не проблема, так как основной пользователь уже имеет полные права sudo в любом случае, но на некоторых общих машинах это может быть.
Теперь runc
, инструмент под докером, который фактически создает контейнеры,способен запускать не-root, используя userns и subusers.Однако это ничего не дает для загрузки изображений из репозиториев и управления ими.И демон Docker может быть настроен для запуска от имени определенного пользователя, но не для запуска контейнеров, как запрашивающий их пользователь.
Таким образом, существует ли способ, с помощью которого любой пользователь в системе может запускать контейнеры, как они сами, с помощью субпользователей,но все еще имел доступ к реестрам?
Я видел инструменты для построения контейнеров в этих условиях, например img , которые действительно запускают runc
под капотом сsubusers, но если я что-то пропустил, у него нет удобного способа запуска и управления встроенными контейнерами.Предположительно предполагается, что они будут содержать системные службы, но я хочу вместо этого использовать контейнеры в качестве стандартных сред для конкретных пользовательских задач.