Однако при работе в Docker мы можем столкнуться со случаями, когда нам необходимо создавать и использовать ресурсы Docker, но у нас нет root-доступа.
Или, возможно, вы хотите разрешить нескольким пользователям в данной системе получать доступ и использовать Docker, не предоставляя всем пользователям root-права.
В этом руководстве мы узнаем о Docker без root-доступа, что это значит, как он работает и как мы можем его использовать, чтобы позволить пользователям без root-доступа использовать Docker и связанные с ним сервисы.
Что такое безрутовый докер?
По умолчанию после установки Docker демону Docker и его инструментам требуются права root в хост-системе. Это может привести к существенному риску безопасности, если Docker будет скомпрометирован, что может предоставить злоумышленнику root-доступ.
Rootless Docker — это функция, которая позволяет нам использовать и запускать демон Docker и связанные с ним контейнеры без прав root.
Как это работает
Хотя может быть сложно погрузиться в техническую работу среды докера без root, ниже приводится общий обзор, который объясняет, что делает докер без root и как он работает под капотом.
Пространства имен пользователей – Одной из важных функций, которые использует докер без root-прав, являются пространства имен пользователей. Эта фундаментальная особенность ядра Linux позволяет процессам иметь разные идентификаторы пользователей и групп внутри пространства имен по сравнению с внешними. Это означает, что процесс может запускаться от имени пользователя root внутри своего пространства имен, но за его пределами он работает как обычный пользователь.
сеть – Следующая особенность Docker без root – это работа в сети. По умолчанию обычный демон Docker использует сетевые стеки, такие как iptables и Bridges, требующие root-прав.
Docker использует такие функции, как slirp4netns, который обеспечивает стек TCP/IP пользовательского режима в докере без root-доступа. Это позволяет Docker получать доступ к сети без прав root в хост-системе.
Хранилище – Следующая важная часть безрутового докера – это драйвер хранилища. По умолчанию Docker использует драйвер хранилища overlay2, который, как вы можете догадаться, требует root-прав. Вместо этого экземпляр докера без root использует драйвер Fuse-overlayfs. Этот драйвер основан на оверлее FUSE fs, что позволяет нам монтировать его без прав root.
Выше приведены некоторые из основных компонентов экземпляра докера без root-прав. Помните, что здесь не рассматривается полная работа докера без root-прав. Ознакомьтесь с документацией, чтобы узнать больше.
Безрутовый докер – требования
Давайте отойдем от теории и научимся создавать и настраивать среду Docker без root.
Чтобы следовать этому сообщению, убедитесь, что у вас есть следующее:
- Система на базе Linux с правами root.
- Доступ к сети.
Настройка системы с помощью UIDMap
Перед установкой и настройкой Docker необходимо установить и настроить систему с помощью утилиты uidmap.
UIDMap позволяет нам управлять сопоставлениями UID и GUI процессов в системе Linux в содержимом пространств имен пользователей. Помните, мы упоминали, что Docker без root использует преимущества пользовательских пространств имен? Этот инструмент позволит нам указать сопоставления UID и GID и соответствующие им пространства имен.
Начните с обновления системных пакетов следующим образом:
$ судо apt-получить обновлениеЗатем установите утилиту uidmap, как показано:
$ судо apt-получить установку uidmap -и
Установка безрутового докера
Следующий шаг — обработка и установка безрутового Docker. Мы можем сделать это, выполнив простые шаги, описанные ниже:
Начните с загрузки сценария установщика Docker без root-доступа по ссылке, показанной ниже:
https://get.docker.com/rootless
Вы можете использовать cURL или WGET.
$ завиток -sSL https: // get.docker.com / безродный | ш
Обратите внимание, что вы не можете запустить приведенную выше команду от имени пользователя root.
После завершения установки отредактируйте файл .bashrc с помощью вашего любимого текстового редактора:
$ нано .bashrcЗатем добавьте следующие записи в файл конфигурации bashrc:
экспорт XDG_RUNTIME_DIR '=' / дом / убунту / .docker / бегатьэкспорт ПУТЬ '=' / дом / убунту / мусорное ведро: $PATH
экспорт ДОКЕР_ХОСТ = Юникс: /// дом / убунту / .docker / бегать / docker.sock
Обязательно измените пользователя с «ubuntu» на пользователя, которому вы хотите установить Docker. Вывод сценария предоставит вам содержимое для добавления в файл .bashrc.
Сохраните изменения и закройте редактор.
На следующем этапе нам нужно запустить демон Docker без root-прав. Мы можем сделать это с помощью systemctl, как показано в команде ниже:
системаctl --ubuntu запустить докерПосле запуска вы можете использовать команды Docker для запуска и настройки контейнеров Docker.
Заключение
В этом руководстве мы изучили функциональность Docker без root, как он работает и как его настроить в системе Linux. Не стесняйтесь проверить документацию по безрутовому докеру, чтобы узнать больше.