Tutoriel Linux

Podman na Linuxu: spouštění kontejneru bez udělení práv root celé mašině

Débutant4 min de lecture

Chcete spustit testovací službu, webový nástroj nebo obraz Linuxu, aniž byste přidali svůj účet do skupiny docker. Podman umí spouštět kontejnery ze sessions uživatele, s úložištěm a procesy přiřazenými k vašemu UID. Je to praktické pro čisté spuštění, ale neosvobozuje vás to od kontroly obrazu, objemů ani publikovaných portů.

Tux admin spouští izolovaný kontejner vedle serveru Linux s visacím zámkem a kontejnery
Podman může spouštět kontejnery ze sessions uživatele Linuxu.

Nainstalujte Podman a zkontrolujte rootless režim

Na Debianu nebo Ubuntu nainstalujte balíček z repozitářů vaší distribuce. Fedora ho také zahrnuje do svých běžných repozitářů.

sudo apt update
sudo apt install podman
podman --version
podman info --debug

Pak spusťte podman info --debug se svým obvyklým účtem, bez sudo. Výstup by měl ukazovat rootless kontext. Podman pak používá váš uživatelský prostor a rozsahy definované v /etc/subuid a /etc/subgid pro mapování identifikátorů kontejneru.

Zpráva o newuidmap, subuid nebo subgid signalizuje nedokončenou přípravu. Neobejděte chybu přepnutím přímo na root. Nejprve zkontrolujte svůj vstup pomocí následujícího příkazu a pak aplikujte metodu zdokumentovanou vaší distribucí, pokud chybí.

grep "^$USER:" /etc/subuid /etc/subgid

Spusťte první kontejner bez oprávnění

Začněte s malým obrazem a příkazem, který se sám zastaví. Tímto způsobem zkontrolujete stažení obrazu, místní úložiště a spuštění bez otevření služby na síti.

podman run --rm docker.io/library/alpine:latest echo "Podman funguje"

Možnost --rm odstraní kontejner při jeho ukončení. Obraz zůstává v mezipaměti. Chcete-li vidět obrazy a kontejnery, včetně těch, které jsou zastavené, použijte:

podman images
podman ps -a

Pro službu, která musí zůstat dostupná, jí dejte výstižný název. Tento příklad spouští nginx na pozadí a publikuje port 8080 pouze na místním počítači.

podman run -d --name web-test 
  -p 127.0.0.1:8080:80 
  docker.io/library/nginx:alpine

podman ps
curl -I http://127.0.0.1:8080

Prefix 127.0.0.1: zabraňuje vystavení tohoto testu na všech síťových rozhraních. Pokud napíšete pouze -p 8080:80, zkontrolujte výsledek pomocí podman port web-test a s ss -ltnp. Na serveru otevírejte veřejný port pouze po výběru firewallu a adresy, na které se naslouchá.

Zkontrolujte stav, logy a správně zastavte službu

Spuštěný kontejner nedokazuje, že aplikace odpovídá. Zkontrolujte jeho stav, poslední logy a jeho síťové mapování před tím, než upravíte obraz nebo konfiguraci.

podman inspect web-test --format '{{.State.Status}}'
podman logs --tail 50 web-test
podman port web-test
podman stop web-test
podman rm web-test

podman inspect zobrazuje skutečně aplikované parametry. Je to spolehlivější než opětovné přečtení příkazu zkopírovaného ve vaší historii. Také si uchovávejte název obrazu a jeho tag ve své dokumentaci. Tag latest může směřovat na jinou verzi při dalším stažení. Pro trvalé použití zvolte konkrétní verzi a naplánujte její aktualizaci.

Omezení rootless a pasti, kterým se vyhnout

  • Rootless kontejner omezuje dopad na hostitele, ale nespolehlivý obraz, tajemství injektovaná jako proměnné nebo objem pro zápis zůstávají riziky.
  • Vyhněte se --privileged, --network host a montážím citlivých adresářů. Tyto možnosti značně snižují izolaci.
  • Připojte data jako pouze pro čtení, když je aplikace nemusí měnit, například -v "$HOME/site:/usr/share/nginx/html:ro".
  • Porty nižší než 1024, některá zařízení a některá síťová omezení vyžadují další konfiguraci. Nepřidávejte privilegium automaticky.
  • Podman přijímá většinu syntaxe Dockeru, ale služby, sítě a úložiště se nemusí vždy chovat stejným způsobem. Otestujte projekt v izolovaném adresáři před migrací.

Skupina docker často poskytuje velmi široký přístup k démonu Docker. Podman rootless se vyhýbá této praxi pro kontejnery spuštěné z vašeho účtu. Chcete-li porovnat instalaci Docker motoru s tímto výběrem práv, můžete také přečíst naši příručku o Docker na Debiane.

Oficiální dokumentace Podman podrobně popisuje fungování rootless a příručka podman run uvádí možnosti sítě, objemů a identifikátorů. Začněte s jednoduchým obrazem, místním portem a objemem pouze pro čtení. Rychle zjistíte, zda je Podman vhodný pro vaše použití, než přesunete užitečnou službu.

sudo apt update && sudo apt upgrade