Docker überwachen
Node64 überwacht Docker-Container auf dem eigenen Host und auf entfernten Hosts – ohne Agent. Zustand, Health, Neustarts, CPU, RAM, Netz und I/O mit Verlauf, dazu Regeln und Meldungen wie bei Proxmox VE. Die Seite liegt unter Healthchecks → Docker und läuft, solange das Modul Healthchecks eingeschaltet ist.
Überblick
Für Docker gibt es zwei Wege: die Docker-Überwachung für alle Container eines Hosts – wie bei Proxmox VE – und den Check-Typ docker für einzelne Container.
Docker-Überwachung
Docker-Überwachung unter Healthchecks → Docker (/healthchecks/docker): Die Seite beginnt immer mit der Übersicht der Docker-Hosts – Kacheln und eine Tabelle mit Zustand, Containern, CPU/RAM, Bearbeiten, Aus und Löschen –, auch mit nur einem oder keinem Host. Der lokale Docker-Socket wird nicht automatisch überwacht: Erst mit Diese Maschine hinzufügen (lokaler Socket) in der Übersicht oder über das Formular Docker-Host hinzufügen kommt er dazu; danach überwacht Node64 alle Container des Hosts. Bereits eingerichtete Hosts bleiben. Weitere Hosts bindest du aus der Ferne per SSH oder TLS an.
- Alle 30 Sekunden: Zustand, Health, Neustarts, Exit-Code und OOM, CPU (bezogen auf das CPU-Limit bzw. alle Kerne), RAM ohne Page-Cache wie bei
docker stats(bezogen auf das Limit bzw. den RAM des Hosts), Netz und Block-I/O – mit Verlauf von 1 Stunde bis 30 Tage. - Störung sofort bei
unhealthy, Neustart-Schleife (3 Neustarts in 10 Minuten oder Statusrestarting), Ende mit Fehler, OOM oderdead. Beendete Container zählen nur, wenn sie laufen sollen (liefen schon einmal oder fest eingestellt); Exit-Code 0, 130 und 143 gelten als normaler Stopp. - Regeln mit Vererbung Host → Container (Störung, gestoppt, pausiert, Neustart, CPU- und RAM-Schwellen, Verzögerung), dazu Kanäle, Ruhezeiten und Wartungsfenster – wie bei Proxmox VE.
- Container-Seite mit Werten, Graphen, Labels und Regeln. Als Check führen legt zusätzlich einen Check vom Typ
dockeran (Statusseiten, Sync, Uptime); vorhandene Docker-Checks werden automatisch zugeordnet. - Das Label
node64.nomonitor=trueschließt einen Container aus. - Checks ohne Container erscheinen als „Container fehlt“. Ohne Host zeigt die Übersicht einen Einstieg und verweist auf vorhandene Docker-Checks in der Check-Liste.
- Host-Seite mit dem Namen des Hosts im Titel und einem Knopf zum Löschen; danach geht es zurück zur Übersicht. Zustand eines Hosts: in Ordnung, teilweise gestört (einzelne Container gestört) oder nicht erreichbar.
- API:
GET /api/healthchecks/docker/containersund/api/healthchecks/docker/systems/{id}/…wie bei Proxmox VE; Prometheusnode64_docker_*. Export und Import enthalten den Docker-Host. - Meldungen von Docker-Hosts tragen den Betreff „Docker: …“ und gehen über die Kanäle aus den Regeln.
Check-Typ docker
Fragt die Docker-Engine-API nach dem Zustand eines Containers. Ziel ist der Name oder die ID des Containers. Docker-Checks stehen als normale Zeilen in der Healthchecks-Liste.
Anlegen: Unter Healthchecks → Neuer Check den Typ Docker-Container wählen, dann den Docker-Host und den Container aus dem letzten Abruf – angelegt wie mit Als Check führen (Intervall, Gruppe und Kanäle aus den Regeln, Name optional), siehe Check aus einem überwachten System. Container überwachen auf der Seite eines Docker-Hosts wählt den Host gleich vor (/healthchecks/new?type=sys:docker&sys=ID). Den Containernamen von Hand einzutragen gibt es bei neuen Checks nicht mehr; vorhandene Docker-Checks bleiben bearbeitbar, API und Import sind unverändert.
| Zustand des Containers | Ergebnis |
|---|---|
| läuft | OK |
läuft mit Docker-Healthcheck healthy oder starting | OK |
Docker-Healthcheck unhealthy | gestört |
| gestoppt (mit Exit-Code, auch OOM), pausiert, Neustart-Schleife | gestört |
| nicht vorhanden | gestört |
| Docker-Socket nicht erreichbar | gestört, mit Hinweis |
| Option | Standard | Hinweis |
|---|---|---|
Docker-Host (host) | unix:///var/run/docker.sock | alternativ tcp://… oder http(s)://…; global per NODE64_DOCKER_HOST oder je Check |
| Timeout | Gesamt-Timeout des Checks (10 s) | die Containerliste hat 5 s |
Docker-Checks laufen nur auf der Node, auf der der Container läuft. Sie lassen sich weder online prüfen noch auf eine andere Node umhängen. Mit ipv64.net verknüpft wird ihr Zustand trotzdem gemeldet und ist im Portal sichtbar.
Beispiele: Vaultwarden überwacht den Container vaultwarden samt Docker-Healthcheck, Jellyfin den Container jellyfin.
Zugriff auf den Docker-Socket
Am einfachsten bindest du den Socket direkt ein. Die Gruppe des Sockets findest du mit stat -c %g /var/run/docker.sock heraus:
services:
node:
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
group_add:
- "996" # Gruppe des Sockets: stat -c %g /var/run/docker.sockWer den Docker-Socket hat, kann den ganzen Host steuern – auch mit :ro. Das schützt nur die Datei, nicht die API dahinter. Node64 sendet zwar ausschließlich lesende GET-Anfragen, aber eine Schwachstelle oder ein gestohlenes Konto hätte trotzdem vollen Zugriff. Sicherer ist ein Socket-Proxy, der nur die Container-Abfragen durchlässt.
Mit dem verbreiteten docker-socket-proxy sieht das so aus. Node64 braucht nur CONTAINERS=1, INFO=1 ist optional:
services:
socket-proxy:
image: tecnativa/docker-socket-proxy
container_name: socket-proxy
restart: unless-stopped
environment:
CONTAINERS: 1 # nur Container-Abfragen erlauben
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
# keinen Port veröffentlichen – nur Node64 im selben Netz greift zu
node:
image: ghcr.io/ipv64net/node64:latest
container_name: node64
restart: unless-stopped
depends_on:
- socket-proxy
ports:
- "8080:8080"
volumes:
- node64-data:/data
environment:
NODE64_DOCKER_HOST: tcp://socket-proxy:2375
volumes:
node64-data:Das öffentliche Node64-Image erscheint in Kürze. Den Docker-Host kannst du statt global auch je Check im Feld Docker-Host eintragen.
Docker-Hosts aus der Ferne
Neben dem lokalen Host überwacht Node64 weitere Docker-Hosts – ohne Agent. Unter Healthchecks → Docker → Docker-Host hinzufügen (/healthchecks/docker/new) wählst du die Verbindung; die Übersicht unter /healthchecks/docker zeigt Kacheln (Hosts, Container, laufend, gestört, Auslastung) und eine Tabelle aller Hosts.
| Verbindung | Adresse | Hinweis |
|---|---|---|
| SSH (empfohlen) | ssh://user@host[:port][/socket] | Node64 erzeugt einen ed25519-Schlüssel; den Host-Schlüssel bestätigst du bei Verbindung testen (SHA256:…). Weg: Socket-Weiterleitung (braucht AllowTcpForwarding im sshd), sonst automatisch docker system dial-stdio (braucht die docker-CLI auf dem Host). Der Benutzer muss in der Gruppe docker sein. |
| TLS | https://host:2376 | Docker-API mit Client-Zertifikat und -Schlüssel (cert.pem, key.pem); den Server prüft Node64 per ca.pem oder bestätigtem Fingerabdruck. |
| TCP | tcp://host:2375 | über einen docker-socket-proxy mit CONTAINERS=1 und INFO=1 – nur im LAN. |
Einrichtung per SSH – das Formular führt dich in fünf Schritten durch, mit fertigen Befehlen zum Kopieren:
- Benutzer anlegen
Auf dem Docker-Host einen Benutzer mit Zugriff auf Docker anlegen:bashsudo useradd -m -s /bin/sh node64 sudo usermod -aG docker node64 - Schlüssel erzeugen
Im Formular auf Schlüssel erzeugen klicken (ed25519). Alternativ einen eigenen privaten Schlüssel ohne Passphrase einfügen; er wird verschlüsselt gespeichert. - Schlüssel eintragen
Die angezeigten Befehle auf dem Docker-Host ausführen. Die Zeile inauthorized_keyserlaubt nur die Docker-API, keine Shell:bashNach Neuen Schlüssel erzeugen diesen Schritt wiederholen und die alte Zeile löschen.sudo mkdir -p /home/node64/.ssh echo 'restrict,command="docker system dial-stdio" ssh-ed25519 AAAA… node64' | sudo tee -a /home/node64/.ssh/authorized_keys sudo chown -R node64:node64 /home/node64/.ssh sudo chmod 700 /home/node64/.ssh sudo chmod 600 /home/node64/.ssh/authorized_keys - Verbindung testen
Benutzer und Host eintragen, Verbindung testen klicken und den angezeigten Host-Key mit der Ausgabe dieses Befehls vergleichen; stimmt er, bestätigen:bashsudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub - Speichern
Danach erscheinen die Container des Hosts.
- Zugangsdaten speichert Node64 verschlüsselt. Als Check führen nutzt bei SSH und TLS dieselbe Verbindung.
- Den lokalen Socket fügst du mit Diese Maschine hinzufügen (lokaler Socket) hinzu; Hosts bearbeiten unter
/healthchecks/docker/system/{id}/edit. - Host aus: Checks eines SSH- oder TLS-Hosts („Als Check führen“) sind pausiert, solange der Host ausgeschaltet ist. Löschen eines Hosts löscht nur diese Checks mit; andere Docker-Checks bleiben.
- Adresse ändern: Die Checks ziehen mit. Zeigt die neue Adresse auf eine andere Maschine, beginnt der Verlauf neu. Beim Wechsel der Verbindungsart gibst du Zugangsdaten und Fingerabdruck neu ein.
- SSH-Host-Schlüssel: Node64 bevorzugt Ed25519 – zum Vergleich auf dem Host
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Muss Node64 aufdocker system dial-stdioausweichen, bleibt es 10 Minuten dabei und versucht danach wieder die Socket-Weiterleitung. - API:
POST /api/healthchecks/docker/systemsmitaddresses,pin_sha256undsecret– als JSON{"key", "cert", "ca"}oder einfach der private SSH-Schlüssel als PEM.
Etwas unklar, fehlt etwas oder hast du eine Frage zu Node64? Frag im offiziellen Forum v64.tech.