- 1 1. Wprowadzenie
- 2 2. Co to jest Podman?
- 3 3. Instalowanie Podmana w Ubuntu
- 4 4. Używanie Dockerfile z Podmanem
- 5 5. Praktyczny przykład: budowanie kontenera opartego na Ubuntu
- 6 6. Funkcje i wskazówki dotyczące Podmana
- 7 7. Migracja z Dockera do Podmana
- 8 8. Często zadawane pytania (FAQ)
- 8.1 P1. Jakie są główne różnice między Podmanem a Dockerem?
- 8.2 P2. Czy istnieje różnica między Dockerfile a Containerfile?
- 8.3 P3. Czy mogę używać plików Docker Compose z Podmanem?
- 8.4 P4. Czy Podman jest stabilny na Ubuntu?
- 8.5 P5. Czy w trybie bez roota istnieją ograniczenia dostępu?
- 8.6 P6. Czy Podman może pobierać obrazy z Docker Hub?
- 8.7 P7. Czy Podman nadaje się do użycia w produkcji?
1. Wprowadzenie
Ewolucja i rosnące znaczenie technologii kontenerów
W ostatnich latach technologia kontenerów szybko zyskała na znaczeniu w dziedzinie tworzenia aplikacji i operacji. W szczególności możliwość dopasowania środowisk deweloperskich i produkcyjnych zapewnia powtarzalność operacji, co jest kluczową zaletą, która zdobyła silne poparcie wśród inżynierów.
Podczas gdy Docker pozostaje najpowszechniej rozpoznawalną platformą kontenerową, Podman przyciąga coraz większą uwagę jako nowoczesna alternatywa. Podman oferuje niemal identyczny interfejs wiersza poleceń (CLI) do Dockera, ale wyróżnia się architekturą bez demona i lekką oraz wsparciem dla operacji bez uprawnień roota (rootless).
Dlaczego „Podman + Dockerfile + Ubuntu”?
W tym artykule wyjaśnimy, jak połączyć Podman, Dockerfile i Ubuntu, aby tworzyć nowoczesne przepływy pracy kontenerów na Linuksie.
- Ubuntu jest popularną dystrybucją Linuksa używaną zarówno przez początkujących, jak i zaawansowanych użytkowników,
- Dockerfile służy jako szablon do budowania obrazów kontenerów,
- a Podman jest narzędziem nowej generacji zaprojektowanym do elastycznego i bezpiecznego zarządzania tymi obrazami.
Wraz ze wzrostem świadomości bezpieczeństwa, podejście używania Podmana z Dockerfile na Ubuntu jest coraz częściej przyjmowane zarówno przez indywidualnych deweloperów, jak i zespoły korporacyjne.
Cel i grupa docelowa
Celem tego artykułu jest przedstawienie jasnego, krok po kroku przewodnika po budowaniu praktycznych kontenerów przy użyciu Podmana i Dockerfile na Ubuntu.
Ten artykuł jest przeznaczony dla czytelników, takich jak:
- Deweloperzy z doświadczeniem w Dockerze, ciekawi Podmana,
- Użytkownicy Ubuntu poszukujący bezpiecznego zarządzania kontenerami,
- Inżynierowie dążący do włączenia technologii kontenerowych do swojego przepływu pracy,
- Początkujący zainteresowani pisaniem Dockerfile i budowaniem przy użyciu Podmana.
Omówimy wszystko, od podstaw i wskazówek rozwiązywania problemów, po kluczowe różnice w stosunku do Dockera i sposoby migracji.
2. Co to jest Podman?
Przegląd Podmana
Podman (Pod Manager) to narzędzie do zarządzania kontenerami nowej generacji, rozwijane przez społeczność kierowaną przez Red Hat. Podobnie jak Docker, może budować, uruchamiać i zarządzać kontenerami zgodnymi z OCI, ale jego projekt i architektura różnią się w istotny sposób.
Największą cechą Podmana jest to, że nie wymaga on działającego w tle demona. Dzięki temu możliwa jest lekka i bezpieczna operacja. Podman obsługuje także tryb rootless, umożliwiając zwykłym użytkownikom zarządzanie kontenerami bez podwyższonych uprawnień. Interfejs CLI jest wysoce kompatybilny z Dockerem, więc większość poleceń jest prawie identyczna.
Kluczowe funkcje Podmana
Oto niektóre godne uwagi funkcje Podmana:
Architektura bez demona
Podman działa bez demona w tle (procesu rezydentnego) do zarządzania kontenerami. Skutkuje to efektywnym wykorzystaniem zasobów, bez niepotrzebnych procesów w tle.
Wsparcie rootless (użytkownicy nieuprzywilejowani)
Podman pozwala zwykłym użytkownikom uruchamiać i zarządzać kontenerami bez uprawnień administratora. Umożliwia to bezpieczne działanie kontenerów w środowiskach wieloużytkownikowych lub serwerowych, znacząco zmniejszając ryzyko bezpieczeństwa.
CLI kompatybilne z Dockerem
Podman używa niemal takiej samej struktury poleceń jak Docker. Na przykład, poniższe polecenia Docker działają prawie identycznie w Podmanie:
podman build -t myimage .
podman run -it myimage bash
Umożliwia to użytkownikom zaznajomionym z Dockerem płynne przejście na Podmana.
Funkcja Pod
Podman przyjmuje koncepcję „Pod” z Kubernetes, pozwalając zarządzać wieloma kontenerami jako jedną logiczną jednostkę. Zwiększa to kompatybilność z Kubernetes i umożliwia płynną migrację z środowisk lokalnych do chmurowych.
Kompatybilność z Ubuntu
Chociaż Podman jest szeroko stosowany w dystrybucjach Fedora i opartych na RHEL, działa również stabilnie na Ubuntu. Można go zainstalować z oficjalnych repozytoriów, a konfiguracja jest prosta. Szczególnie od Ubuntu 20.04 LTS, utrzymanie pakietów uległo poprawie, co obniża próg adopcji.
3. Instalowanie Podmana w Ubuntu
Przed rozpoczęciem: Lista kontrolna przed instalacją
Przed instalacją Podmana w Ubuntu najpierw sprawdź wersję Ubuntu. Podman jest zalecany dla Ubuntu 20.04 LTS lub nowszego. Starsze wersje mogą nie zawierać wymaganych pakietów w oficjalnym repozytorium.
Sprawdź wersję Ubuntu za pomocą następującego polecenia:
lsb_release -a
Instalacja Podmana wymaga uprawnień sudo. Nawet jeśli planujesz używać trybu rootless, potrzebne są uprawnienia administratora do początkowej instalacji, więc upewnij się, że je masz.
Instalowanie Podmana (oficjalne repozytorium Ubuntu)
W Ubuntu 20.04, 22.04 lub nowszym możesz łatwo zainstalować Podmana przy pomocy APT:
sudo apt update
sudo apt install -y podman
Po instalacji sprawdź wersję, aby potwierdzić pomyślne skonfigurowanie:
podman --version
Jak uzyskać najnowszą wersję (oficjalne PPA)
Pakiet Podmana w standardowym repozytorium Ubuntu może nie być najnowszy. Jeśli chcesz najnowsze funkcje, użyj oficjalnego 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
Daje to dostęp do najnowszego wydania Podmana, równoważnego ekosystemom Red Hat i Fedora.
Podstawowy test funkcjonalności Podmana
Po instalacji uruchom szybkie sprawdzenie:
podman info
To polecenie wyświetla wersję Podmana, konfigurację oraz obsługiwane funkcje, takie jak tryb rootless.
Przetestuj pobranie i uruchomienie oficjalnego kontenera Alpine Linux:
podman run --rm -it alpine sh
Jeśli powłoka uruchomi się pomyślnie, Twoja konfiguracja Podmana działa prawidłowo.
4. Używanie Dockerfile z Podmanem
Co to jest Dockerfile?
Dockerfile to szablon do budowania obrazów kontenerów. To plik tekstowy, który wymienia obraz bazowy, pakiety do zainstalowania, pliki do skopiowania oraz inne instrukcje w kolejności.
Narzędzia kontenerowe takie jak Podman i Docker mogą automatycznie tworzyć spójne środowisko na podstawie tego pliku.
Przykładowe instrukcje:
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"]
Instaluje to pakiety, kopiuje skrypty i definiuje, co ma być uruchamiane domyślnie w powstałym obrazie.
Jak używać Dockerfile z Podmanem
Możesz budować obrazy kontenerów z Dockerfile przy pomocy Podmana, prawie dokładnie tak samo, jak z Dockerem.
1. Przygotuj katalog
Ustaw swoje pliki w następujący sposób:
project/
├── Dockerfile
└── app.sh
app.sh może być prostym skryptem:
#!/bin/bash
echo "Hello from Podman container!"
Uczyń skrypt wykonywalnym:
chmod +x app.sh
2. Buduj przy pomocy Podmana
Mając Dockerfile w bieżącym katalogu, uruchom:
podman build -t mypodmanapp .
To utworzy obraz kontenera o nazwie mypodmanapp.
3. Sprawdź wynik budowania
Zobacz utworzony obraz za pomocą:
podman images
4. Uruchom kontener
Uruchom kontener z zbudowanego obrazu:
podman run --rm mypodmanapp
Jeśli wszystko jest poprawnie skonfigurowane, zobaczysz: Hello from Podman container!
Różnica w stosunku do Containerfile
Podman obsługuje pliki nazwane Containerfile, które używają tej samej składni co Dockerfile. To po prostu neutralna nazwa, niepowiązana z marką Docker.
Funkcjonalność jest identyczna. Niezależnie od tego, czy nazwiesz plik Dockerfile, czy Containerfile, Podman go użyje:
podman build -f Containerfile -t myimage .
Wystarczy podać nazwę pliku opcją -f, jeśli to konieczne.
5. Praktyczny przykład: budowanie kontenera opartego na Ubuntu
Tworzenie Dockerfile opartego na Ubuntu
Przejdźmy krok po kroku przez tworzenie Dockerfile opartego na Ubuntu oraz budowanie i uruchamianie obrazu kontenera przy użyciu Podmana.
Oto prosty przykład 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"]
Ten Dockerfile:
- Używa oficjalnego obrazu Ubuntu 22.04
- Instaluje pakiet
curl - Kopiuje
hello.shz hosta do kontenera - Ustawia
hello.shjako domyślny skrypt
Teraz utwórz prosty skrypt hello.sh:
#!/bin/bash
echo "Hello from a Podman container!"
Nadaj mu uprawnienia do wykonywania:
chmod +x hello.sh
Budowanie obrazu przy użyciu Podmana
Gdy pliki są gotowe, zbuduj obraz przy użyciu:
podman build -t ubuntu-hello .
Flaga -t ubuntu-hello oznacza (taguje) twój obraz; . określa katalog budowania.
Jeśli się powiedzie, zobaczysz swój nowy obraz wymieniony przy pomocy:
podman images
Uruchamianie i testowanie obrazu
Uruchom kontener z nowego obrazu:
podman run --rm ubuntu-hello
Przykładowe wyjście:
Hello from a Podman container!
Opcja --rm automatycznie usuwa kontener po zakończeniu, co jest idealne do testów.
Porada: Interaktywny dostęp do kontenera
Jeśli chcesz pracować interaktywnie wewnątrz kontenera, użyj opcji -it, aby uruchomić Bash:
podman run -it ubuntu-hello bash
Daje to lekkie środowisko programistyczne Ubuntu wewnątrz twojego kontenera.
6. Funkcje i wskazówki dotyczące Podmana
Zalety Podmana: elastyczność i bezpieczeństwo
Podman zapewnia większą elastyczność i zwiększone bezpieczeństwo, pozostając jednocześnie kompatybilnym z Dockerem. Oto kilka przydatnych funkcji i wskazówek dotyczących codziennej pracy.
Bezpieczne operacje w trybie bezrootowym
Jedną z kluczowych zalet Podmana jest tryb bezrootowy, który pozwala użytkownikom niebędącym rootem uruchamiać, zatrzymywać i zarządzać kontenerami.
Na przykład, możesz używać Podmana bez sudo:
podman run -it ubuntu bash
Operacje są ograniczone do katalogu domowego użytkownika, minimalizując ryzyko dla systemu. Jest to szczególnie cenne na współdzielonych serwerach lub w środowiskach deweloperskich.
Integracja z systemd w celu automatycznego uruchamiania
Podman może natychmiastowo integrować się z systemd, umożliwiając automatyczne uruchamianie kontenerów jako usług Linux.
Wygeneruj plik jednostki systemd przy pomocy:
podman generate systemd --name mycontainer --files --restart-policy=always
Tworzy to plik jednostki w ~/.config/systemd/user/. Włącz i uruchom przy pomocy:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
Kontenery będą teraz automatycznie restartować się nawet po ponownym uruchomieniu serwera.
Zarządzanie wieloma kontenerami przy użyciu podman-compose
Oprócz operacji na pojedynczych kontenerach, Podman obsługuje zarządzanie wieloma kontenerami. Korzystając z podman-compose, możesz zarządzać złożonymi projektami podobnie jak Docker Compose.
Zainstaluj przy pomocy pip:
pip install podman-compose
Ponieważ jest kompatybilny z plikami docker-compose.yml, migracja projektów jest prosta.
Aby uruchomić usługi, po prostu wykonaj:
podman-compose up -d
Podman pozwala natychmiast odtworzyć środowiska deweloperskie.
Inne przydatne polecenia i wskazówki
Czyszczenie nieużywanych obrazów i kontenerów
podman system prune -a
Usuń nieużywane pliki i obrazy, aby zwolnić miejsce.
Uzupełnianie w powłoce (bash/zsh)
Zainstaluj skrypty uzupełniania Podmana, aby ułatwić korzystanie z CLI:
sudo apt install podman-docker
To włącza uzupełnianie poleceń, podobnie jak w Dockerze, dla polecenia podman.
7. Migracja z Dockera do Podmana
Dlaczego migracja do Podmana jest na topie
Podczas gdy Docker od dawna jest de facto standardem dla kontenerów, Podman zyskuje na popularności dzięki mniejszej wadze i wyższemu bezpieczeństwu. Red Hat Enterprise Linux (RHEL) i Fedora przeszły domyślnie z Dockera na Podmana, co skłania wiele zespołów do rozważenia migracji.
Ta sekcja omawia praktyczne kroki i kwestie do rozważenia przy migracji z Dockera do Podmana.
Kompatybilność poleceń: Docker vs. Podman
Podman jest wysoce kompatybilny z poleceniami Dockera, więc możesz ogólnie zastąpić je bezpośrednio:
| 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 |
Ta płynna kompatybilność CLI jest główną zaletą Podmana.
Osiąganie pełnej kompatybilności z podman-docker
Jeśli twoje skrypty lub potoki CI/CD używają poleceń docker, zainstalowanie pakietu podman-docker pozwala Podmanowi służyć jako bezpośrednia zamiana:
sudo apt install podman-docker
To konfiguruje polecenie docker jako dowiązanie symboliczne do Podmana:
which docker
# → /usr/bin/docker → podman symlink
Wtedy możesz uruchamiać skrypty Dockera bez modyfikacji.
Alternatywa dla Docker Compose: podman-compose
Jeśli używasz Docker Compose do projektów wielo-kontenerowych, podman-compose zapewnia podobną funkcjonalność.
Jest wysoce kompatybilny, ale niektóre opcje Compose mogą się różnić (np. depends_on), a logowanie zdarzeń lub sprawdzanie stanu zdrowia może działać inaczej. Dla podstawowych stosów web + DB migracja jest zazwyczaj płynna.
Migracja obrazów i wolumenów
Lokalne obrazy Dockera nie są domyślnie widoczne dla Podmana. Możesz:
Opcja 1: Ponowne pobranie z Podmanem
podman pull ubuntu:22.04
Opcja 2: Eksport z Dockera → Import do Podmana
# Export with Docker
docker save myimage > myimage.tar
# Import with Podman
podman load < myimage.tar
To sprawia, że obrazy zbudowane w Dockerze są dostępne w Podmanie.
Inne kwestie do rozważenia
- Działanie bez roota: Docker zazwyczaj działa jako root, podczas gdy Podman jest zaprojektowany do działania bez roota domyślnie
- Struktura daemona: Podman jest bezdaemonowy, więc zarządzanie procesami różni się
- Lokalizacje przechowywania logów i danych mogą się różnić — sprawdź konfiguracje podczas migracji
8. Często zadawane pytania (FAQ)
P1. Jakie są główne różnice między Podmanem a Dockerem?
O1. Największa różnica polega na tym, że Podman jest „bezdaemonowy” (nie wymaga procesu w tle), co czyni go lżejszym i bardziej bezpiecznym. Podman obsługuje również tryb bez roota, umożliwiając użytkownikom zarządzanie kontenerami bez podwyższonych uprawnień. Kompatybilność CLI jest wysoka, więc większość poleceń jest taka sama.
P2. Czy istnieje różnica między Dockerfile a Containerfile?
O2. Nie ma różnicy funkcjonalnej. Oba to pliki opisujące, jak budować kontenery, z identyczną składnią. Niektóre projekty preferują „Containerfile” jako neutralną nazwę, ale możesz używać obu nazw z Podmanem.
P3. Czy mogę używać plików Docker Compose z Podmanem?
O3. Podman nie obsługuje natywnie Docker Compose, ale możesz użyć podman-compose (narzędzia Python) do interpretacji i uruchamiania plików docker-compose.yml w środowisku Podmana.
Niektóre opcje Compose (depends_on itp.) mogą mieć ograniczenia, więc przetestuj złożone konfiguracje z wyprzedzeniem.
P4. Czy Podman jest stabilny na Ubuntu?
O4. Tak, Podman działa niezawodnie na Ubuntu 20.04 LTS i nowszych. Jest dostępny w oficjalnych repozytoriach Ubuntu i można go zainstalować za pomocą apt. Dla najnowszej wersji możesz użyć oficjalnego PPA.
P5. Czy w trybie bez roota istnieją ograniczenia dostępu?
O5. W trybie bez roota niektóre uprzywilejowane operacje i wiązanie do portów poniżej 1024 są ograniczone. Przekierowanie portów może to obejść. Dla większości przypadków użycia tryb bez roota jest praktyczny i zalecany.
P6. Czy Podman może pobierać obrazy z Docker Hub?
O6. Tak, Podman może domyślnie pobierać obrazy z Docker Hub. Czasami możesz potrzebować podać pełną ścieżkę rejestru, np. docker.io/library/ubuntu:
podman pull docker.io/library/ubuntu
Podman obsługuje również rejestry takie jak Quay.io i GitHub Container Registry.
P7. Czy Podman nadaje się do użycia w produkcji?
A7. Tak, Podman zawiera koncepty podów kompatybilne z Kubernetes oraz integrację z systemd dla automatycznego uruchamiania, co czyni go odpowiednim dla środowisk produkcyjnych — szczególnie tam, gdzie potrzebne jest silne zabezpieczenie. Podman jest teraz domyślny w Red Hat Enterprise Linux i Fedora, z szerokim przyjęciem.



