Chcesz uruchomić usługę testową, narzędzie internetowe lub obraz systemu Linux bez dodawania swojego konta do grupy docker. Podman potrafi uruchamiać kontenery z sesji użytkownika, z pamięcią i procesami przypisanymi do twojego UID. To praktyczne, aby wystartować czysto, ale nie zwalnia z konieczności kontroli obrazu, wolumenów ani opublikowanych portów.

Zainstaluj Podman i sprawdź tryb rootless
Na Debianie lub Ubuntu zainstaluj pakiet z repozytoriów swojej dystrybucji. Fedora również uwzględnia go w swoich standardowych repozytoriach.
sudo apt update
sudo apt install podman
podman --version
podman info --debug
Następnie uruchom podman info --debug z normalnym kontem, bez sudo. Wynik powinien wskazywać na kontekst rootless. Podman używa wtedy twojej przestrzeni użytkownika oraz zakresów zdefiniowanych w /etc/subuid i /etc/subgid do mapowania identyfikatorów kontenera.
Wiadomość o newuidmap, subuid lub subgid wskazuje na niekompletną konfigurację. Nie omijaj błędu, przechodząc bezpośrednio na konto root. Najpierw sprawdź swoje wpisy za pomocą następującego polecenia, a następnie zastosuj metodę udokumentowaną przez swoją dystrybucję, jeśli brakuje jej w konfiguracji.
grep "^$USER:" /etc/subuid /etc/subgid
Uruchom pierwszy kontener bez uprawnień
Rozpocznij od małego obrazu i polecenia, które zakończy się samoistnie. W ten sposób sprawdzisz pobieranie obrazu, lokalne przechowywanie i uruchamianie bez pozostawiania otwartej usługi w sieci.
podman run --rm docker.io/library/alpine:latest echo "Podman działa"
Opcja --rm usuwa kontener po zakończeniu. Obraz pozostaje w pamięci podręcznej. Aby zobaczyć obrazy i kontenery, w tym te zatrzymane, użyj:
podman images
podman ps -a
Dla usługi, która ma pozostać dostępna, nadaj jej wyraźną nazwę. Ten przykład uruchamia nginx w tle i publikuje port 8080 tylko na lokalnej maszynie.
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
Prefiks 127.0.0.1: zapobiega wystawieniu tego testu na wszystkie interfejsy sieciowe. Jeśli napiszesz tylko -p 8080:80, sprawdź wynik za pomocą podman port web-test oraz ss -ltnp. Na serwerze otwieraj publiczny port tylko po wybraniu zapory i adresu nasłuchu.
Odczytaj stan, dzienniki i zatrzymaj usługę poprawnie
Uruchomiony kontener nie dowodzi, że aplikacja odpowiada. Sprawdź jego stan, ostatnie dzienniki i mapowanie sieci przed wprowadzeniem zmian w obrazie lub konfiguracji.
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 wyświetla rzeczywiste zastosowane ustawienia. Jest to bardziej wiarygodne niż przeglądanie skopiowanego polecenia w historii. Zachowaj również nazwę obrazu i jego tag w dokumentacji. Tag latest może wskazywać na inną wersję przy następnym pobraniu. Do długoterminowego użytku wybierz precyzyjną wersję i zaplanuj jej aktualizację.
Ograniczenia rootless i pułapki do unikania
- Kontejner rootless ogranicza wpływ na hosta, ale niesprawdzony obraz, tajemnica wstrzyknięta jako zmienna lub wolumen zapisywalny pozostają ryzykiem.
- Unikaj
--privileged,--network hostoraz montowania wrażliwych katalogów. Te opcje znacząco zmniejszają izolację. - Montuj dane jako tylko do odczytu, gdy aplikacja nie musi ich modyfikować, na przykład
-v "$HOME/site:/usr/share/nginx/html:ro". - Porty poniżej 1024, niektóre urządzenia i określone ograniczenia sieciowe wymagają dodatkowej konfiguracji. Nie dodawaj uprawnień z przyzwyczajenia.
- Podman akceptuje dużą część składni Dockera, ale usługi, sieci i przechowywanie nie zawsze zachowują się w ten sam sposób. Przetestuj projekt w odizolowanym katalogu przed migracją.
Grupa docker często daje bardzo szeroki dostęp do demona Dockera. Podman rootless unika tego przyzwyczajenia dla kontenerów uruchamianych z twojego konta. Aby porównać instalację silnika Dockera z tym wyborem uprawnień, możesz również przeczytać nasz przewodnik dotyczący Dockera na Debianie.
Oficjalna dokumentacja Podman szczegółowo opisuje działanie rootless, a podręcznik podman run wymienia opcje sieciowe, wolumeny i identyfikatory. Rozpocznij od prostego obrazu, lokalnego portu i wolumenu tylko do odczytu. Szybko dowiesz się, czy Podman nadaje się do twojego użytku, zanim przeniesiesz przydatną usługę.