====== Portainer Housekeeping ====== Dieser Artikel beschreibt die regelmäßige Wartung und Fehleranalyse für **Portainer**. Ziel: Tote Endpoints vermeiden, Logs im Griff behalten, Plattenplatz sichern und stabile Funktion sicherstellen. ===== 1. Environments prüfen ===== Portainer verwaltet Umgebungen („Environments“) → jede zeigt auf einen Docker-Socket oder eine Remote-API. * Menü: **Environments** * Prüfen, ob „Local“ vorhanden ist: * Typ: **Local** * Endpoint: `unix:///var/run/docker.sock` * Tote Einträge (z. B. alte Hosts mit IP:2376) → **löschen** oder **deaktivieren** * Tipp: sprechende Namen vergeben („docker-mash“, „cluster-node1“) ==== CLI-Check ==== # Test: Local Docker-Socket erreichbar? curl --unix-socket /var/run/docker.sock http://localhost/_ping # OK → pong ===== 2. Docker-Socket korrekt mounten ===== In `docker-compose.yml` für Portainer muss enthalten sein: volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data → ohne diesen Mount funktioniert „Local environment“ nicht. ===== 3. Snapshots und Polling ===== Portainer pingt die Environments regelmäßig (Container-Snapshot, Healthcheck). * Menü: **Settings → Snapshots** * Intervalle anpassen (z. B. 5–15 min statt 1 min) * Snapshot für inaktive/tote Environments deaktivieren ===== 4. Logs im Blick ===== Vollgelaufene Container-Logs führen zu „Platte 100 %“ und Fehlermeldungen. ==== Container-Logs begrenzen ==== Im Compose jedes Dienstes: logging: driver: json-file options: max-size: "50m" max-file: "5" ==== Offene gelöschte Dateien prüfen ==== lsof +L1 | head -n 20 → zeigt Prozesse mit „gelöschten, aber noch offenen“ Dateien. ===== 5. Disk Usage überwachen ===== df -h /var/lib/docker /var/run df -i /var/lib/docker # Inodes docker system df docker system df -v ===== 6. Typische Fehlerbilder ===== * **„Failed to find local environment“** → Local Socket nicht gemountet / falsche Rechte / Environment gelöscht * **„connect: connection refused 193.197.168.21:2376“** → Remote Docker-API down oder Host nicht erreichbar * **„no route to host“** → Firewall/VPN/Netzwerkproblem * **„cannot find webhook by containerId“** → Container entfernt, DB-Eintrag verwaist → Stack neu deployen ===== 7. Aufräumen & Pflege ===== Regelmäßig: # unbenutzte Images, Container, Netzwerke, Volumes docker system prune -af --volumes * Vorher prüfen: **Achtung** löscht auch gestoppte Container und nicht genutzte Volumes. ===== 8. Absicherung ===== * Portainer selbst hinter **Traefik/HTTPS** betreiben * Zugriff nur aus internen Netzen oder via VPN * Admin-Account mit 2FA absichern ===== 9. Backup ===== * Persistente Daten liegen in `portainer_data` * Backup reicht: Volume oder `/opt/stacks/portainer/` + Daten sichern * Restore: neues Portainer-Container mit altem Volume starten ===== 10. Checkliste „Fehlerfall“ ===== - [ ] Ist die Platte voll? (`df -h`) - [ ] Sind alte Environments noch eingetragen? - [ ] Ist der Docker-Socket gemountet? - [ ] Funktioniert `curl --unix-socket ... _ping`? - [ ] Snapshot-Intervall zu klein? - [ ] Offene gelöschte Logs (`lsof +L1`)?