Instalacja i konfiguracja Portainer CE
Poziom: Początkujący
Czas na ukończenie: ~30 minut
Cel: Po ukończeniu tego przewodnika będziesz mieć w pełni skonfigurowany panel Portainer CE zabezpieczony protokołem HTTPS i gotowy do zarządzania infrastrukturą Docker na serwerze.
Wprowadzenie
Konteneryzacja oparta na Dockerze stała się standardem dla infrastruktury serwerowej, zapewniając przewidywalne wdrażanie i efektywne skalowanie usług. Jednak zarządzanie dziesiątkami kontenerów wyłącznie za pomocą linii poleceń staje się niewygodne. Portainer CE rozwiązuje ten problem, oferując przyjazny dla użytkownika interfejs webowy do administracji Dockerem: zapewnia dostęp do wszystkich kontenerów, ich statusów, logów i zasobów, a zarządzanie odbywa się w kilku kliknięciach bez utraty kontroli nad systemem.
Przygotowanie serwera
Przed instalacją należy upewnić się, że serwer jest gotowy do wdrożenia Portainera. Sam Portainer działa jako kontener, więc wystarczy zainstalować tylko Dockera.
Wymagania systemowe
- System operacyjny: Dowolna dystrybucja Linux (Ubuntu 20.04+, Debian 11+, CentOS/Rocky Linux 8+) używana w hostingu.
- Uprawnienia: dostęp root lub możliwość wykonywania poleceń przez sudo.
- Wymagania sprzętowe: Minimum 1 GB RAM i 10 GB wolnego miejsca na dysku.
- Wymagania sieciowe: Otwarte porty 8000 i 9443 dla dostępu do Portainera, port 443 dla konfiguracji reverse proxy.
Sprawdzanie dostępności Dockera
Połącz się z serwerem przez SSH. Przede wszystkim sprawdź, czy Docker jest zainstalowany i czy demon działa:
docker --version sudo systemctl status docker
Jeśli wyświetlana jest wersja Dockera i status jest aktywny (running), można pominąć krok instalacji Dockera.
Instalacja Dockera (jeśli potrzebna)
Na nowych serwerach Docker zazwyczaj nie jest obecny. Aby go zainstalować, uruchom standardowy skrypt (dla Debian/Ubuntu):
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl enable docker sudo systemctl start docker
Aby zainstalować wtyczkę Docker Compose (jeśli nie została zainstalowana w poprzednim kroku), uruchom:
sudo apt-get install docker-compose-plugin # Dla Debian/Ubuntu # lub sudo dnf install docker-compose-plugin # Dla CentOS/Rocky Linux
Sprawdź wersję zainstalowanego docker compose:
docker compose version
Wdrażanie Portainer CE w Dockerze
Istnieją dwa główne sposoby uruchomienia Portainera: za pomocą polecenia docker run (szybki start) i za pomocą docker-compose.yml (wygodne dla wersjonowania konfiguracji).
Metoda 1: Uruchamianie za pomocą docker run
Uruchom następujące polecenie na serwerze:
sudo docker run -d \ -p 8000:8000 \ -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest
Polecenie jest uruchamiane przez sudo, ponieważ bieżący użytkownik nie został jeszcze dodany do grupy docker. Jeśli planujesz używać dockera bez sudo później, dodaj użytkownika do grupy docker: sudo usermod -aG docker $USER. Po wykonaniu polecenia musisz się wylogować i zalogować ponownie lub zrestartować sesję.
Wyjaśnienie parametrów:
- -d – Uruchom kontener w tle.
- -p 8000:8000 – Przekierowanie portów dla agentów Edge i tuneli.
- -p 9443:9443 – Przekierowanie portów dla zabezpieczonego interfejsu webowego (HTTPS). Portainer automatycznie generuje samopodpisany certyfikat SSL.
- --name portainer – Przypisuje znaczącą nazwę kontenerowi.
- --restart=always – Automatyczna polityka restartu kontenera w przypadku awarii lub restartu serwera.
- -v /var/run/docker.sock:/var/run/docker.sock – Montuje gniazdo Dockera wewnątrz kontenera Portainera. Umożliwia to Portainerowi interakcję i zarządzanie demonem Dockera na hoście.
- -v portainer_data:/data – Tworzy nazwany wolumin do przechowywania danych Portainera (użytkownicy, ustawienia, konfiguracje połączeń).
- portainer/portainer-ce:latest – Obraz z najnowszą stabilną wersją Community Edition.
Metoda 2: Uruchamianie za pomocą docker-compose
Aby skorzystać z tej metody, utwórz katalog i plik docker-compose.yml:
mkdir ~/portainer-docker cd ~/portainer-docker nano docker-compose.yml
Wstaw następującą zawartość:
services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: always ports: - "8000:8000" - "9443:9443" volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data volumes: portainer_data:
Zapisz plik i uruchom polecenie:
docker compose up -d
Pierwsze uruchomienie i konfiguracja interfejsu webowego
Po uruchomieniu kontenera Portainer staje się on dostępny w sieci.
Krok 1. Połączenie z interfejsem webowym
Otwórz przeglądarkę i przejdź do: https://<adres-IP-serwera>:9443.
Z powodu użycia samopodpisanego certyfikatu przeglądarka wyświetli ostrzeżenie. Jest to normalne przy pierwszym uruchomieniu. Musisz przejść do witryny (na przykład klikając "Zaakceptuj ryzyko" lub "Przejdź do witryny").

