Zum Hauptinhalt springen
Zurück zur Kategorie

Docker-Verwaltung mit Portainer: Webbasierte Container-Kontrolle

Portainer CE Installation, Docker- und Kubernetes-Verwaltung, Stack-Deployment, Volume/Netzwerk-Verwaltung, Benutzerautorisierung, Webhook und GitOps-Integration.

Lesezeit: 13 Min Self-Hosting
portainerdockerkubernetesweboberflächecontainer-verwaltungself-hosting
Autor
REXE Teknoloji Network & Security Team
Redaktion
REXE Teknoloji Technical Editorial
Erstveröffentlichung
Letzte Aktualisierung

Docker-Verwaltung mit Portainer: Webbasierte Container-Kontrolle

Portainer ist eine Open-Source Container-Management-Plattform, mit der Sie Docker- und Kubernetes-Umgebungen über einen Webbrowser verwalten können. Ohne Kommandozeilenkenntnisse können Sie Container starten, stoppen, Logs anzeigen und Stacks deployen.

Was ist Portainer CE?

Portainer Community Edition (CE) ist kostenlos und Open-Source. Hauptmerkmale:

  • Container-Verwaltung: Starten, Stoppen, Neustarten, Löschen
  • Image-Verwaltung: Pull, Push, Build, Tag-Operationen
  • Stack Deploy: Docker Compose-Dateien über die Weboberfläche deployen
  • Volume/Netzwerk: Speicher- und Netzwerkverwaltung
  • Log-Anzeige: Echtzeit-Container-Logs
  • Konsolenzugriff: Verbindung zu Containern über Web-Terminal
  • Benutzerverwaltung: Rollenbasierte Zugriffskontrolle

Installation

Docker Volume erstellen

hljs bash
# Volume zum Speichern von Portainer-Daten erstellen
docker volume create portainer_data

Portainer CE installieren

hljs bash
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

Nach der Installation:

https://SERVER_IP:9443

Beim ersten Login müssen Sie ein Admin-Passwort festlegen. Wenn Sie sich nicht innerhalb von 5 Minuten anmelden, muss Portainer aus Sicherheitsgründen neu gestartet werden.

Installation mit Docker Compose

hljs yaml
# portainer-compose.yml
version: '3.8'
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
    security_opt:
      - no-new-privileges:true

volumes:
  portainer_data:
hljs bash
docker compose -f portainer-compose.yml up -d

Docker Socket-Verbindung

Portainer kommuniziert mit dem Docker-Daemon über /var/run/docker.sock. Der Zugriff auf diesen Socket bietet vollständige Kontrolle über Docker:

hljs bash
# Socket-Berechtigungen prüfen
ls -la /var/run/docker.sock

# Benutzer zur Docker-Gruppe hinzufügen (falls erforderlich)
usermod -aG docker $USER

Der Zugriff auf den Docker-Socket entspricht Root-Rechten. Führen Sie Portainer in vertrauenswürdigen Netzwerken aus und verwenden Sie ein starkes Passwort.

Stacks (Docker Compose) deployen

Stack über Weboberfläche deployen

  1. StacksAdd Stack
  2. Stack-Namen eingeben
  3. Docker Compose-Inhalt einfügen oder Git-Repository-URL eingeben
  4. Umgebungsvariablen hinzufügen
  5. Auf Deploy the stack klicken
hljs yaml
# Beispiel: WordPress Stack
version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

volumes:
  wordpress_data:
  db_data:

Stack aus Git-Repository deployen

  1. Option Repository beim Erstellen eines Stacks auswählen
  2. Git-URL eingeben: https://github.com/user/repo
  3. Branch und Compose-Dateipfad angeben
  4. GitOps updates für automatische Updates aktivieren

Container-Verwaltung

Container-Operationen

hljs bash
# In der Portainer-Oberfläche:
# Containers → Container auswählen → Actions:
# - Start / Stop / Restart / Kill / Pause
# - Logs (Echtzeit)
# - Console (Web-Terminal)
# - Inspect (JSON-Details)
# - Stats (CPU, RAM, Netzwerknutzung)

Web-Terminal (Exec Console)

hljs bash
# Containers → Auf Container-Namen klicken
# Console-Tab → Connect
# Shell auswählen: /bin/bash oder /bin/sh

Benutzer- und Team-Verwaltung

