- 1 1. Úvod
- 2 2. Co je Podman?
- 3 3. Instalace Podmanu na Ubuntu
- 4 4. Základy Dockerfile a použití s Podmanem
- 5 5. Praktický příklad: Vytvoření kontejneru založeného na Ubuntu
- 6 6. Užitečné funkce a tipy pro Podman
- 7 7. Průvodce migrací: z Dockeru na Podman
- 8 8. Často kladené otázky (FAQ)
- 8.1 Q1. Jaký je hlavní rozdíl mezi Podman a Docker?
- 8.2 Q2. Jaký je rozdíl mezi Dockerfile a Containerfile?
- 8.3 Q3. Lze Docker Compose použít s Podmanem?
- 8.4 Q4. Běží Podman stabilně na Ubuntu?
- 8.5 Q5. Existují omezení při používání režimu bez rootu?
- 8.6 Q6. Může Podman stahovat stejné obrazy jako Docker Hub?
- 8.7 Q7. Je Podman vhodný pro produkční prostředí?
1. Úvod
Evoluce technologie kontejnerů a proč je důležitá
V posledních letech se význam technologie kontejnerů v vývoji aplikací a provozu rychle zvyšuje. Zejména schopnost zajistit reprodukovatelnost vyrovnáním vývojového a produkčního prostředí získala silnou podporu mezi inženýry.
Docker byl dlouho dominantním řešením v tomto prostoru, ale v posledních letech se Podman objevil jako silná alternativa. Podman nabízí téměř identické CLI (Command Line Interface) jako Docker, přičemž poskytuje klíčové výhody, jako je architektura bez démona, lehké provozování a spuštění bez root práv bez nutnosti root privilegií.
Proč „Podman + Dockerfile + Ubuntu“?
Tento článek vysvětluje moderní operace s kontejnery na Linuxu kombinací tří nezbytných prvků: Podman, Dockerfile a Ubuntu.
- Ubuntu je široce používaná distribuce Linuxu vhodná pro začátečníky i pokročilé uživatele,
- Dockerfile slouží jako plán pro budování obrazů kontejnerů,
- A Podman je nástroj další generace, který umožňuje flexibilnější a bezpečnější správu kontejnerů.
S rostoucím povědomím o bezpečnosti se používání Podman s Dockerfile na Ubuntu stalo populární volbou pro individuální vývojáře i podnikové prostředí.
Cíl a cílová skupina
Cílem tohoto článku je podrobně vysvětlit, jak budovat Dockerfile a vytvářet praktické kontejnery pomocí Podman na Ubuntu.
Tento článek je určen pro čtenáře jako:
- Ti s zkušenostmi s Dockerem, kteří mají zájem o Podman
- Uživatelé Ubuntu, kteří chtějí bezpečně spravovat kontejnery
- Inženýři plánující přijmout technologii kontejnerů ve své práci
- Začátečníci, kteří chtějí vyzkoušet psaní Dockerfile a budování obrazů s Podmanem
Kromě základního použití tento článek také pokrývá tipy pro řešení problémů, klíčové rozdíly od Dockeru a strategie migrace.
2. Co je Podman?
Základní přehled Podmanu
Podman (Pod Manager) je nástroj pro správu kontejnerů další generace vyvinutý komunitou vedenou Red Hat. Stejně jako Docker může budovat, spouštět a spravovat kontejnery kompatibilní s OCI (Open Container Initiative), ale jeho designová filozofie a architektura se výrazně liší.
Nejvýraznější funkcí je, že Podman nevyžaduje démona. To umožňuje lehké a bezpečné provozování. Podman také podporuje rootless mód, který umožňuje běžným uživatelům spravovat kontejnery bez eskalace privilegií. Jeho kompatibilita CLI s Dockerem je velmi vysoká, což usnadňuje migraci.
Klíčové funkce Podmanu
Níže jsou uvedeny některé hlavní funkce Podmanu:
Architektura bez démona
Podman se nespoléhá na proces démona na pozadí pro správu kontejnerů. To umožňuje efektivnější využití zdrojů bez zbytečných služeb na pozadí.
Podpora rootless (unprivileged user)
Podman umožňuje uživatelům bez administrátorských práv spouštět a spravovat kontejnery. To výrazně zlepšuje bezpečnost v multiuživatelských nebo serverových prostředích a významně snižuje bezpečnostní rizika.
CLI kompatibilní s Dockerem
Podman používá téměř stejnou strukturu příkazů jako Docker. Například následující příkazy Docker fungují v Podmanu téměř identicky:
podman build -t myimage .
podman run -it myimage bash
V důsledku toho uživatelé Dockeru mohou migrovat s minimálním třením.
Funkce Pod
Podman začleňuje koncept „Pod“ z Kubernetes, který umožňuje spravovat více kontejnerů jako jednu logickou jednotku. To činí Podman vysoce kompatibilním s Kubernetes a umožňuje plynulé přechody z lokálního vývoje do cloudových prostředí.
Kompatibilita s Ubuntu
While Podman je široce přijímán ve Fedora a distribucích založených na RHEL, také běží stabilně na Ubuntu. Lze jej nainstalovat z oficiálních repozitářů s relativně jednoduchou konfigurací. Od Ubuntu 20.04 LTS se podpora balíčků výrazně zlepšila, což snižuje bariéru vstupu.
3. Instalace Podmanu na Ubuntu
Před zahájením: Předpoklady
Před instalací Podmanu na Ubuntu nejprve zkontrolujte verzi Ubuntu. Podman je oficiálně doporučen pro Ubuntu 20.04 LTS nebo novější. Na starších verzích nemusí být požadované balíčky dostupné v oficiálních repozitářích.
Verzi Ubuntu můžete zkontrolovat pomocí následujícího příkazu:
lsb_release -a
Instalace Podmanu vyžaduje sudo oprávnění. I když plánujete používat Podman v rootless módu, během instalace jsou stále vyžadována oprávnění administrátora.
Instalace Podmanu z oficiálního repozitáře Ubuntu
Na nedávných verzích Ubuntu, jako jsou 20.04 nebo 22.04, lze Podman snadno nainstalovat pomocí APT.
sudo apt update
sudo apt install -y podman
Po instalaci ověřte, že byl Podman správně nainstalován kontrolou verze:
podman --version
Instalace nejnovější verze pomocí oficiálního PPA
Verze Podmanu zahrnutá v výchozím repozitáři Ubuntu je často mírně zastaralá. Pokud chcete používat nejnovější funkce, můžete Podman nainstalovat z oficiálního PPA.
. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman
Tato metoda vám umožní používat nejnovější verze Podmanu ekvivalentní těm na systémech Red Hat a Fedora.
Základní test funkčnosti Podmanu
Po instalaci proveďte jednoduchý test k potvrzení, že Podman funguje správně:
podman info
Tento příkaz zobrazí konfiguraci Podmanu, verzi a podporované funkce, jako je rootless mód.
Můžete také otestovat spuštění kontejneru spuštěním oficiálního obrazu Alpine Linux:
podman run --rm -it alpine sh
Pokud se shell úspěšně spustí, Podman funguje správně.
4. Základy Dockerfile a použití s Podmanem
Co je Dockerfile?
Dockerfile je plán používaný k sestavení obrazů kontejnerů. Je to textový soubor, který definuje instrukce, jako je základní obraz k použití, které balíčky instalovat a které soubory kopírovat.
Na základě tohoto souboru mohou nástroje pro kontejnery, jako Podman a Docker, automaticky sestavit konzistentní prostředí.
Běžné instrukce Dockerfile zahrnují:
FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]
Tento příklad instaluje balíčky na základním obrazu Ubuntu, kopíruje skript a definuje výchozí příkaz k spuštění.
Použití Dockerfile s Podmanem
Podman může sestavovat obrazy kontejnerů z Dockerfile stejným způsobem jako Docker.
1. Příprava adresáře projektu
Vytvořte následující strukturu adresáře:
project/
├── Dockerfile
└── app.sh
Soubor app.sh může obsahovat jednoduchý skript:
#!/bin/bash
echo "Hello from Podman container!"
Udělejte skript spustitelným:
chmod +x app.sh
2. Sestavení obrazu s Podmanem
Spusťte následující příkaz v adresáři obsahujícím Dockerfile:
podman build -t mypodmanapp .
Toto vytvoří obraz kontejneru s názvem mypodmanapp.
3. Ověření sestaveného obrazu
Můžete vypsat dostupné obrazy pomocí:
podman images
4. Spuštění kontejneru
Spusťte kontejner pomocí sestaveného obrazu:
podman run --rm mypodmanapp
.Pokud je vše správně nakonfigurováno, bude zobrazen výstup Hello from Podman container!.
Dockerfile vs Containerfile
V Podmanu mohou soubory používající syntaxi Dockerfile být také nazývány Containerfile. Toto pojmenování odráží snahu o terminologii nezávislou na Dockeru.
Mezi Dockerfile a Containerfile neexistuje žádný funkční rozdíl. Oba jsou v Podmanu plně podporovány.
podman build -f Containerfile -t myimage .
Název souboru můžete zadat explicitně pomocí volby -f.
5. Praktický příklad: Vytvoření kontejneru založeného na Ubuntu
Vytvoření Dockerfile založeného na Ubuntu
Níže projdeme praktickým, krok‑za‑krokem příkladem vytvoření Dockerfile založeného na Ubuntu a sestavení a spuštění kontejnerového obrazu pomocí Podman.
Nejprve vytvořte následující jednoduchý Dockerfile:
FROM ubuntu:22.04
RUN apt update && \
apt install -y curl && \
apt clean
COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh
CMD ["/usr/local/bin/hello.sh"]
Tento Dockerfile provádí následující kroky:
- Používá oficiální obraz Ubuntu 22.04 jako základ
- Instaluje balíček
curl - Zkopíruje
hello.shz hostitele do kontejneru - Nastaví
hello.shjako výchozí spouštěcí skript
Dále vytvořte jednoduchý shell skript pojmenovaný hello.sh:
#!/bin/bash
echo "Hello, this output is from a Podman container!"
Přidejte spustitelná oprávnění ke skriptu:
chmod +x hello.sh
Sestavení obrazu pomocí Podman
Jakmile jsou soubory připraveny, sestavte obraz pomocí následujícího příkazu:
podman build -t ubuntu-hello .
Volba -t ubuntu-hello přiřadí obrazu značku a tečka na konci určuje adresář obsahující Dockerfile.
Pokud se sestavení úspěšně dokončí, bude obraz uložen lokálně.
podman images
Tento příkaz můžete použít k ověření, že byl obraz vytvořen.
Spuštění a ověření sestaveného obrazu
Spusťte kontejner z nově vytvořeného obrazu pomocí následujícího příkazu:
podman run --rm ubuntu-hello
Příklad výstupu:
Hello, this output is from a Podman container!
Volba --rm automaticky po dokončení odstraní kontejner, což je ideální pro testování.
Volitelné: Interaktivní spuštění kontejneru
Pokud chcete s kontejnerem pracovat přímo, můžete jej spustit s volbou -it a spustit Bash:
podman run -it ubuntu-hello bash
To vám umožní použít kontejner jako lehké vývojové prostředí založené na Ubuntu.
6. Užitečné funkce a tipy pro Podman
Silné stránky Podmanu: Flexibilita a bezpečnost
Při zachování kompatibility s Dockerem nabízí Podman funkce, které umožňují flexibilnější a bezpečnější operace s kontejnery. V této sekci představíme praktické funkce a tipy, které jsou zvláště užitečné v každodenní práci.
Bezpečný provoz v režimu rootless
Jednou z nejvýkonnějších funkcí Podmanu je režim rootless, který umožňuje běžným uživatelům spouštět, zastavovat a spravovat kontejnery bez administrátorských oprávnění.
Kontejnery můžete spouštět bez sudo, jak je ukázáno níže:
podman run -it ubuntu bash
Protože je tato operace omezena na domovský adresář uživatele, dopad na celý systém je minimalizován. Režim rootless je obzvláště užitečný na sdílených serverech a ve vývojových prostředích.
Automatické spouštění pomocí integrace se systemd
Podman podporuje nativní integraci se systemd, což umožňuje kontejnerům spouštět se automaticky jako služby Linuxu.
Jednotku systemd pro kontejner můžete vygenerovat pomocí následujícího příkazu:
podman generate systemd --name mycontainer --files --restart-policy=always
Tento příkaz vytvoří soubory jednotek pod ~/.config/systemd/user/. Po vygenerování je můžete povolit a spustit takto:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
answer.Tato konfigurace zajišťuje, že kontejnery se automaticky spustí při startu systému.
Správa více kontejnerů pomocí podman-compose
Kromě správy jednotlivých kontejnerů Podman podporuje orchestraci více kontejnerů. Pomocí podman-compose můžete dosáhnout funkčnosti podobné Docker Compose.
Nainstalujte podman-compose pomocí pip:
pip install podman-compose
Protože je z velké části kompatibilní se soubory docker-compose.yml, můžete často znovu použít existující konfigurace.
Spuštění služeb je tak jednoduché, jako spustit:
podman-compose up -d
To vám umožní okamžitě reprodukovat kompletní vývojová prostředí, i když používáte Podman.
Další užitečné příkazy a tipy
Vyčištění nepoužívaných obrazů a kontejnerů
podman system prune -a
Tento příkaz odstraňuje nepoužívané kontejnery, obrazy a dočasné soubory, což pomáhá udržet úložiště čisté.
Povolení doplňování příkazů (bash/zsh)
Můžete nainstalovat podporu doplňování příkazů pomocí následujícího balíčku:
sudo apt install podman-docker
To umožňuje doplňování příkazů podobné Dockeru pro Podman, což zvyšuje produktivitu.
7. Průvodce migrací: z Dockeru na Podman
Proč získává migrace na Podman pozornost
Docker byl dlouho synonymem pro kontejnerovou technologii, ale v posledních letech se prosazuje posun k Podmanu jako lehčí a bezpečnější alternativě. Zejména Red Hat Enterprise Linux (RHEL) a Fedora snížily podporu Dockeru a přijaly Podman jako výchozí kontejnerový engine, což přimělo mnoho organizací uvažovat o migraci.
Tato sekce vysvětluje praktické kroky a důležité úvahy pro plynulou migraci z Dockeru na Podman.
Kompatibilita příkazů mezi Dockerem a Podmanem
Podman zachovává vysokou úroveň CLI kompatibility s Dockerem, což umožňuje většinu příkazů přímo nahradit bez úprav.
| Docker | Podman |
|---|---|
docker build -t myapp . | podman build -t myapp . |
docker run -it myapp | podman run -it myapp |
docker images | podman images |
docker ps | podman ps |
To umožňuje přepnout na Podman bez změny vašeho pracovního postupu, což je jedna z jeho největších výhod.
Zajištění úplné kompatibility pomocí podman-docker
Pokud existující skripty, CI/CD pipeline nebo nástroje předpokládají přítomnost příkazu docker, můžete nainstalovat balíček podman-docker, aby Podman fungoval jako přímá náhrada.
sudo apt install podman-docker
Po instalaci se příkaz docker stane symbolickým odkazem na Podman:
which docker
# → /usr/bin/docker → symbolic link to podman
To umožňuje existujícím skriptům založeným na Dockeru běžet na Podmanu bez úprav.
Nahrazení docker-compose pomocí podman-compose
Pro projekty, které používají Docker Compose k definování více kontejnerových prostředí, podman-compose poskytuje kompatibilní alternativu.
Ačkoliv je kompatibilita obecně vysoká, uvědomte si následující omezení:
- Některé možnosti Compose (např.
depends_on) mohou být nepodporované nebo se chovat odlišně - Mohou existovat rozdíly v logování událostí a chování health checků
Pro typické konfigurace, jako je kombinace webového serveru a databáze, je migrace obvykle přímočará.
Migrace obrazů a svazků
Docker obrazy uložené lokálně nelze přímo přistupovat z Podmanu. Musíte je buď znovu stáhnout, nebo exportovat a importovat.
Možnost 1: Znovu stáhnout obrazy pomocí Podmanu
podman pull ubuntu:22.04
Možnost 2: Export z Dockeru a import do Podmanu
# Export from Docker
docker save myimage > myimage.tar
# Import into Podman
podman load < myimage.tar
To umožňuje z Dockeru vytvořené obrazy znovu použít v Podmanu.
Další úvahy o migraci
- Rozdíly v rootless provozu : Docker obvykle předpokládá použití rootu, zatímco Podman je navržen pro rootless provoz
- Architektura démona : Podman je bez démona, což mění způsob správy procesů na pozadí
- Umístění logů a dat se liší a měly by být během migrace přezkoumány.
8. Často kladené otázky (FAQ)
Q1. Jaký je hlavní rozdíl mezi Podman a Docker?
A1. Nejvýznamnějším rozdílem je, že Podman funguje bez démona. To umožňuje lehčí a bezpečnější provoz. Podman také podporuje režim bez rootu (rootless mode), což umožňuje správu kontejnerů bez zvýšení oprávnění. Kompatibilita CLI s Dockerem je velmi vysoká.
Q2. Jaký je rozdíl mezi Dockerfile a Containerfile?
A2. Neexistuje žádný funkční rozdíl. Oba soubory popisují instrukce pro sestavení kontejneru pomocí identické syntaxe.
Název Containerfile je upřednostňován v projektech kompatibilních s OCI, aby se vyhnulo terminologii specifické pro Docker. V praxi Dockerfile funguje s Podmanem naprosto bez problémů.
Q3. Lze Docker Compose použít s Podmanem?
A3. Docker Compose není přímo podporován, ale můžete jako alternativu použít podman-compose. Ten interpretuje soubory docker-compose.yml v prostředí Podman.
Některé možnosti, jako depends_on, jsou omezené, takže pro složitější nastavení se doporučuje testování.
Q4. Běží Podman stabilně na Ubuntu?
A4. Ano. Podman běží stabilně na Ubuntu 20.04 LTS a novějších. Je dostupný v oficiálních repozitářích Ubuntu a lze jej snadno nainstalovat pomocí apt. Pro novější verze je také možnost použít PPA.
Q5. Existují omezení při používání režimu bez rootu?
A5. Režim bez rootu omezuje některé privilegované operace a navazování na porty pod 1024. Tato omezení lze však často obejít pomocí přesměrování portů. Pro většinu případů použití je režim bez rootu naprosto praktický.
Q6. Může Podman stahovat stejné obrazy jako Docker Hub?
A6. Ano. Podman může standardně stahovat obrazy z Docker Hub. V některých prostředích může být nutné explicitně zadat registr a jmenný prostor:
podman pull docker.io/library/ubuntu
Podman také podporuje další registry, jako jsou Quay.io a GitHub Container Registry.
Q7. Je Podman vhodný pro produkční prostředí?
A7. Ano. Podman obsahuje funkce potřebné pro produkční nasazení, jako jsou koncepty podů kompatibilní s Kubernetes a integrace se systemd. V prostředích citlivých na bezpečnost může být Podman lepší volbou než Docker.
Podman je již výchozím kontejnerovým enginem v RHEL a Fedora a má široké přijetí v produkci.