Krok 2. Tworzenie użytkownika
Na stronie rejestracji musisz podać nazwę użytkownika (zalecane admin) i ustawić silne hasło.
Hasło musi być złożone, ponieważ zapewnia pełny dostęp do zarządzania kontenerami.
Krok 3. Podłączanie środowiska
Po utworzeniu użytkownika Portainer poprosi o podłączenie środowisk. Na tym etapie możesz podłączyć lokalny Docker (już dostępny dzięki zamontowanemu gniazdu) lub przejść do dodawania zdalnych środowisk za pomocą przycisku "Add Environments". Zdalne środowiska są przydatne, gdy musisz zarządzać wieloma serwerami z jednego interfejsu Portainera: na przykład dodając hosty Dockera w różnych centrach danych lub serwery z Kubernetes. Połączenie odbywa się za pomocą agentów Portainera lub przez API z użyciem certyfikatów TLS.
- Wybierz opcję "Get Started". Jest to podstawowy scenariusz dla jednego serwera.

- Portainer automatycznie wykryje lokalne gniazdo Dockera. Zostanie ono wyświetlone jako "local".

- Kliknij na nie, aby zakończyć konfigurację.
Konfiguracja jest zakończona. Otworzy się pulpit Portainera (główny ekran) z krótkimi statystykami na temat kontenerów, obrazów, woluminów i sieci.

