Docker-Verwaltung mit Portainer: Webbasierte Container-Kontrolle
Portainer CE Installation, Docker- und Kubernetes-Verwaltung, Stack-Deployment, Volume/Netzwerk-Verwaltung, Benutzerautorisierung, Webhook und GitOps-Integration.
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
# Volume zum Speichern von Portainer-Daten erstellen
docker volume create portainer_data
Portainer CE installieren
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
# 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:
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:
# 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
- Stacks → Add Stack
- Stack-Namen eingeben
- Docker Compose-Inhalt einfügen oder Git-Repository-URL eingeben
- Umgebungsvariablen hinzufügen
- Auf Deploy the stack klicken
# 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
- Option Repository beim Erstellen eines Stacks auswählen
- Git-URL eingeben:
https://github.com/user/repo - Branch und Compose-Dateipfad angeben
- GitOps updates für automatische Updates aktivieren
Container-Verwaltung
Container-Operationen
# 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)
# Containers → Auf Container-Namen klicken
# Console-Tab → Connect
# Shell auswählen: /bin/bash oder /bin/sh
Benutzer- und Team-Verwaltung
Benutzer erstellen
- Settings → Users → Add User
- Benutzername und Passwort festlegen
- Rolle zuweisen: Administrator oder Standard User
Teams erstellen
# Settings → Teams → Add Team
# Team-Name: developers
# Mitglieder hinzufügen: benutzer1, benutzer2
Automatische Updates mit Webhooks
# 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)
# 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
# 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.
Verwandte Artikel
Coolify Installation: Anwendungs-Deployment mit Self-Hosted PaaS
Coolify-Installation, Docker- und Git-Integration, Anwendungs-Deployment, Datenbankverwaltung, SSL-Zertifikate, Umgebungsvariablen und Self-Hosted PaaS als Alternative zu Heroku/Netlify.
Nextcloud Installation: Self-Hosted Cloud-Speicher und Zusammenarbeit
Nextcloud-Installation mit Docker, Apache/Nginx-Konfiguration, Datenbankeinrichtung, SSL-Zertifikat, Dateisynchronisierung, App-Store und Leistungsoptimierung.
Uptime Kuma Installation: Self-Hosted Uptime-Monitoring
Uptime Kuma Installation mit Docker, HTTP/TCP/DNS/Ping-Monitoring, Benachrichtigungsintegrationen (Telegram, Discord, E-Mail), Status-Page-Erstellung und Alert-Konfiguration.