W poprzedniej lekcji dowiedzieliśmy się, czym jest kontener. Teraz potrzebujemy narzędzi, które pozwolą nam te kontenery tworzyć, uruchamiać i zarządzać nimi. Na rynku dominują dwa rozwiązania: Docker i Podman. W tej lekcji przyjrzymy się obu, abyś mógł świadomie wybrać, z którego chcesz korzystać.
Docker: Pionier konteneryzacji
Docker to narzędzie, które spopularyzowało kontenery i na długi czas stało się synonimem tej technologii. Jego sukces wynikał z prostoty i kompletnego ekosystemu, który oferował.
Architektura Klient-Serwer
Kluczową cechą Dockera jest jego architektura oparta na modelu klient-serwer:
- Demon Dockera (Docker Daemon): To długo działający proces (usługa) w tle, który faktycznie zarządza kontenerami. Odpowiada za ich budowanie, uruchamianie i monitorowanie. Demon ten domyślnie wymaga uprawnień administratora (
root), co przez wielu jest postrzegane jako potencjalne ryzyko bezpieczeństwa. - Klient CLI Dockera: To narzędzie wiersza poleceń (
docker), którego używasz w terminalu. Kiedy wpisujesz komendę, np.docker run, klient nie wykonuje jej sam, lecz wysyła polecenie do Demona Dockera. - REST API: Komunikacja między klientem a demonem odbywa się poprzez REST API.
Dla użytkowników systemów Windows i macOS, najprostszym sposobem na instalację jest Docker Desktop – aplikacja, która dostarcza całe środowisko (demona, CLI) w jednym pakiecie.
Podman: Nowoczesna, bezdemonowa alternatywa
Podman (skrót od Pod Manager) to nowsze narzędzie, stworzone przez Red Hat, które od początku było projektowane jako bezpieczniejsza i bardziej nowoczesna alternatywa dla Dockera.
Architektura bez demona
Najważniejszą różnicą w Podmanie jest brak centralnego demona. Kiedy uruchamiasz komendę, np. podman run, jest ona wykonywana bezpośrednio w Twojej sesji terminala, w modelu “fork-exec”.
Jakie to ma zalety?
- Bezpieczeństwo: Podman domyślnie działa w trybie “rootless”, czyli bez uprawnień administratora. Każdy użytkownik systemu może zarządzać własnymi kontenerami, które są w pełni odizolowane od kontenerów innych użytkowników. Brak centralnego demona z uprawnieniami
rootznacząco zmniejsza powierzchnię ataku. - Integracja z systemem: Podman lepiej integruje się z tradycyjnymi narzędziami systemowymi w Linuksie, takimi jak
systemd.
Co ważne, Podman został zaprojektowany jako bezpośredni zamiennik Dockera. Oznacza to, że większość komend jest identyczna. Wielu użytkowników tworzy nawet prosty alias w swoim systemie: alias docker=podman.
Docker vs. Podman: Porównanie
| Cecha | Docker | Podman |
|---|---|---|
| Architektura | Klient-Serwer (z centralnym demonem) | Bezdemonowa (fork-exec) |
| Bezpieczeństwo | Demon domyślnie wymaga uprawnień root | Domyślnie działa bez root (rootless) |
| Komendy CLI | docker ... | podman ... (w większości identyczne) |
| Ekosystem | Bardzo dojrzały (Docker Hub, Compose) | Rozwijający się (wspiera podman-compose) |
| Pojęcie “poda” | Brak natywnego wsparcia | Wbudowane, kluczowe pojęcie |
Warto zwrócić uwagę na ostatni punkt. Podman natywnie rozumie koncept “poda”, czyli grupy kontenerów, które dzielą te same zasoby (np. sieć). Jest to fundamentalny koncept w Kubernetesie! Dzięki temu Podman jest fantastycznym narzędziem do nauki i przygotowania się do pracy z Kubernetesem.
Czego używać w tym kursie?
Oba narzędzia są świetnym wyborem, a podstawowe komendy, których nauczymy się w kolejnej lekcji, działają niemal identycznie. Celem kursu nie jest wskazanie “zwycięzcy”, ale nauczenie Cię koncepcji, które są uniwersalne.
- Jeśli dopiero zaczynasz, Docker Desktop na Windows/macOS może być nieco prostszy w instalacji.
- Jeśli pracujesz na Linuksie i cenisz sobie bezpieczeństwo oraz nowoczesne podejście, Podman będzie doskonałym wyborem.
W dalszej części kursu będziemy pokazywać komendy, starając się, aby były one kompatybilne z oboma narzędziami.
Podsumowanie
Docker i Podman to dwa potężne narzędzia do zarządzania kontenerami. Docker spopularyzował tę technologię i opiera się na architekturze z centralnym demonem. Podman to nowsza, bezdemonowa alternatywa, często uważana za bezpieczniejszą i bliższą koncepcjom znanym z Kubernetesa. W następnej lekcji przejdziemy do praktyki i nauczymy się podstawowych komend do pracy z obrazami i kontenerami.