Докер без корен

Doker Bez Koren



Docker е един от най-мощните и влиятелни инструменти за съвременна разработка и внедряване на приложения. Като разработчици, ние го използваме на нашите локални машини за бързо настройване и конфигуриране на среди, които отговарят на нуждите на нашите приложения за секунди.

Въпреки това, когато работим в Docker, може да срещнем случаи, в които трябва да създадем и използваме ресурси на Docker, но нямаме root достъп.

Или може би искате да разрешите на множество потребители в дадена система да имат достъп и да използват Docker, без да давате root права на всички потребители.







В този урок ще научим за Docker без root, какво означава, как работи и как можем да го използваме, за да позволим на потребители без root достъп да използват Docker и свързаните с него услуги.



Какво е Rootless Docker?

По подразбиране, след като инсталирате Docker, демонът на Docker и неговите инструменти изискват root привилегии на хост системата. Това може значително да доведе до риск за сигурността, ако Docker бъде компрометиран, което може да даде root достъп на нападателя.



Rootless Docker е функция, която ни позволява да използваме и стартираме Docker демона и свързаните контейнери без root права.





Как работи

Въпреки че може да бъде предизвикателство да се потопите в техническата работа на безрутна докер среда, по-долу е преглед на високо ниво, който обяснява какво прави безрутният докер и как работи под капака.

Потребителски пространства от имена – Една от важните функции, които използва докерът без корен, са пространствата от потребителски имена. Тази основна характеристика на ядрото на Linux позволява на процесите да имат различни идентификатори на потребители и групи в пространството на имената в сравнение с външните. Това означава, че даден процес може да работи като root потребител в своето пространство от имена, но извън него той работи като обикновен потребител.



Работа в мрежа – Следващата функция на Docker без руутване е работата в мрежа. По подразбиране нормалният докер демон разчита на мрежови стекове като iptables и мостове, изискващи root права.

Docker се възползва от функции като slirp4netns, който предоставя TCP/IP стек в потребителски режим в докер без корен. Това позволява на Docker да има достъп до мрежата без root разрешение на хост системата.

Съхранение – Следващата съществена част от безрутния докер е драйверът за съхранение. По подразбиране Docker използва драйвер за съхранение на overlay2, който, както можете да предположите, изисква root права. Вместо това екземпляр на докер без root използва драйвера fuse-overlayfs. Този драйвер е базиран на FUSE overlay fs, което ни позволява да го монтираме без права на root.

Горепосочените са някои от основните компоненти на докер екземпляр без корен. Не забравяйте, че това не изследва цялостната работа на безрутен докер. Разгледайте документацията, за да научите повече.

Rootless Docker – Изисквания

Нека преминем от теорията и да научим как да създадем и конфигурираме Docker среда без руутване.

За да следвате тази публикация, уверете се, че имате следното:

  1. Linux-базирана система с root права.
  2. Достъп до мрежата.

Конфигуриране на системата с UIDMap

Преди да инсталираме и конфигурираме Docker, трябва да инсталираме и конфигурираме системата с помощната програма uidmap.

UIDMap ни позволява да управляваме съпоставянията на UID и GUI на процесите в Linux система в съдържанието на потребителските пространства от имена. Спомняте ли си, когато споменахме, че rootless Docker се възползва от потребителските пространства от имена? Този инструмент ще ни позволи да посочим съпоставянията на UID и GID и съответните им пространства от имена.

Започнете с обновяване на системните пакети, както следва:

$ sudo apt-get актуализация

След това инсталирайте помощната програма uidmap, както е показано:

$ sudo apt-get инсталирайте uidmap

Инсталиране на Rootless Docker

Следващата стъпка е да обработите и инсталирате rootless Docker. Можем да направим това, като следваме простите стъпки, посочени по-долу:

Започнете, като изтеглите скрипта за инсталиране на docker докер без root от връзката, показана по-долу:

https://get.docker.com/rootless

Можете да използвате cURL или WGET.

$ къдрица -sSL https: // get.docker.com / без корени | ш

Имайте предвид, че не можете да изпълните горната команда като root потребител.

След като инсталацията приключи, редактирайте вашия .bashrc файл с помощта на любимия си текстов редактор:

$ нано .bashrc

След това добавете следните записи към конфигурационния файл bashrc:

износ XDG_RUNTIME_DIR = / У дома / ubuntu / .докер / тичам

износ ПЪТЕКА = / У дома / ubuntu / контейнер: $PATH

износ DOCKER_HOST =unix: /// У дома / ubuntu / .докер / тичам / докер.чорап

Уверете се, че сте променили потребителя от „ubuntu“ на потребителя, който искате да инсталирате Docker. Резултатът от скрипта ще ви даде съдържанието, което да добавите към файла .bashrc.

Запазете промените и затворете редактора.

В следващата стъпка трябва да инициираме демона Docker без корен. Можем да направим това с помощта на systemctl, както е показано в командата по-долу:

systemctl --ubuntu стартирайте докер

След като стартирате, можете да използвате командите на Docker, за да стартирате и конфигурирате Docker контейнери.

Заключение

В този урок научихме функционалността на Docker без root-докер, как работи и как можем да го конфигурираме на Linux система. Чувствайте се свободни да проверите документацията на rootless docker, за да научите повече.