Alert

이 글은 Claude Code의 도움을 받아 작성되었습니다

TL;DR

  • Dozzle은 Docker 소켓 마운트만으로 컨테이너 로그를 실시간 조회하는 경량 웹 UI
  • ELK 스택 같은 풀 옵저버빌리티 파이프라인 없이 빠르게 로그 확인 가능
  • JSON 구조화 로그에 SQL 쿼리, 로그 레벨 필터링, ntfy 알림 연동 지원
  • Docker Compose / Swarm / Kubernetes(K3s) 모두 지원

Source


1. Dozzle이 해결하는 문제

컨테이너 로그를 확인하려면 보통 docker logs를 반복 실행하거나, ELK/Grafana Loki 같은 풀스택 옵저버빌리티 파이프라인을 구축한다. 전자는 불편하고, 후자는 홈랩이나 소규모 환경에서는 과도하다.

Dozzle은 그 사이를 채우는 도구다. Docker 소켓만 마운트하면 컨테이너 로그를 웹 UI로 실시간 확인할 수 있다.


2. 핵심 기능

  • 실시간 로그 스트리밍: 컨테이너별 stdout/stderr 분리 필터링
  • 로그 레벨 색상 코딩: debug/info/warning/error를 시각적으로 구분
  • 멀티 패널 레이아웃: 여러 컨테이너 로그를 나란히 비교
  • SQL 분석: JSON 구조화 로그를 DuckDB 기반 SQL로 즉석 쿼리 (클라이언트 사이드 실행)
  • 알림 시스템: 로그 패턴 매칭, CPU/메모리 메트릭, 컨테이너 이벤트(start/stop/restart) 기반 알림
  • 알림 대상: Slack, Discord, ntfy 웹훅 지원
  • 리소스 모니터링: CPU/메모리 사용량 대시보드

3. 실행 방법

docker run -d --name dozzle \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -p 8080:8080 \
  amir20/dozzle:latest

Kubernetes에서는 환경 변수 DOZZLE_MODE=k8s를 설정하고 pod get/list/watch 권한을 부여한다.


4. Dozzle vs lazydocker

lazydocker는 터미널 TUI 기반의 Docker 관리 도구다. 로그 확인뿐 아니라 컨테이너 재시작, 삭제, 이미지 정리 등 관리 기능을 제공한다. Dozzle과 목적이 다르다.

항목Dozzlelazydocker
인터페이스웹 브라우저 UI터미널 TUI
주요 목적로그 스트리밍/조회컨테이너 전반 관리
컨테이너 제어읽기 전용 (관리 기능 없음)재시작, 삭제, 리빌드, prune
리소스 모니터링웹 대시보드ASCII 그래프 (터미널 내)
원격 접근HTTP로 네트워크 접근 가능SSH로 호스트 접속 필요
로그 분석SQL 쿼리, 레벨 필터링, 알림단순 로그 뷰어
설치Docker 이미지 실행싱글 바이너리

선택 기준

  • 여러 사람이 로그를 보거나 원격 환경 → Dozzle (웹 UI)
  • 터미널에서 직접 컨테이너를 조작하며 관리 → lazydocker (TUI)
  • 둘 다 가볍고 Go로 작성되어 있어서 함께 사용해도 충돌 없음

5. 참고 사항

  • Docker 공식 스폰서 오픈소스, DockerHub 3억+ pulls
  • Go로 작성됨, 매우 작은 리소스 풋프린트
  • Podman 지원은 제한적 (소켓 설정 차이)
  • 유료 클라우드 옵션에서 AI 로그 요약, 이메일/Telegram 알림 등 추가 기능 제공