Główne funkcje Portainera
Przyjrzyjmy się głównym sekcjom interfejsu używanym do codziennych zadań administracyjnych.
Pulpit
Ekran startowy, który wyświetla ogólny obraz: liczba uruchomionych i zatrzymanych kontenerów, liczba pobranych obrazów. Pozwala szybko ocenić stan serwera.
Kontenery
- Centralna sekcja zarządzania. Wyświetla listę wszystkich kontenerów.
- Zarządzanie kontenerami: Uruchom, zatrzymaj, zrestartuj, usuń kontener jednym kliknięciem.
- Logi: Zakładka "Logi" zapewnia dostęp do przeglądania logów kontenerów w czasie rzeczywistym.
- Inspekcja: Wyświetla pełne informacje o kontenerze w formacie JSON: zmienne środowiskowe, punkty montowania, ustawienia sieciowe.
- Statystyki: Wykresy zużycia CPU, pamięci i sieci dla każdego kontenera. Pomaga określić zużycie zasobów przez poszczególne usługi.
- Konsola Exec: Możliwość otwarcia terminala webowego wewnątrz kontenera do wykonywania poleceń.
Stosy
Implementacja Docker Compose w interfejsie webowym. Pozwala na przesyłanie lub tworzenie plików YAML bezpośrednio przez przeglądarkę do wdrażania aplikacji wielokontenerowych.
Obrazy
- Zarządzanie obrazami Dockera.
- Pobierz: Możliwość pobierania obrazów (np. nginx:latest lub mysql:8.0) bezpośrednio z interfejsu.
- Usuń: Czyszczenie nieużywanych obrazów w celu zwolnienia miejsca na dysku.
Woluminy
Zarządzanie trwałymi woluminami danych. Wyświetla istniejące woluminy, ich przypisanie do kontenerów i zajmowaną przestrzeń. Krytycznie ważne dla baz danych i danych użytkowników.
Sieci
Pozwala na tworzenie izolowanych sieci do interakcji kontenerów.
Cofanie zmian (Usuwanie Portainera)
Jeśli musisz całkowicie usunąć Portainera i jego dane z serwera, wykonaj następujące kroki:
1. Zatrzymaj i usuń kontener Portainera:
sudo docker stop portainer sudo docker rm portainer
2. Usuń wolumin danych Portainera (uwaga: ta czynność jest nieodwracalna):
sudo docker volume rm portainer_data
Usunięcie woluminu portainer_data spowoduje nieodwracalną utratę wszystkich użytkowników, ustawień i konfiguracji Portainera.
3. Usuń obraz Portainera (opcjonalnie):
sudo docker rmi portainer/portainer-ce:latest
Bezpieczeństwo i zalecenia
Dla środowisk produkcyjnych wymagana jest dodatkowa konfiguracja bezpieczeństwa Portainera.
Użycie Reverse Proxy (Nginx/Apache)
Zaleca się skonfigurowanie subdomeny (np. portainer.domain.com) i proxy ruchu przez Nginx. To zapewni:
- Użycie ważnego certyfikatu SSL (darmowego z Let's Encrypt lub płatnego SSL, np. od Sectigo).
- Centralizowane logowanie dostępu.
- Możliwość skonfigurowania dodatkowego uwierzytelniania.
1. Instalacja i konfiguracja Nginx
Zainstaluj Nginx:
sudo apt install -y nginx # Dla Debian/Ubuntu # lub sudo dnf install -y nginx # Dla CentOS/Rocky Linux
Utwórz plik konfiguracyjny dla Portainera:
sudo nano /etc/nginx/sites-available/portainer.conf
Dodaj następującą konfigurację, zastępując <YOUR_DOMAIN> swoją domeną, która wskazuje na adres IP serwera:
server { listen 80; server_name
; location / { proxy_pass https://localhost:9443; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; # Czas oczekiwania dla długich operacji proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; } }
Aktywuj konfigurację:
sudo ln -s /etc/nginx/sites-available/portainer.conf /etc/nginx/sites-enabled/
Sprawdź konfigurację Nginx:
sudo nginx -t
Jeśli sprawdzenie zakończy się sukcesem, zrestartuj Nginx:
sudo systemctl restart nginx
2. Konfiguracja HTTPS (zalecana)
Zainstaluj Certbot:
sudo apt install -y certbot python3-certbot-nginx
Uzyskaj certyfikat SSL:
sudo certbot --nginx -d
Zastąp <YOUR_DOMAIN> swoją domeną.
Podczas instalacji podaj swój email, na przykład admin@<YOUR_DOMAIN>, a następnie naciśnij Y dwa razy.
Sprawdź automatyczne odnawianie certyfikatu:
sudo systemctl list-timers | grep certbot
Konfiguracja zapory sieciowej
Bezpośredni dostęp do portów Portainera powinien być ograniczony. Zezwól na dostęp do portów 8000 i 9443 tylko z zaufanych adresów IP.
Bądź ostrożny z regułami zapory sieciowej. Nieprawidłowa konfiguracja może zablokować dostęp do serwera.
Przykład dla UFW:
sudo ufw allow from 192.168.1.0/24 to any port 9443 proto tcp sudo ufw deny 9443
Gdzie 192.168.1.0/24 to podsieć zaufanych adresów IP.
Regularne aktualizacje
Zaleca się śledzenie wydania nowych wersji Portainera i terminowe aktualizowanie kontenera w celu wyeliminowania potencjalnych luk w zabezpieczeniach.
Weryfikacja działania
Aby zweryfikować poprawność działania Portainera, wykonaj następujące czynności.
1. Wizualna kontrola: W sekcji "Kontenery" upewnij się, że kontener portainer ma status running.
2. Tworzenie kontenera testowego:
- Przejdź do sekcji "Kontenery", kliknij przycisk "Add container".
- W polu "Name" podaj test-nginx.
- W polu "Image" podaj nginx:alpine.
- W sekcji "Port mapping" podaj port hosta 8080, port kontenera 80.
- Kliknij "Deploy the container".
3. Sprawdzenie dostępności:
- Poczekaj, aż kontener pojawi się na liście ze statusem running.
- Otwórz przeglądarkę i przejdź do
http://<YOUR_IP_ADDRESS>:8080. Powinna zostać wyświetlona strona powitalna Nginx.
4. Sprawdzenie zarządzania:
- W Portainerze znajdź kontener test-nginx i kliknij przycisk "Stop".
- Odśwież stronę Nginx w przeglądarce – dostęp powinien być niedostępny.
- Kliknij "Start" – dostęp do strony powinien zostać przywrócony.
Rozwiązywanie problemów
Problem 1: Nie można otworzyć interfejsu webowego Portainera pod adresem https://<YOUR_IP_ADDRESS>:9443
Możliwa przyczyna: Zapora sieciowa blokuje port 9443.
Rozwiązanie: Sprawdź reguły zapory sieciowej i upewnij się, że port jest otwarty. Dla UFW: sudo ufw status | grep 9443.
Problem 2: Błąd "Cannot connect to the Docker daemon" podczas uruchamiania poleceń Dockera.
Możliwa przyczyna: Demon Dockera nie działa lub użytkownik nie ma uprawnień.
Rozwiązanie: Uruchom demona: sudo systemctl start docker. Jeśli dodałeś użytkownika do grupy docker, wyloguj się i zaloguj ponownie.
Problem 3: Kontener Portainera nie uruchamia się i natychmiast wychodzi (status exited).
Możliwa przyczyna: Konflikt portów lub uszkodzony obraz.
Rozwiązanie: Sprawdź, czy port 9443 jest zajęty przez inną aplikację: sudo ss -tulpn | grep 9443. Spróbuj przypisać inny port i zrestartować kontener: sudo docker restart portainer.
Podsumowanie
Portainer CE zapewnia efektywne narzędzie do wizualnego monitorowania i zarządzania kontenerami Dockera. Możliwość szybkiej oceny stanu kontenerów, analizy wykresów zużycia zasobów oraz wykonywania typowych operacji bez konieczności łączenia się przez SSH skraca czas reakcji na incydenty i upraszcza codzienną administrację.
To narzędzie może być przydatne, gdy konieczne jest zapewnienie ograniczonego dostępu do zarządzania kontenerami dla deweloperów lub mniej doświadczonego personelu bez przyznawania bezpośredniego dostępu do linii poleceń serwera. Portainer CE jest standardowym rozwiązaniem do wizualizacji infrastruktury kontenerowej i jest zalecany do użycia na serwerach.
Wersja dokumentu: 1.1
Ostatnia aktualizacja: Marzec 2026
Właściciel: Zespół Dokumentacji Technicznej