- 1 1. Úvod
- 2 2. Co je Podman?
- 3 3. Instalace Podman na Ubuntu
- 4 4. Použití Dockerfile s Podman
- 5 5. Praktický příklad: Vytvoření kontejneru založeného na Ubuntu
- 6 6. Funkce a tipy pro Podman
- 7 7. Migr Dockeru na Podman
- 8 8. Často kladené otázky (FAQ)
- 8.1 Q1. Jaké jsou hlavní rozdíly mezi Podman a Dockerem?
- 8.2 Q2. Existuje rozdíl mezi Dockerfile a Containerfile?
- 8.3 Q3. Mohu použít Docker Compose soubory s Podmanem?
- 8.4 Q4. Je Podman stabilní na Ubuntu?
- 8.5 Q5. Existují omezení přístupu v rootless režimu?
- 8.6 Q6. Může Podman stahovat obrazy z Docker Hubu?
- 8.7 Q7. Je Podman vhodný pro produkční nasazení?
1. Úvod
Evoluce a rostoucí význam technologie kontejnerů
V posledních letech technologie kontejnerů rychle získala na významu v oblasti vývoje aplikací a provozních operací. Zejména schopnost sladit vývojové a produkční prostředí zajišťuje reprodukovatelnost operací, což je klíčová výhoda, která si získala silnou podporu mezi inženýry.
I když Docker zůstává nejpůsobivější platformou pro kontejnery, Podman přitahuje stále větší pozornost jako moderní alternativa. Podman nabízí téměř identické rozhraní příkazového řádku (CLI) jako Docker, ale vyniká svou daemonless a lehkou architekturou a podporou rootless (ne-root) provozu.
Proč „Podman + Dockerfile + Ubuntu“?
V tomto článku vysvětlíme, jak kombinovat Podman, Dockerfile a Ubuntu pro moderní workflowy kontejnerů na Linuxu.
- Ubuntu je oblíbená distribuce Linuxu používaná od začátečníků po pokročilé uživatele,
- Dockerfile slouží jako návrh pro budování obrazů kontejnerů,
- a Podman je nástroj další generace navržený pro flexibilní a bezpečné řízení těchto obrazů.
S rostoucím povědomím o bezpečnosti se přístup použití Podmanu s Dockerfilem na Ubuntu stále častěji adoptuje jak jednotlivými vývojáři, tak týmami v podnicích.
Cíl a cílová skupina
Cílem tohoto článku je poskytnout jasný, krok za krokem průvodce pro budování praktických kontejnerů s Podmanem a Dockerfilem na Ubuntu.
Tento článek je určen pro čtenáře, jako jsou:
- Vývojáři zkušení s Dockerem, kteří jsou zvědaví na Podman
- Uživatelé Ubuntu hledající bezpečné řízení kontejnerů
- Inženýři, kteří chtějí začlenit technologie kontejnerů do svého workflow
- Začátečníci zajímající se o psaní Dockerfile a budování s Podmanem
Pokryjeme vše od základů a tipů na řešení problémů po klíčové rozdíly s Dockerem a jak migrovat.
2. Co je Podman?
Přehled Podmanu
Podman (Pod Manager) je nástroj pro řízení kontejnerů další generace vyvinutý komunitou vedenou Red Hat. Stejně jako Docker dokáže budovat, spouštět a řídit kontejnery kompatibilní s OCI, ale jeho design a architektura se liší významně.
Největší funkcí Podmanu je, že nevyžaduje pozadí daemon. To umožňuje lehký a bezpečný provoz. Podman také podporuje rootless režim, který umožňuje běžným uživatelům řídit kontejnery bez zvýšených oprávnění. CLI je vysoce kompatibilní s Dockerem, takže většina příkazů je téměř identická.
Klíčové funkce Podmanu
Zde jsou některé pozoruhodné funkce Podmanu:
Architektura bez daemonu
Podman funguje bez pozadí daemonu (rezidentního procesu) pro řízení kontejnerů. To vede k efektivnímu využití zdrojů bez zbytečných pozadí procesů.
Podpora rootless (neprivilegovaní uživatelé)
Podman umožňuje běžným uživatelům spouštět a řídit kontejnery bez administrátorských oprávnění. To umožňuje bezpečný provoz kontejnerů v multiuživatelských nebo serverových prostředích a výrazně 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 Dockeru fungují téměř identicky v Podmanu:
podman build -t myimage .
podman run -it myimage bash
To umožňuje uživatelům obvyklým s Dockerem přejít plynule na Podman.
Funkce Pod
Podman přejímá koncept „Pod“ z Kubernetes, což umožňuje řídit více kontejnerů jako jednu logickou jednotku. To zvyšuje kompatibilitu s Kubernetes a umožňuje plynulou migraci z lokálních do cloudových prostředí.
Kompatibilita s Ubuntu
Ačkoli Podman je široce adoptován na Fedoře a distribucích založených na RHEL, také stabilně běží na Ubuntu. Můžete ho nainstalovat z oficiálních repozitářů a nastavení je jednoduché. Zejména od Ubuntu 20.04 LTS se zlepšila údržba balíčků, což snižuje bariéru pro adopci.
3. Instalace Podman na Ubuntu
Před zahájením: kontrolní seznam před instalací
Než nainstalujete Podman na Ubuntu, nejprve zkontrolujte verzi Ubuntu. Podman se doporučuje pro Ubuntu 20.04 LTS nebo novější. Starší verze mohou postrádat požadované balíčky v oficiálním repozitáři.
Zkontrolujte verzi Ubuntu pomocí následujícího příkazu:
lsb_release -a
Instalace Podman vyžaduje oprávnění sudo. I když plánujete používat režim bez rootu, pro počáteční instalaci jsou potřebná administrátorská oprávnění, takže se ujistěte, že je máte.
Instalace Podman (oficiální repozitář Ubuntu)
Na Ubuntu 20.04, 22.04 nebo novějším můžete Podman snadno nainstalovat pomocí APT:
sudo apt update
sudo apt install -y podman
Po instalaci zkontrolujte verzi, abyste potvrdili úspěšné nastavení:
podman --version
Jak získat nejnovější verzi (oficiální PPA)
Balíček Podman v standardním repozitáři Ubuntu nemusí být nejnovější. Pokud chcete nejnovější funkce, použijte oficiální Personal Package Archive (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
Tím získáte přístup k nejnovějšímu vydání Podman, ekvivalentnímu ekosystémům Red Hat a Fedora.
Základní test funkčnosti Podman
Po instalaci spusťte rychlou kontrolu:
podman info
Tento příkaz zobrazí verzi Podman, konfiguraci a podporované funkce, jako je režim bez rootu.
Otestujte stažení a spuštění oficiálního kontejneru Alpine Linux:
podman run --rm -it alpine sh
Pokud se shell spustí úspěšně, vaše nastavení Podman funguje správně.
4. Použití Dockerfile s Podman
Co je Dockerfile?
Dockerfile je šablona pro vytváření obrazů kontejnerů. Jedná se o textový soubor, který uvádí základní obraz, balíčky k instalaci, soubkopírování a další instrukce v pořadí.
Nástroje pro kontejnery jako Podman a Docker mohou automaticky vytvořit konzistentní prostředí na základě tohoto souboru.
Příklad instrukcí:
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"]
Tím se instalují balíčky, kopírují skripty a definuje, co se má ve výsledném obrazu spouštět jako výchozí.
Jak použít Dockerfile s Podman
Obrazy kontejnerů můžete z Dockerfile vytvářet pomocí Podman, téměř stejně jako s Docker.
1. Připravte adresář
Nastavte své soubory takto:
project/
├── Dockerfile
└── app.sh
app.sh může být jednoduchý skript:
#!/bin/bash
echo "Hello from Podman container!"
Udělejte skript spustitelným:
chmod +x app.sh
2. Sestavte pomocí Podman
S Dockerfile ve vašem aktuálním adresáři spusťte:
podman build -t mypodmanapp .
Tím se vytvoří obraz kontejneru s názvem mypodmanapp.
3. Zkontrolujte výsledek sestavení
Zobrazte vytvořený obraz pomocí:
podman images
4. Spusťte kontejner
Spusťte kontejner z vytvořeného obrazu:
podman run --rm mypodmanapp
Pokud je vše nastaveno správně, uvidíte: Hello from Podman container!
Rozdíl s Containerfile
Podman podporuje soubory pojmenované Containerfile, které používají stejnou syntaxi jako Dockerfile. Jedná se jen o neutrální název, nespojený s brandingem Dockeru.
Funkčnost je identická. Ať už soubor pojmenujete Dockerfile nebo Containerfile, Podman jej použije:
podman build -f Containerfile -t myimage .
Stačí v případě potřeby specifikovat název souboru pomocí volby -f.
5. Praktický příklad: Vytvoření kontejneru založeného na Ubuntu
Vytvoření Dockerfile založeného na Ubuntu
Pojďme krok za krokem projít tvorbou Dockerfile založeného na Ubuntu a vytvořením a spuštěním kontejnerového obrazu pomocí Podmanu.
Zde je jednoduchý příklad 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:
- Používá oficiální obraz Ubuntu 22.04
- Instaluje balíček
curl - Zkopíruje
hello.shz hostitele do kontejneru - Nastaví
hello.shjako výchozí skript
Nyní vytvořte jednoduchý skript hello.sh:
#!/bin/bash
echo "Hello from a Podman container!"
Dejte mu právo spouštět:
chmod +x hello.sh
Vytvoření obrazu pomocí Podmanu
Jakmile jsou vaše soubory připravené, vytvořte obraz pomocí:
podman build -t ubuntu-hello .
Příznak -t ubuntu-hello označí (otaguje) váš obraz; . určuje adresář pro sestavení.
Pokud bude úspěšné, uvidíte svůj nový obraz v seznamu:
podman images
Spuštění a testování obrazu
Spusťte kontejner z vašego nového obrazu:
podman run --rm ubuntu-hello
Ukázkový výstup:
Hello from a Podman container!
Volba --rm automaticky odstraní kontejner po jeho ukončení, což je ideální pro testování.
Tip: Interaktivní přístup do kontejneru
Pokud chcete pracovat interaktivně uvnitř kontejneru, použijte volbu -it pro spuštění Bash:
podman run -it ubuntu-hello bash
Tím získáte lehké vývojové prostředí Ubuntu uvnitř vašeho kontejneru.
6. Funkce a tipy pro Podman
Silné stránky Podmanu: Flexibilita a bezpečnost
Podman poskytuje větší flexibilitu a zvýšenou bezpečnost, přičemž zůstává kompatibilní s Dockerem. Zde jsou některé užitečné funkce a tipy pro každodenní používání.
Bezpečné operace v rootless režimu
Jednou z klíčových silných stránek Podmanu je rootless režim, který umožňuje ne‑root uživatelům spouštět, zastavovat a spravovat kontejnery.
Například můžete používat Podman bez sudo:
podman run -it ubuntu bash
Operace jsou omezeny na domovský adresář uživatele, snižují riziko pro systém. To je zvláště cenné na sdílených serverech nebo v vývojových prostředích.
Integrace se systemd pro automatické spouštění
Podman se může nativně integrovat se systemd, což umožňuje kontejnerům spouštět se automaticky jako Linuxové služby.
Vytvořte soubor systemd jednotky pomocí:
podman generate systemd --name mycontainer --files --restart-policy=always
Tím se vytvoří soubor jednotky v ~/.config/systemd/user/. Povolit a spustit pomocí:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
Kontejnery se nyní automaticky restartují i po restartu serveru.
Správa více kontejnerů pomocí podman‑compose
Kromě operací s jedním kontejnerem Podman podporuje správu více kontejnerů. Pomocí podman‑compose můžete spravovat složité projekty podobně jako Docker Compose.
Nainstalujte pomocí pip:
pip install podman-compose
Protože je kompatibilní se soubory docker-compose.yml, migrace projektů je snadná.
Pro spuštění služeb stačí spustit:
podman-compose up -d
Podman vám umožní okamžitě reprodukovat vývojová prostředí.
Další užitečné příkazy a tipy
Vyčištění nepoužívaných obrazů a kontejnerů
podman system prune -a
Odstraňte nepoužívané soubory a obrazy, abyste uvolnili úložiště.
Dokončování příkazů v shellu (bash/zsh)
Nainstalujte skripty pro dokončování příkazů Podmanu pro snazší používání CLI:
sudo apt install podman-docker
To umožní dokončování příkazů, podobně jako u Dockeru, pro příkaz podman.
7. Migr Dockeru na Podman
Proč je migrace na Podman v trendu
Zatímco Docker byl dlouho de facto standardem pro kontejnery, Podman získává na popularitě díky své lehkosti a vyšší bezpečnosti. Red Hat Enterprise Linux (RHEL) a Fedora přešly z Dockeru na Podman jako výchozí, což vede mnoho týmů k úvahám o migraci.
Tato sekce pokrývá praktické kroky a body, které je třeba zvážit při migraci z Dockeru na Podman.
Kompatibilita příkazů: Docker vs. Podman
Podman je vysoce kompatibilní s příkazy Dockeru, takže je můžete obecně nahradit přímo:
| 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 |
Tato bezproblémová kompatibilita CLI je hlavní výhodou Podmanu.
Dosáhnutí plné kompatibility s podman-docker
Pokud vaše skripty nebo CI/CD pipeline používají příkazy docker, instalace balíčku podman-docker umožní Podmanu fungovat jako přímá náhrada:
sudo apt install podman-docker
Tím se nastaví příkaz docker jako symbolický odkaz na Podman:
which docker
# → /usr/bin/docker → podman symlink
Pak můžete spouštět Docker skr úprav.
Alternativa k Docker Compose: podman-compose
Pokud používáte Docker Compose pro multi‑container projekty, podman-compose poskytuje podobnou funkčnost.
Je vysoce kompatibilní, ale některé možnosti Compose se mohou lišit (např. depends_on) a logování událostí nebo kontrola zdraví mohou fungovat odlišně. Pro základní web + DB stacky je migrace obecně plynulá.
Migrace obrazů a svazků
Lokální Docker obrazy nejsou pro Podman ve výchozím nastavení viditelné. Můžete:
Možnost 1: Znovu stáhnout pomocí Podman
podman pull ubuntu:22.04
Možnost 2: Export z Dockeru → Import do Podman
# Export with Docker
docker save myimage > myimage.tar
# Import with Podman
podman load < myimage.tar
Tím se Docker‑vytvořené obrazy zpřístupní v Podmanu.
Další úvahy
- Rootless provoz: Docker obvykle běží jako root, zatímco Podman je navržen pro rootless provoz ve výchozím nastavení
- Struktura démona: Podman je bez démona, takže správa procesů se liší
- Umístění logů a úložiště dat se mohou lišit — během migrace zkontrolujte konfigurace
8. Často kladené otázky (FAQ)
Q1. Jaké jsou hlavní rozdíly mezi Podman a Dockerem?
A1. Největší rozdíl je, že Podman je „bez démona“ (nevyžaduje žádný proces na pozadí), což ho činí lehčím a bezpečnějším. Podman také podporuje rootless režim, který uživatelům umožňuje spravovat kontejnery bez zvýšených oprávnění. Kompatibilita CLI je vysoká, takže většina příkazů je stejná.
Q2. Existuje rozdíl mezi Dockerfile a Containerfile?
A2. Neexistuje žádný funkční rozdíl. Oba jsou soubory popisující, jak vytvořit kontejnery, se stejnou syntaxí. Některé projekty upřednostňují „Containerfile“ jako neutrální název, ale můžete použít kterýkoli název s Podmanem.
Q3. Mohu použít Docker Compose soubory s Podmanem?
A3. Podman nativně nepodporuje Docker Compose, ale můžete použít podman-compose (Python nástroj) k interpretaci a spuštění souborů docker-compose.yml v prostředí Podman.
Některé možnosti Compose (depends_on atd.) mohou mít omezení, takže složitější nastavení otestujte předem.
Q4. Je Podman stabilní na Ubuntu?
A4. Ano, Podman běží spolehlivě na Ubuntu 20.04 LTS a novějším. Je dostupný v oficiálních Ubuntu repozitářích a lze jej nainstalovat pomocí apt. Pro nejnovější verzi můžete použít oficiální PPA.
Q5. Existují omezení přístupu v rootless režimu?
A5. V rootless režimu jsou některé privilegované operace a navázání na porty pod 1024 omezené. Přesměrování portů může toto omezení obejít. Pro většinu případů použití je rootless režim praktický a doporučený.
Q6. Může Podman stahovat obrazy z Docker Hubu?
A6. Ano, Podman může ve výchozím nastavení stahovat obrazy z Docker Hubu. Někdy může být potřeba zadat úplnou cestu k registru, např. docker.io/library/ubuntu:
podman pull docker.io/library/ubuntu
Podman také podporuje registry jako Quay.io a GitHub Container Registry.
Q7. Je Podman vhodný pro produkční nasazení?
A7. Ano, Podman zahrnuje koncepty podů kompatibilní s Kubernetes a integraci se systemd pro automatické spouštění, což jej činí vhodným pro produkční prostředí — zejména tam, kde je potřeba vysoká bezpečnost. Podman je nyní výchozí na Red Hat Enterprise Linux a Fedora, s širokým přijetím.




