GNU/Linux >> Znalost Linux >  >> Linux

Spusťte kontejnery na Linuxu bez sudo v Podman

Kontejnery jsou důležitou součástí moderní výpočetní techniky a jak se infrastruktura kolem kontejnerů vyvíjí, začaly se objevovat nové a lepší nástroje. Dříve bylo možné provozovat kontejnery pouze s LXC, a pak si Docker získal popularitu a věci začaly být složitější. Nakonec jsme získali systém správy kontejnerů, který jsme si všichni zasloužili, s Podmanem, bezdémonovým kontejnerovým enginem, díky kterému se kontejnery a pody snadno sestavují, spouštějí a spravují.

Kontejnery jsou přímo propojeny se schopnostmi linuxového jádra, jako jsou cgroups a jmenné prostory, a vytvářejí v těchto jmenných prostorech spoustu nových procesů. Stručně řečeno, spuštění kontejneru znamená doslova spuštění systému Linux uvnitř linuxový systém. Z pohledu operačního systému to vypadá jako administrativní a privilegovaná činnost. Normální uživatelé obvykle nedostanou volnou vládu nad systémovými prostředky, jak kontejnery vyžadují, takže ve výchozím nastavení root nebo sudo Ke spuštění Podman jsou vyžadována oprávnění. To je však pouze výchozí nastavení a v žádném případě to není jediné dostupné nebo zamýšlené nastavení. Tento článek ukazuje, jak nakonfigurovat váš systém Linux tak, aby běžný uživatel mohl spustit Podman bez použití sudo ("bez kořenů").

ID uživatelů jmenného prostoru

Linuxové kontejnery

  • Co jsou kontejnery systému Linux?
  • Úvod do terminologie kontejnerů
  • Stáhnout:Containers Primer
  • Operátoři Kubernetes:Automatizace platformy pro orchestraci kontejnerů
  • eKniha:Vzory Kubernetes pro navrhování cloudových nativních aplikací
  • Co je Kubernetes?

Jmenný prostor jádra je v podstatě imaginární konstrukce, která Linuxu pomáhá sledovat, jaké procesy k sobě patří. Je to červená fronta linuxu. Ve skutečnosti není rozdíl mezi procesy v jedné a druhé frontě, ale je užitečné je od sebe oddělit. Jejich oddělení je klíčem k prohlášení jedné skupiny procesů za „kontejner“ a druhé skupiny procesů za váš operační systém.

Linux sleduje, který uživatel nebo skupina vlastní jednotlivé procesy, podle ID uživatele (UID) a ID skupiny (GID). Normálně má uživatel přístup k tisícům podřízených UID, které lze přiřadit podřízeným procesům ve jmenném prostoru. Protože Podman provozuje celý podřízený operační systém přiřazený uživateli, který spustil kontejner, potřebujete mnohem více, než je výchozí přidělení subuids a subgids.

Pomocí usermod můžete uživateli udělit více subuid a subgid příkaz. Například pro udělení více subuid a subgid uživateli tux , zvolte vhodně vysoké UID, ke kterému není přiřazen žádný uživatel (např. 200 000) a zvyšte jej o několik tisíc:

$ sudo usermod \
--add-subuids 200000-265536 \
--add-subgids 200000-265536 \
tux

Přístup do jmenného prostoru

Existují také omezení jmenných prostorů. Toto je obvykle nastaveno velmi vysoko, ale uživatelské přidělení jmenných prostorů můžete ověřit pomocí systctl , nástroj pro parametry jádra:

$ sysctl --all --pattern user_namespaces
user.max_user_namespaces = 28633

To je spousta jmenných prostorů a je to pravděpodobně to, co vaše distribuce nastavila ve výchozím nastavení. Pokud vaše distribuce tuto vlastnost nemá nebo je nastavena velmi nízko, můžete ji vytvořit zadáním tohoto textu do souboru /etc/sysctl.d/userns.conf :

user.max_user_namespaces=28633

Načtěte toto nastavení:

$ sudo sysctl -p /etc/sysctl.d/userns.conf

Spusťte kontejner bez root

Jakmile budete mít konfigurační sadu, restartujte počítač, abyste se ujistili, že změny vašich uživatelských parametrů a parametrů jádra jsou načteny a aktivní.

Po restartu zkuste spustit bitovou kopii kontejneru:

$ podman run -it busybox echo "hello"
hello

Kontejnery jako příkazy

Kontejnery mohou působit tajemně, pokud jste pro ně noví, ale ve skutečnosti se neliší od vašeho stávajícího systému Linux. Jsou to doslova procesy běžící ve vašem systému bez nákladů nebo bariér emulovaného prostředí nebo virtuálního stroje. Vše, co odděluje kontejner od vašeho OS, jsou jmenné prostory jádra, takže jsou to ve skutečnosti jen nativní procesy s různými štítky. Podman to dělá zřetelnější než kdy jindy, a jakmile nakonfigurujete Podman jako příkaz bez rootu, kontejnery budou vypadat spíše jako příkazy než jako virtuální prostředí. Podman dělá nádoby a kapsle snadným, tak to vyzkoušejte.


Linux
  1. Jak vytvořit uživatele Sudo v Rocky Linux 8

  2. Příklady příkazů sudo v Linuxu

  3. Windows UAC vs. Linux sudo

  1. Spusťte virtuální počítač Linux v Podman

  2. Spusťte ifconfig bez sudo

  3. Spusťte příkaz cd jako superuživatel v Linuxu

  1. Použití sudo k delegování oprávnění v Linuxu

  2. Linux – Izolujte proces bez kontejnerů

  3. Docker-compose:nelze sestavit BEZ sudo, ale mohu spouštět kontejnery bez něj