Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

Portainer — zarządzanie kontenerami Docker przez przeglądarkę

Opublikowano: 10 kwietnia 2026 · Kategoria: VPS

Docker przez terminal jest potężny, ale zarządzanie dziesiątkami kontenerów na kilku serwerach za pomocą samych komend szybko staje się kłopotliwe. Portainer CE rozwiązuje ten problem: to open-source'owy panel webowy, który daje graficzny interfejs do całego ekosystemu Dockera — kontenerów, obrazów, sieci, woluminów, logów i Stacks (Docker Compose). Działa jako kontener, jest lekki (poniżej 100 MB RAM) i obsługuje zarówno lokalne, jak i zdalne Docker hosty przez Portainer Agent. Ten artykuł pokazuje instalację, najważniejsze funkcje i jak bezpiecznie wystawić Portainera w produkcji.

Instalacja Portainer CE przez Docker

Portainer wymaga tylko działającego Dockera. Instalacja zajmuje minutę — uruchamiasz jeden kontener, który sam zarządza pozostałymi. Dane konfiguracji przechowywane są w nazwanym woluminie, więc przeżyją restarty i aktualizacje Portainera.

# Utwórz wolumin na dane Portainera (trwałe storage)
docker volume create portainer_data

# Uruchom Portainer CE (wersja 2.x)
docker run -d \
  --name portainer \
  --restart=always \
  -p 9443:9443 \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

# Sprawdz status
docker ps --filter name=portainer

# Portainer dostepny pod:
# https://IP_SERWERA:9443  (HTTPS, self-signed cert)
# http://IP_SERWERA:9000   (HTTP, tylko dla dev/LAN)

Przy pierwszym wejściu Portainer poprosi o ustawienie hasła administratora (minimum 12 znaków). Następnie wybierasz środowisko — opcja "Get Started" automatycznie podłącza lokalny Docker przez zamontowany socket /var/run/docker.sock. Interfejs jest od razu gotowy do pracy.

Podstawowe operacje: kontenery, obrazy, logi

Panel Containers pokazuje wszystkie kontenery (uruchomione i zatrzymane) z informacją o statusie, użyciu CPU/RAM i portach. Dla każdego kontenera dostępne są akcje: Start, Stop, Restart, Kill, Pause, a także podgląd logów w czasie rzeczywistym, terminal (exec) i inspekcja konfiguracji.

Sekcja Co można zrobić Odpowiednik CLI
Containers Start/Stop/Restart, logi, exec terminal, stats CPU/RAM docker ps, logs, exec, stats
Images Pull, usuwanie nieużywanych, tagowanie, push do registry docker pull, rmi, tag, push
Networks Tworzenie sieci (bridge/overlay), podłączanie kontenerów docker network create/connect
Volumes Tworzenie, inspekcja, usuwanie nieużywanych docker volume create/prune
Stacks Deploy z YAML (Docker Compose), aktualizacja, rollback docker compose up/down
Registries Dodawanie prywatnych registry (Docker Hub, GHCR, Harbor) docker login
Events Historia zdarzeń Docker Engine (start, stop, pull, push) docker events

Stacks — Docker Compose przez interfejs webowy

Stacks to jedna z najważniejszych funkcji Portainera dla osób pracujących z Docker Compose. Wklejasz lub wgrywasz plik YAML, opcjonalnie definiujesz zmienne środowiskowe przez formularz (zamiast pliku .env), i klikasz "Deploy the stack". Portainer uruchomi wszystkie zdefiniowane usługi. Poniżej przykładowy stack z WordPress i MySQL:

version: '3.8'

services:
  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: {{ MYSQL_ROOT_PASS }}
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: {{ MYSQL_USER_PASS }}
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - wp_net

  wordpress:
    image: wordpress:6-php8.2-fpm
    restart: always
    depends_on:
      - db
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: {{ MYSQL_USER_PASS }}
    volumes:
      - wp_data:/var/www/html
    networks:
      - wp_net

volumes:
  db_data:
  wp_data:

networks:
  wp_net:

Zmienne {{ MYSQL_ROOT_PASS }} i {{ MYSQL_USER_PASS }} możesz zdefiniować w formularzu Portainer w sekcji "Environment variables" — nie musisz ich hardcodować w YAML. Portainer doda je automatycznie jako zmienne środowiskowe przy deploymencie.

Portainer Agent — zarządzanie zdalnymi Docker hostami

Jeden Portainer może zarządzać wieloma serwerami Docker jednocześnie. Wystarczy zainstalować Portainer Agent na każdym zdalnym hoście, a następnie dodać go jako nowe środowisko w panelu. Agent działa jako kontener i nasłuchuje na porcie 9001.

# Na ZDALNYM serwerze (kazdy VPS ktory chcesz zarzadzac)
docker run -d \
  --name portainer_agent \
  --restart=always \
  -p 9001:9001 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  portainer/agent:latest

# W Portainerze: Settings > Environments > Add environment
# Typ: Docker Standalone / Agent
# Endpoint URL: IP_ZDALNEGO_SERWERA:9001

