Rootless Docker

Rootless Docker



Docker je jedným z najvýkonnejších a najvplyvnejších nástrojov pre vývoj a nasadenie moderných aplikácií. Ako vývojári ho používame na našich lokálnych počítačoch na rýchle nastavenie a konfiguráciu prostredí, ktoré vyhovujú potrebám našej aplikácie v priebehu niekoľkých sekúnd.

Pri práci v Dockeri sa však môžeme stretnúť s prípadmi, keď potrebujeme vytvoriť a používať prostriedky Dockeru, ale nemáme prístup root.

Alebo možno chcete povoliť viacerým používateľom v danom systéme prístup a používanie Docker bez udelenia koreňového povolenia všetkým používateľom.







V tomto návode sa dozvieme o rootless Docker, čo to znamená, ako to funguje a ako ho môžeme použiť, aby sme umožnili používateľom bez root prístupu používať Docker a jeho pridružené služby.



Čo je Rootless Docker?

V predvolenom nastavení, keď si nainštalujete Docker, démon Docker a jeho nástroje vyžadujú oprávnenia root na hostiteľskom systéme. To môže výrazne viesť k bezpečnostnému riziku, ak je Docker kompromitovaný, čo môže útočníkovi poskytnúť prístup root.



Rootless Docker je funkcia, ktorá nám umožňuje používať a spúšťať démona Docker a súvisiace kontajnery bez oprávnení root.





Ako to funguje

Hoci môže byť náročné ponoriť sa do technického fungovania prostredia dokovacieho zariadenia bez koreňového adresára, nasleduje prehľad na vysokej úrovni, ktorý vysvetľuje, čo robí ukotvovač bez koreňov a ako funguje pod kapotou.

Používateľské menné priestory – Jednou z významných funkcií, ktoré využíva rootless docker, sú užívateľské menné priestory. Táto základná vlastnosť linuxového jadra umožňuje procesom, aby mali v mennom priestore odlišné ID používateľov a skupín v porovnaní s vonkajším. To znamená, že proces môže bežať ako užívateľ root vo svojom mennom priestore, ale mimo neho môže bežať ako bežný užívateľ.



vytváranie sietí – Ďalšou funkciou rootless Docker je sieťovanie. V predvolenom nastavení sa normálny démon docker spolieha na sieťové zásobníky, ako sú iptables a mosty vyžadujúce oprávnenia root.

Docker využíva funkcie, ako je slirp4netns, ktorý poskytuje zásobník TCP/IP v užívateľskom režime v ukotviteľnom zariadení bez koreňového adresára. To umožňuje Dockerovi pristupovať k sieti bez oprávnenia root na hostiteľskom systéme.

Skladovanie – Ďalšou podstatnou súčasťou rootless dockeru je ovládač úložiska. V predvolenom nastavení Docker používa ovládač úložiska overlay2, ktorý, ako môžete hádať, vyžaduje oprávnenia root. Namiesto toho inštancia doku bez root používa ovládač fuse-overlayfs. Tento ovládač je založený na FUSE overlay fs, čo nám umožňuje pripojiť ho bez oprávnení root.

Vyššie uvedené sú niektoré zo základných komponentov inštancie dockeru bez koreňového adresára. Pamätajte, že toto neskúma úplné fungovanie dokovacieho zariadenia bez koreňového adresára. Ak sa chcete dozvedieť viac, pozrite si dokumentáciu.

Rootless Docker – požiadavky

Prejdime od teórie a naučme sa, ako vytvoriť a nakonfigurovať prostredie Docker bez koreňového adresára.

Ak chcete pokračovať v tomto príspevku, uistite sa, že máte nasledujúce:

  1. Systém založený na Linuxe s oprávneniami root.
  2. Prístup k sieti.

Konfigurácia systému pomocou UIDMap

Pred inštaláciou a konfiguráciou Docker musíme nainštalovať a nakonfigurovať systém pomocou pomôcky uidmap.

UIDMap nám umožňuje spravovať UID a GUI mapovania procesov v systéme Linux v obsahu užívateľských menných priestorov. Pamätáte si, keď sme spomenuli, že rootless Docker využíva priestory mien používateľov? Tento nástroj nám umožní špecifikovať mapovania UID a GID a ich zodpovedajúce menné priestory.

Začnite obnovením systémových balíkov takto:

$ sudo apt-get update

Ďalej nainštalujte pomôcku uidmap podľa obrázka:

$ sudo apt-get nainštalovať uidmap -a

Inštalácia Rootless Docker

Ďalším krokom je spracovanie a inštalácia rootless Docker. Môžeme to urobiť podľa jednoduchých krokov uvedených nižšie:

Začnite stiahnutím inštalačného skriptu rootless docker z odkazu uvedeného nižšie:

https://get.docker.com/rootless

Môžete použiť cURL alebo WGET.

$ zvlniť -sSL https: // get.docker.com / bez koreňov | sh

Upozorňujeme, že vyššie uvedený príkaz nemôžete spustiť ako používateľ root.

Po dokončení inštalácie upravte súbor .bashrc pomocou svojho obľúbeného textového editora:

$ nano .bashrc

Potom do konfiguračného súboru bashrc pridajte nasledujúce položky:

export XDG_RUNTIME_DIR = / Domov / ubuntu / .docker / behať

export PATH = / Domov / ubuntu / kôš: $PATH

export DOCKER_HOST =unix: /// Domov / ubuntu / .docker / behať / docker.sock

Uistite sa, že ste zmenili používateľa z „ubuntu“ na používateľa, ktorému chcete nainštalovať Docker. Výstup skriptu vám poskytne obsah na pridanie do súboru .bashrc.

Uložte zmeny a zatvorte editor.

V ďalšom kroku musíme spustiť démona Docker bez koreňového adresára. Môžeme to urobiť pomocou systemctl, ako je uvedené v príkaze nižšie:

systemctl --ubuntu spustiť docker

Po spustení môžete použiť príkazy Docker na spustenie a konfiguráciu kontajnerov Docker.

Záver

V tomto návode sme sa naučili funkčnosť rootless Docker, ako funguje a ako ho môžeme nakonfigurovať v systéme Linux. Neváhajte a pozrite si dokumentáciu rootless docker, kde sa dozviete viac.