Rootless Docker

Rootless Docker



Docker je jedním z nejvýkonnějších a nejvlivnějších nástrojů pro vývoj a nasazení moderních aplikací. Jako vývojáři jej používáme na našich místních počítačích k rychlému nastavení a konfiguraci prostředí, která vyhovují potřebám našich aplikací během několika sekund.

Při práci v Dockeru se však můžeme setkat s případy, kdy potřebujeme vytvořit a používat prostředky Dockeru, ale nemáme přístup root.

Nebo možná chcete povolit více uživatelům v daném systému přístup a používání Dockeru, aniž byste všem uživatelům udělili oprávnění root.







V tomto tutoriálu se dozvíme o rootless Dockeru, co to znamená, jak funguje a jak jej můžeme použít, abychom uživatelům bez rootovského přístupu umožnili používat Docker a jeho přidružené služby.



Co je Rootless Docker?

Ve výchozím nastavení, jakmile nainstalujete Docker, démon Docker a jeho nástroje vyžadují oprávnění root na hostitelském systému. To může významně vést k bezpečnostnímu riziku, pokud je Docker kompromitován, což může útočníkovi poskytnout přístup root.



Rootless Docker je funkce, která nám umožňuje používat a spouštět démona Docker a související kontejnery bez oprávnění root.





Jak to funguje

I když může být náročné ponořit se do technického fungování prostředí bezkořenového dockeru, následuje přehled na vysoké úrovni, který vysvětluje, co dokovací stanice bez root dělá a jak funguje pod kapotou.

Uživatelské jmenné prostory – Jednou z významných funkcí, které rootless docker využívá, jsou uživatelské jmenné prostory. Tato základní vlastnost linuxového jádra umožňuje procesům mít různá ID uživatelů a skupin uvnitř jmenného prostoru ve srovnání s vnějším. To znamená, že proces může běžet jako uživatel root ve svém jmenném prostoru, ale mimo něj běží jako běžný uživatel.



vytváření sítí – Další funkcí rootless Dockeru je síťování. Ve výchozím nastavení se normální démon docker spoléhá na síťové zásobníky, jako jsou iptables a mosty vyžadující oprávnění root.

Docker využívá funkce, jako je slirp4netns, který poskytuje zásobník TCP/IP v uživatelském režimu v ukotvitelném panelu bez rootu. To umožňuje Dockeru přistupovat k síti bez oprávnění root v hostitelském systému.

Úložný prostor – Další nezbytnou součástí rootless dockeru je ovladač úložiště. Ve výchozím nastavení používá Docker ovladač úložiště overlay2, který, jak můžete hádat, vyžaduje oprávnění root. Místo toho instance dockeru bez root používá ovladač fuse-overlayfs. Tento ovladač je založen na FUSE overlay fs, což nám umožňuje připojit jej bez oprávnění root.

Výše uvedené jsou některé ze základních součástí instance dockeru bez root. Pamatujte, že toto nezkoumá kompletní fungování dockeru bez rootu. Zvažte dokumentaci a dozvíte se více.

Rootless Docker – požadavky

Přejdeme od teorie a naučíme se, jak vytvořit a nakonfigurovat prostředí Docker bez rootu.

Chcete-li pokračovat v tomto příspěvku, ujistěte se, že máte následující:

  1. Systém založený na Linuxu s oprávněními root.
  2. Přístup k síti.

Konfigurace systému pomocí UIDMap

Před instalací a konfigurací Dockeru musíme nainstalovat a nakonfigurovat systém pomocí utility uidmap.

UIDMap nám umožňuje spravovat UID a GUI mapování procesů v systému Linux v obsahu uživatelských jmenných prostorů. Pamatujete si, když jsme zmínili, že rootless Docker využívá prostor uživatelských jmen? Tento nástroj nám umožní specifikovat mapování UID a GID a jejich odpovídající jmenné prostory.

Začněte obnovením systémových balíčků takto:

$ sudo aktualizace apt-get

Dále nainstalujte obslužný program uidmap podle obrázku:

$ sudo instalace apt-get uidmap -a

Instalace Rootless Docker

Dalším krokem je zpracování a instalace rootless Dockeru. Můžeme to udělat pomocí jednoduchých kroků uvedených níže:

Začněte stažením instalačního skriptu rootless docker z níže uvedeného odkazu:

https://get.docker.com/rootless

Můžete použít cURL nebo WGET.

$ kučera -sSL https: // get.docker.com / bez kořenů | sh

Všimněte si, že výše uvedený příkaz nemůžete spustit jako uživatel root.

Po dokončení instalace upravte svůj soubor .bashrc pomocí svého oblíbeného textového editoru:

$ nano .bashrc

Dále přidejte do konfiguračního souboru bashrc následující položky:

vývozní XDG_RUNTIME_DIR = / Domov / ubuntu / .přístavní dělník / běh

vývozní CESTA = / Domov / ubuntu / zásobník: $PATH

vývozní DOCKER_HOST =unix: /// Domov / ubuntu / .přístavní dělník / běh / docker.sock

Ujistěte se, že jste změnili uživatele z „ubuntu“ na uživatele, kterému chcete nainstalovat Docker. Výstup skriptu vám poskytne obsah, který chcete přidat do souboru .bashrc.

Uložte změny a zavřete editor.

V dalším kroku musíme spustit démona Docker bez rootu. Můžeme to udělat pomocí systemctl, jak je znázorněno v příkazu níže:

systemctl --ubuntu spustit docker

Po spuštění můžete pomocí příkazů Dockeru spustit a nakonfigurovat kontejnery Docker.

Závěr

V tomto tutoriálu jsme se naučili funkcionalitu rootless Dockeru, jak funguje a jak jej můžeme nakonfigurovat v systému Linux. Chcete-li se dozvědět více, podívejte se do dokumentace dokovacího zařízení rootless.