Dozzle
Dozzle — przeglądarkowy podgląd logów Docker w real-time. Łączy się z Docker API, streamuje logi, nic nie zapisuje, tylko wyświetla. Obraz ~7 MB, RAM <30 MB.
Tryb hub-agent: hub na jednym hoście, agenty na pozostałych. Komunikacja zabezpieczona wspólnym sekretem (DOZZLE_AUTH_SECRET). Regex w wyszukiwaniu, merged view z wielu kontenerów, grupowanie po Compose.



Konfiguracja
graph LR
U[Przeglądarka] --> H[Dozzle Hub<br/>mini-1.lan:8048]
H -->|socket| D1[Docker Engine<br/>mini-1]
H -->|TCP 7007| A1[Dozzle Agent<br/>nas-1.lan]
H -->|TCP 7007| A2[Dozzle Agent<br/>mini-2.lan]
A1 -->|socket| D2[Docker Engine<br/>nas-1]
A2 -->|socket| D3[Docker Engine<br/>mini-2]
Hub — mini-1.lan
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
restart: unless-stopped
ports: [8048:8080]
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
DOZZLE_REMOTE_AGENT: "nas-1.lan:7007,mini-2.lan:7007"
DOZZLE_AUTH_SECRET: tajny-klucz-wspoldzielony
labels:
homepage.group: Tools
homepage.name: Dozzle
homepage.icon: "dozzle.svg"
homepage.href: "http://mini-1.lan:8048/"
homepage.target: _self
homepage.weight: -100
com.centurylinklabs.watchtower.enable: true
DOZZLE_REMOTE_AGENT — lista agentów host:port. Labele Homepage jak w poprzednim wpisie .
Agent
Ten sam obraz, command: agent — bez UI, tylko proxy logów na porcie 7007.
# nas-1.lan/agents/docker-compose.yml
services:
dozzle-agent:
image: amir20/dozzle:latest
container_name: dozzle-agent
command: agent
restart: unless-stopped
ports: [7007:7007]
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
DOZZLE_HOSTNAME: nas-1.lan
DOZZLE_AUTH_SECRET: tajny-klucz-wspoldzielony
labels:
com.centurylinklabs.watchtower.enable: true
DOZZLE_HOSTNAME — warto ustawić, bo domyślnie to ID kontenera.