Dozzle installieren: Docker-Logs live im Browser mit Docker Compose
Dozzle zeigt Docker-Container-Logs live im Browser, ganz ohne Log-Persistenz und mit einem rund 7 MB kleinen Image. Diese Anleitung erklärt die Docker-Compose-Installation, Suche per Regex und SQL, Swarm- und Agent-Modus für mehrere Hosts sowie die nötigen Sicherheitsmaßnahmen für den Docker-Socket.

Wer mehrere Docker-Container betreibt, kennt die Kette aus docker logs -f container1, Terminal wechseln, nächster Container. Ein zentraler Log-Viewer im Browser spart diesen Aufwand. Dozzle ist eine der schlankesten Lösungen im Docker-Ökosystem, aktueller Stand v10.7.4 vom 23. August 2026.
Wann Dozzle die richtige Wahl ist
Dozzle deckt einen konkreten Fall ab: Live-Logs mehrerer Container im Browser, ohne eine schwergewichtige Logging-Plattform. Typische Situationen für den Einsatz:
- Kleine bis mittlere Docker-Umgebungen, wo ELK oder Grafana Loki überdimensioniert wäre
- Homelab- und Selfhosting-Setups mit mehreren Containern
- Debugging während der Entwicklung mehrerer gleichzeitig laufender Services
- Docker-Swarm-Cluster, bei denen Logs über mehrere Knoten verteilt anfallen
- Mehrere physisch getrennte Docker-Hosts, die zentral überwacht werden sollen
- Teams, die eine einfache Multi-User-Anmeldung für den Log-Zugriff benötigen
Wer Logs dauerhaft archivieren, Volltextindizes über Monate aufbauen oder Alerting über historische Daten fahren will, braucht Grafana Loki, Elasticsearch oder einen kommerziellen Log-Aggregator. Dozzle ist kein Ersatz dafür.
Was Dozzle ist und wie es funktioniert
Dozzle ist Open Source, in Go geschrieben, mit Vue-Frontend, entwickelt von Amir Raminfar unter der MIT-Lizenz. Auf GitHub zählt das Repository aktuell rund 14.200 Sterne, deutlich mehr als frühere Schätzungen von rund 6.000.
Der Kern liest Container-Logs direkt über die Docker-API und streamt sie live in den Browser. Es gibt keine Log-Persistenz: Dozzle zeigt nur, was Docker gerade liefert. Nach einem Neustart mit rotierten Logs sind ältere Einträge weg, sofern Docker sie nicht vorhält.
Unterstützt werden Docker Engine ab Version 19.03 (API 1.40 aufwärts), Docker Swarm sowie Kubernetes über DOZZLE_MODE=k8s seit Version 8.11. Auch Colima und Podman funktionieren, bei Podman ist zusätzlich die Aktivierung des Remote-Sockets nötig.
Image-Größe und Varianten
Ein zentrales Argument ist die Image-Größe. Laut README ist das Standard-Image rund 7 MB komprimiert, gebaut FROM scratch mit nur der Go-Binary, ohne Betriebssystem oder Shell. Wer eine Shell benötigt, etwa für einen /bin/sh-Wrapper über den Entrypoint, kann auf die Alpine-Variante ausweichen.
| Tag | Basis | Einsatzzweck |
|---|---|---|
latest | scratch, ca. 7 MB | Neuester Release, für Produktion nicht empfohlen |
v10.7.4 | scratch, ca. 7 MB | Exakte Version, reproduzierbar |
v10 | scratch, ca. 7 MB | Neueste Version der Hauptversion |
alpine | Alpine, etwas größer | Mit Shell, für Sonderfälle wie Unraid-Wrapper |
master | scratch, ca. 7 MB | Unveröffentlicht, nicht für Produktion |
Docker-Compose-Installation Schritt für Schritt
Die folgende Compose-Datei folgt dem offiziellen Getting-Started-Beispiel aus dem README.
services:
dozzle:
container_name: dozzle
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- dozzle_data:/data
ports:
- 8080:8080
volumes:
dozzle_data:
Vorgehen:
- Ordner anlegen, zum Beispiel
mkdir dozzle && cd dozzle - Datei
docker-compose.ymlmit obigem Inhalt erstellen - Container starten mit
docker compose up -d - Dozzle im Browser unter
http://server-ip:8080aufrufen
Für einen schnellen Test ohne Compose-Datei reicht auch der direkte docker run-Befehl aus der offiziellen Dokumentation:
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -v dozzle_data:/data -p 8080:8080 amir20/dozzle:latest
Sicherheitswarnung: Der Docker-Socket ist keine Kleinigkeit
Wer /var/run/docker.sock mountet, gibt dem Container potenziell vollen Zugriff auf den Docker-Daemon. Ein kompromittiertes Dozzle könnte theoretisch Container starten oder auf den Host durchbrechen. Wichtige Maßnahmen:
- Socket read-only mounten:
/var/run/docker.sock:/var/run/docker.sock:ro. Dozzle schreibt laut Dokumentation nicht auf den Daemon, sondern liest nur. - Dozzle nicht ungeschützt im Internet exponieren, sondern hinter einem Reverse-Proxy mit Auth betreiben
- Bei Multi-Host-Szenarien den Agent-Modus statt eines exponierten Remote-Sockets nutzen
- Wo kein Agent möglich ist, einen Docker-Socket-Proxy wie
tecnativa/docker-socket-proxyvorschalten - Zugriff auf die Weboberfläche zusätzlich per
DOZZLE_AUTH_PROVIDERabsichern
Agent-Modus und Socket-Proxy als sicherere Alternativen
Für mehrere Docker-Hosts bietet Dozzle zwei Wege: den klassischen Remote-Host-Zugriff über TLS-Docker-API oder den empfohlenen Agent-Modus. Der Agent-Modus ist laut Dokumentation meist vorzuziehen, weil die Verbindung privat und selbstsigniert zwischen den Dozzle-Instanzen läuft und keine Docker-API extern exponiert wird.
Ein Agent startet auf dem Zielhost mit dem Unterbefehl agent:
services:
dozzle-agent:
image: amir20/dozzle:latest
command: agent
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- 7007:7007
Die zentrale Instanz verbindet sich per DOZZLE_REMOTE_AGENT mit einem oder mehreren Agenten:
services:
dozzle:
image: amir20/dozzle:latest
environment:
- DOZZLE_REMOTE_AGENT=agent-host:7007
ports:
- 8080:8080
Ein Docker-Socket-Proxy lässt sich laut Dokumentation nicht zusätzlich vor einen Agent schalten, Agenten ersetzen die Proxy-Funktion. Wer klassisches Remote-Host nutzt, kann alternativ tecnativa/docker-socket-proxy einsetzen, der ohne TLS-Zertifikate, aber mit eingeschränkten, rein lesenden Endpunkten arbeitet. Auch ein Socket-Proxy exponiert die Docker-API dem Netzwerk und muss abgesichert werden.
| Kriterium | Agent-Modus | Remote-Host per TLS |
|---|---|---|
| Sicherheit | Private, selbstsignierte TLS-Verbindung | Erfordert eigene Zertifikatsverwaltung oder unsicher ohne TLS |
| Performance | Besser bei verteilter Last | Schwächer in der Oberfläche |
| Rechteumfang | Voller Docker-Zugriff des Agents | Kann per Socket-Proxy eingeschränkt werden |
| Wiederverbindung | Automatisch | Erfordert UI-Neustart |
Funktionsüberblick: Suche, Swarm-Support und Authentifizierung
Neben der Live-Ansicht bringt Dozzle laut Dokumentation mit:
- Fuzzy-Suche über Container-Namen
- Volltextsuche per regulärem Ausdruck
- SQL-Engine für strukturierte Log-Abfragen
- Split-Screen für mehrere Container-Logs
- Live-Statistiken zu Speicher- und CPU-Nutzung
- Mehrbenutzer-Auth inklusive Forward-Proxy-Auth, etwa mit Authelia
- Nativer Swarm-Modus
- Agent-Modus für Multi-Host
- Dunkles Farbschema
Für Swarm lässt sich Dozzle als globaler Service ausrollen:
docker service create --name dozzle --env DOZZLE_MODE=swarm --mode global --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock -p 8080:8080 amir20/dozzle:latest
Für Mehrbenutzer-Anmeldung bietet Dozzle einen dateibasierten Auth-Provider, aktiviert über DOZZLE_AUTH_PROVIDER=simple. Benutzer stehen in users.yml, der Passwort-Hash lässt sich per Dozzle-Binary erzeugen:
docker run -it --rm amir20/dozzle generate admin --password meinPasswort --email admin@example.com --name "Admin"
Dozzle nutzt inzwischen Bcrypt statt des früher schwächeren SHA-256. Bestehende Installationen sollten Hashes mit generate neu erzeugen.
Grenzen von Dozzle
Dozzle deckt nicht jeden Logging-Fall ab:
- Dauerhafte Archivierung von Logs über Wochen oder Monate
- Volltextsuche über historische, bereits rotierte Logs
- Komplexes Alerting auf Basis von Logmustern über längere Zeiträume
- Zentrale Log-Aggregation aus nicht-containerisierten Systemen
Dafür eignet sich Grafana Loki mit Promtail, das Logs dauerhaft speichert und durchsuchbar macht.
Erste Prüfung und Maßnahmen vor dem Produktiveinsatz
Checkliste vor dem produktiven Einsatz:
- Version prüfen:
docker exec dozzle dozzle --version, aktuell v10.7.4 - Statt
latesteine feste Version wiev10.7.4pinnen - Docker-Socket wo möglich read-only mounten
- Port 8080 per Firewall oder Reverse-Proxy einschränken
- Auth über
DOZZLE_AUTH_PROVIDER=simpleoder Forward-Proxy-Auth aktivieren - Bei mehreren Hosts Agent-Modus statt offener Remote-API bevorzugen
Passende Anleitungen auf S-EDV
- Uptime Kuma installieren: Monitoring mit Docker und Nginx Proxy Manager
- Logs zentralisieren mit Grafana Loki
- Beszel Server Monitoring mit Docker einrichten