Benutzer erstellen

  1. SettingsUsersAdd User
  2. Benutzername und Passwort festlegen
  3. Rolle zuweisen: Administrator oder Standard User

Teams erstellen

hljs bash
# Settings → Teams → Add Team
# Team-Name: developers
# Mitglieder hinzufügen: benutzer1, benutzer2

Automatische Updates mit Webhooks

hljs bash
# Webhook für Stack oder Service erstellen:
# Stack → Stack-Name → Webhooks
# Webhook-URL kopieren

# Verwendung in GitHub Actions:
curl -X POST https://portainer.example.com/api/webhooks/WEBHOOK_TOKEN

Edge Agent (Remote-Server-Verwaltung)

hljs bash
# Edge Agent auf Remote-Server installieren:
docker run -d \
  --name portainer_edge_agent \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  -v /:/host \
  -v portainer_agent_data:/data \
  -e EDGE=1 \
  -e EDGE_ID=IHRE_EDGE_ID \
  -e EDGE_KEY=IHR_EDGE_KEY \
  -e EDGE_INSECURE_POLL=1 \
  portainer/agent:latest

Portainer aktualisieren

hljs bash
# Aktuellen Container stoppen und entfernen
docker stop portainer
docker rm portainer

# Neuestes Image herunterladen
docker pull portainer/portainer-ce:latest

# Neu starten (Daten bleiben im Volume erhalten)
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

Durch die Installation von Portainer auf REXE-Servern können Sie alle Ihre Docker-Container über eine einzige Weboberfläche verwalten. Besonders praktisch für Server, auf denen mehrere Dienste laufen.

Häufig gestellte Fragen

Ich kann nicht auf Portainer auf Port 9443 zugreifen.

Öffnen Sie Port 9443 in der Server-Firewall: 'ufw allow 9443/tcp'. Überprüfen Sie, ob der Container läuft mit 'docker ps | grep portainer'. Wenn Sie HTTP verwenden möchten, öffnen Sie auch Port 9000 und fügen Sie den Parameter '-p 9000:9000' hinzu.

Ich habe das Portainer Admin-Passwort vergessen, wie setze ich es zurück?

Stoppen Sie den Portainer-Container. Setzen Sie das Passwort zurück mit 'docker run --rm -v portainer_data:/data portainer/helper-reset-password'. Das neue temporäre Passwort wird auf dem Bildschirm angezeigt. Starten Sie Portainer neu, melden Sie sich mit dem temporären Passwort an und legen Sie ein neues Passwort fest.

Beim Deployen eines Stacks erhalte ich einen 'permission denied'-Fehler.

Überprüfen Sie die Docker-Socket-Berechtigungen: 'ls -la /var/run/docker.sock'. Stellen Sie sicher, dass der Portainer-Container Zugriff auf den Socket hat. Wenn SELinux oder AppArmor aktiv ist, fügen Sie das ':z' oder ':Z'-Flag für den Socket-Mount hinzu.

Container-Logs werden in Portainer nicht angezeigt.

Stellen Sie sicher, dass der Log-Treiber des Containers 'json-file' oder 'local' ist. Überprüfen Sie mit 'docker inspect CONTAINER_ID | grep LogConfig'. Wenn der 'none' Log-Treiber verwendet wird, können Logs nicht angezeigt werden. Geben Sie den Logging-Treiber explizit in docker-compose.yml an.

Wie verwalte ich mehrere Docker-Umgebungen in Portainer?

Fügen Sie neue Umgebungen über das Environments-Menü hinzu. Wählen Sie 'Local' für Docker auf demselben Server. Für Remote-Server wählen Sie 'Docker Standalone' oder 'Docker Swarm' und geben Sie den TCP-Endpunkt ein (Port 2375/2376). Verwenden Sie TLS-Zertifikate für sichere Verbindungen. Mit Edge Agent können Sie auch Server hinter Firewalls verbinden.

Ist Kubernetes-Verwaltung mit Portainer CE möglich?

Ja, Portainer CE bietet Kubernetes-Unterstützung. Fügen Sie Ihre Umgebung über Environments → Add Environment → Kubernetes hinzu, indem Sie Ihre kubeconfig-Datei hochladen oder einen Agent installieren. Sie können Namespaces, Deployments, Services, Ingresses und Pods über die Weboberfläche verwalten.

Verwandte Artikel

NetzwerkverkehrEingehend GbpsAusgehend Gbps