Portainer macht Docker-Verwaltung einfach. Mit der Web-Oberfläche können Sie Container, Images, Volumes und Netzwerke ohne Kommandozeile verwalten.

Vorteile von Portainer

  • Grafische Oberfläche: Intuitive Verwaltung
  • Container-Übersicht: Status auf einen Blick
  • Multi-Host: Mehrere Docker-Hosts verwalten
  • Templates: Container schnell deployen
  • Kostenlos: Community Edition reicht für die meisten

Installation mit Docker

Portainer Volume erstellen

docker volume create portainer_data

Portainer starten

docker run -d \
  --name portainer \
  --restart=always \
  -p 8000:8000 \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Mit Docker Compose

version: '3.8'

services:
  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer
    restart: always
    ports:
      - "9443:9443"
      - "8000:8000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data

volumes:
  portainer_data:
docker compose up -d

Erster Zugriff

Web-Interface öffnen

https://SERVER-IP:9443

Admin-Account erstellen

1. Benutzername eingeben (z.B. admin) 2. Sicheres Passwort wählen 3. Account erstellen

Umgebung wählen

"Get Started" → Lokale Docker-Umgebung wird erkannt

Dashboard-Übersicht

Home

  • Verbundene Umgebungen
  • Gesamtstatistiken

Local (Docker Host)

  • Dashboard: Übersicht aller Ressourcen
  • Containers: Container-Verwaltung
  • Images: Image-Verwaltung
  • Volumes: Volumes-Verwaltung
  • Networks: Netzwerk-Verwaltung
  • Stacks: Docker Compose Stacks

Container verwalten

Container erstellen

1. Containers → Add container 2. Name eingeben 3. Image wählen (z.B. nginx:latest) 4. Port-Mapping konfigurieren 5. Volumes hinzufügen 6. Environment-Variablen setzen 7. Deploy the container

Container-Aktionen

| Aktion | Beschreibung | |--------|--------------| | Start | Container starten | | Stop | Container stoppen | | Restart | Neustarten | | Kill | Sofort beenden | | Remove | Löschen | | Logs | Logs anzeigen | | Console | Shell öffnen | | Inspect | Details anzeigen |

Container-Logs

Containers → Container auswählen → Logs

  • Auto-refresh aktivieren
  • Nach Zeitraum filtern
  • Download als Datei

Console (Shell)

Containers → Container auswählen → Console → Connect

Öffnet eine Shell im Container.

Stacks (Docker Compose)

Stack erstellen

1. Stacks → Add stack 2. Name eingeben 3. Compose-Datei einfügen oder hochladen 4. Environment-Variablen hinzufügen 5. Deploy the stack

Beispiel: WordPress Stack

version: '3.8'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

volumes:
  wordpress_data:
  db_data:

Environment-Variablen in Portainer setzen:

  • DB_PASSWORD: sicheres_passwort
  • ROOT_PASSWORD: root_passwort

Stack aktualisieren

Stack auswählen → Editor → Änderungen → Update the stack

Images verwalten

Image herunterladen

Images → Pull image

  • Image-Name eingeben (z.B. nginx:alpine)
  • Pull the image

Images aufräumen

Images → Unused images markieren → Remove

Image bauen

Images → Build image

  • Dockerfile hochladen
  • Build starten

Volumes verwalten

Volume erstellen

Volumes → Add volume

  • Name eingeben
  • Driver wählen (local)
  • Create the volume

Volume inspizieren

Volume auswählen → Browse

Zeigt Dateien im Volume (mit Browser-Extension).

Netzwerke

Netzwerk erstellen

Networks → Add network

  • Name
  • Driver (bridge, overlay)
  • Subnet (optional)
  • Gateway (optional)

Container verbinden

Container → Network → Join network

App Templates

Portainer bietet vorgefertigte Templates:

1. App Templates 2. Template auswählen (WordPress, GitLab, etc.) 3. Konfigurieren 4. Deploy

Custom Templates

Settings → App Templates → Add template

Eigene Docker Compose Templates speichern.

Mehrere Hosts verwalten

Remote Docker Host

1. Environments → Add environment 2. Docker (API) wählen 3. Name und URL eingeben 4. TLS konfigurieren (empfohlen)

Agent-Installation (empfohlen)

Auf dem Remote-Host:

docker run -d \
  -p 9001:9001 \
  --name portainer_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  portainer/agent:latest

In Portainer:

  • Environments → Add environment
  • Agent auswählen
  • IP:9001 eingeben

Benutzer und Teams

Benutzer erstellen

Settings → Users → Add user

Teams

Settings → Teams → Add team

Berechtigungen

  • Endpoint-Zugriff beschränken
  • Team-basierte Rechte

Registries

Docker Hub (privat)

Settings → Registries → Add registry

  • Docker Hub
  • Username und Token eingeben

Eigene Registry

  • Custom registry
  • URL eingeben
  • Credentials (falls nötig)

Updates

Portainer aktualisieren

# Container stoppen und entfernen
docker stop portainer
docker rm portainer

# Neues Image
docker pull portainer/portainer-ce:latest

# Neu starten (Volume bleibt)
docker run -d \
  --name portainer \
  --restart=always \
  -p 9443:9443 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

Sicherheit

Hinter Reverse Proxy

server {
    listen 443 ssl http2;
    server_name portainer.example.com;

    ssl_certificate /etc/letsencrypt/live/portainer.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/portainer.example.com/privkey.pem;

    location / {
        proxy_pass https://127.0.0.1:9443;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}

Nur localhost

docker run -d \
  --name portainer \
  -p 127.0.0.1:9443:9443 \
  ...

Zugriff dann über SSH-Tunnel.

Troubleshooting

Portainer nicht erreichbar

# Container läuft?
docker ps | grep portainer

# Logs prüfen
docker logs portainer

Docker Socket-Probleme

# Socket vorhanden?
ls -la /var/run/docker.sock

# Rechte prüfen
sudo chmod 666 /var/run/docker.sock

Fazit

Portainer ist ideal für Docker-Einsteiger und für schnelle Übersichten. Die Web-Oberfläche macht Container-Verwaltung intuitiv. Für Profis bleibt die Kommandozeile schneller, aber Portainer ergänzt sie gut.