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

Inhaltsverzeichnis

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.