Безрутовый докер

Bezrutovyj Doker



Docker — один из самых мощных и влиятельных инструментов для разработки и развертывания современных приложений. Как разработчики, мы используем его на наших локальных компьютерах, чтобы за считанные секунды быстро настроить среду, соответствующую потребностям наших приложений.

Однако при работе в 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.

Чтобы следовать этому сообщению, убедитесь, что у вас есть следующее:

  1. Система на базе Linux с правами root.
  2. Доступ к сети.

Настройка системы с помощью 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. Не стесняйтесь проверить документацию по безрутовому докеру, чтобы узнать больше.