# WAZNE: port 9001 powinien byc otwarty TYLKO dla IP serwera z Portainerem
# UFW na zdalnym hoście:
ufw allow from IP_PORTAINERA to any port 9001

RBAC — Role-Based Access Control dla zespołów

Portainer CE obsługuje podstawowy RBAC: możesz tworzyć użytkowników i przypisywać im role per środowisko. Portainer Business (płatny) oferuje bardziej granularny RBAC, ale nawet darmowa wersja pozwala na separację uprawnień między adminami a zwykłymi użytkownikami. Dostępne role w CE:

  • Administrator — pełny dostęp do wszystkiego, w tym ustawień Portainera i zarządzania użytkownikami.
  • Standard User — dostęp do przypisanych środowisk, bez dostępu do ustawień globalnych. Może uruchamiać/zatrzymywać kontenery i deployować Stacks.
  • Read-Only User — tylko odczyt; widzi kontenery i logi, ale nie może niczego zmieniać. Przydatne dla QA i monitoringu.

Nginx reverse proxy z HTTPS dla Portainera

Zamiast wystawiać Portainera bezpośrednio na zewnętrzny port 9000, lepiej schować go za Nginx z HTTPS. Zmienisz adres dostępowy z http://IP:9000 na https://portainer.twoja-domena.pl, z ważnym certyfikatem SSL.

# /etc/nginx/sites-available/portainer.conf
server {
    listen 80;
    server_name portainer.twoja-domena.pl;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name portainer.twoja-domena.pl;

    ssl_certificate /etc/letsencrypt/live/portainer.twoja-domena.pl/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/portainer.twoja-domena.pl/privkey.pem;

    location / {
        proxy_pass https://localhost:9443;
        proxy_ssl_verify off;  # self-signed cert Portainera
        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;
    }
}

# Wydaj certyfikat (przed tym ustaw DNS A portainer.twoja-domena.pl → IP serwera)
certbot --nginx -d portainer.twoja-domena.pl
nginx -t && systemctl reload nginx

Po tej konfiguracji ogranicz dostęp do portów 9000 i 9443 przez UFW tylko do localhost lub sieci wewnętrznej — cały ruch zewnętrzny będzie przechodził przez Nginx na portach 80/443.

Aktualizacja Portainera bez utraty danych

# Zatrzymaj i usun stary kontener (dane sa w woluminie portainer_data)
docker stop portainer
docker rm portainer

# Pobierz najnowszy obraz
docker pull portainer/portainer-ce:latest

# Uruchom nowy kontener z tymi samymi opcjami
docker run -d \
  --name portainer \
  --restart=always \
  -p 9443:9443 \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

# Sprawdz wersje po aktualizacji
docker exec portainer portainer --version

Najczęstsze pytania

Czym jest Portainer i do czego służy? +
Portainer to open-source'owy panel webowy do zarządzania Dockerem. Pozwala przez przeglądarkę uruchamiać kontenery, przeglądać logi, zarządzać sieciami, woluminami i obrazami — bez konieczności pisania komend w terminalu. Portainer CE (Community Edition) jest darmowy i obsługuje Docker Engine, Docker Swarm oraz Kubernetes.
Czy Portainer jest bezpieczny w produkcji? +
Portainer sam w sobie jest bezpieczny, ale wymaga prawidłowej konfiguracji. Kluczowe zasady: uruchamiaj na osobnym porcie (domyślnie 9000/9443), ogranicz dostęp przez firewall tylko do zaufanych IP, używaj HTTPS (TLS), utwórz dedykowanego użytkownika zamiast konta admin, włącz RBAC (Role-Based Access Control) dla zespołów. W produkcji rozważ użycie Nginx reverse proxy z certbot SSL zamiast bezpośredniego dostępu na port.
Co to są Stacks w Portainerze? +
Stacks w Portainerze to odpowiednik Docker Compose — grupy usług zdefiniowane jako plik YAML. W interfejsie Portainera możesz wkleić lub wgrać docker-compose.yml i uruchomić go jednym kliknięciem. Stacks obsługują zmienne środowiskowe (.env), volumes i networks. To wygodna alternatywa dla ręcznego docker compose up na serwerze.
Jaka jest różnica między Portainer a Docker Desktop? +
Docker Desktop to narzędzie lokalne dla programistów (Windows/macOS). Portainer to panel webowy uruchamiany na serwerze, dostępny zdalnie przez przeglądarkę. Portainer zarządza Dockerem na zdalnych serwerach VPS, obsługuje wiele środowisk jednocześnie (przez Portainer Agent) i oferuje RBAC dla zespołów. Docker Desktop jest do lokalnego devu, Portainer — do zarządzania produkcją i stagingiem na VPS.
Ile RAM potrzebuje Portainer? +
Portainer CE jest bardzo lekki — sam kontener zużywa poniżej 100 MB RAM. Przy kilku-kilkunastu zarządzanych kontenerach cały stos (Portainer + Docker Engine) działa komfortowo na VPS z 1-2 GB RAM. Dla większych środowisk (dziesiątki kontenerów, Swarm, Kubernetes) rekomendowane jest 4+ GB RAM.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.