默认镜像基于 scratch,容器内没有 shell,需要 shell 时改用 alpine 变体;必须挂载 /var/run/docker.sock 才能读到日志;默认监听 8080 端口,且默认开启 Google Analytics,可用 --no-analytics 关闭。
dozzle
amir20MIT活跃维护轻量级容器日志实时查看器,浏览器里就能看 Docker、Swarm 和 K8s 容器的日志流,不用登录服务器翻命令行。
Realtime log viewer for containers. Supports Docker, Swarm and K8s.
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -v dozzle_data:/data -p 8080:8080 amir20/dozzle:latestREADME 未说明显存或 GPU 要求;以容器形式运行,需能访问 Docker socket,Docker Engine 19.03+(API 1.40+),也支持 Podman 与 Colima。
轻量级 Web 实时容器日志查看器,不存日志,直接看 Docker、Swarm、K8s 容器输出
轻量级容器日志实时查看器,浏览器里就能看 Docker、Swarm 和 K8s 容器的日志流,不用登录服务器翻命令行。
核心能力
- 挂载 Docker socket 实时流式查看容器日志
- 支持正则与 SQL 查询过滤日志
- 分屏同时查看多个容器日志
- 显示容器 CPU 与内存实时统计
- Agent 模式集中监控多台 Docker 主机
容易踩的坑
- v11.4.2最新正式版2026-11-08 · 2026-11-08 16:10 UTC
🚀 Features
- Support private registries through a Docker config.json - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5589 (4b498)
- analytics: Report hasMCP and count MCP tool calls - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5606 (f87e3)
- icons: Add icons for Google Calendar, Ubuntu and Tiny Tiny RSS - by @PerfectSlayer in https://github.com/amir20/dozzle/issues/5595 (07290)
- mcp: Static --mcp-token for headless MCP clients - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5605 (6e6ee)
🐞 Bug Fixes
- Update readme commands to be more easily copied - by @brandonhawi in https://github.com/amir20/dozzle/issues/5603 (d5c0a)
- cloud:
- Don't resend configs of two containers sharing a name - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5609 (f18de)
- deps:
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5600 (562af)
- Update module go.yaml.in/yaml/v3 to v4 - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5602 (00185)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5607 (f76d8)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5610 (69fa8)
- docker:
- Match any value when a filter repeats a label key - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5613 (2cb2a)
- i18n:
- Shorten french uptime label - by @PerfectSlayer in https://github.com/amir20/dozzle/issues/5594 (346a9)
- k8s:
- Match any value when a filter repeats a pod label - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5612 (46326)
- logs:
- Keep loading older lines after the window trims, stop k8s reads at the window end - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5596 (2893e)
- Decorations after a trim, load-more row, k8s line cap, backfill order - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5597 (caeef)
View changes on GitHub
- v11.4.12026-11-05 · 2026-11-05 00:33 UTC
查看更新说明
🚀 Features
- cloud:
- Push container config so Cloud can show what changed - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5555 (5231a)
- Return recent healthcheck runs from inspect_container - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5568 (8d802)
- hosts:
- Keep containers labelled dev.dozzle.keep=true out of clean up - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5552 (9a5cb)
- icons:
- Add icon for Proval - by @NriotHrreion in https://github.com/amir20/dozzle/issues/5548 (ff080)
- Add icon for magpie - by @NriotHrreion in https://github.com/amir20/dozzle/issues/5554 (07555)
- Fix bentopdf alias - by @SBouchard01 in https://github.com/amir20/dozzle/issues/5566 (5a558)
- Add icons for dreeve, goaccess, crowdsec web ui, and npmplus alias - by @Kellett in https://github.com/amir20/dozzle/issues/5580 (0216d)
- inspect:
- Show networks and volumes in the inspect drawer - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5573 (1cadf)
- logs:
- Show full container name as tooltip in merged view - by @dagasji in https://github.com/amir20/dozzle/issues/5579 (b6f6b)
- Drop shared compose project prefix from names in merged view - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5581 (94a39)
- notifications:
- Group activity by day and fill out alert and destination cards - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5564 (ce8df)
- palette:
- Container actions, update awareness, scopes and ranking - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5546 (6f389)
- search:
- Offer inspect in a container's tab actions - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5572 (fe5c5)
- ui:
- ⌘↵ for primary drawer actions, show updates without actions - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5582 (c07d5)
🐞 Bug Fixes
- deps:
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5559 (c3cba)
- Update dependency entities to v9 - in https://github.com/amir20/dozzle/issues/5560 (63205)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5565 (c8397)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5570 (03a7d)
- hosts:
- Neutral wording for agent version mismatch tooltip - b
- cloud:
- v11.4.02026-10-30 · 2026-10-30 01:40 UTC
查看更新说明
🚀 Features
- alerts:
- Add update_available event for newer images - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5541 (579e0)
- auth:
- Add an update role to restrict image updates - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5531 (7f8a9)
- icons:
- Add some more icons - by @SBouchard01 in https://github.com/amir20/dozzle/issues/5517 and https://github.com/amir20/dozzle/issues/5518 (122ee)
- updates:
- Show current and new version for image updates - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5530 (0beb4)
- Add dev.dozzle.update=check to check without updating - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5540 (8f879)
- Link to release notes before updating - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5545 (e051d)
🐞 Bug Fixes
- Address review findings since v11.3.5 - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5544 (ed801)
- deps:
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5511 (270ff)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5519 (a07c6)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5542 (32ea5)
- logs:
- Read the level of Asterisk log lines - by @spizm and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5512 (271cc)
- mcp:
- Log tool gaps and container lookup from #5535 - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5538 and https://github.com/amir20/dozzle/issues/5535 (b8f9e)
- notifications:
- Close the drawer on the first Discard click - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5520 (10b0f)
- utils:
- Return independent ring buffer snapshots - by @HocVoNgThai in https://github.com/amir20/dozzle/issues/5526 (b3fc9)
- Copy the input slice in RingBufferFrom - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5529 (da4fa)
View changes on GitHub
- alerts:
- v11.3.52026-10-24 · 2026-10-24 14:18 UTC
查看更新说明
🚀 Features
- hosts:
- Configure the clean up schedule with env vars - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5479 (bbc20)
- Preview the images and volumes a clean up deletes - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5486 (3ca84)
- icons:
- Add icons for datadog, xray and trmnl - by @rolandwunderlich in https://github.com/amir20/dozzle/issues/5475 (cf32b)
- Add icons for apache-airflow - by @jjimenez05 and Arfima Dev in https://github.com/amir20/dozzle/issues/5490 (26c90)
- Add icons for slink - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5500 (e7ad3)
- k8s:
- Add a Helm chart - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5510 (b0b86)
- megaphone:
- Show what the scheduled clean up freed - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5481 (f79ae)
- Fill recent updates from Dozzle Cloud, with its verdicts - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5482 (346a4)
- notifications:
- Alert on container updates and list them in the megaphone - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5480 (f395a)
- ui:
- Column picker, uptime and disk I/O columns in the container table - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5501 (8f00b)
- Show available image updates in the megaphone - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5502 (e39ba)
- Show agents on a different version in the megaphone - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5503 (47bca)
- updates:
- Check for updates on demand from the dashboard and Cmd+K - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5505 (55a8b)
🐞 Bug Fixes
- cloud:
- Wait as long as Dozzle Cloud says after a refusal - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5485 (5df95)
- deps:
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5474 (7ba57)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5489 (bdb27)
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5491 (97247)
- hosts:
- One stacked bar for reclaimable instead of a bar per row - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5487 [(36caa)](https://github.com/amir20/dozzle/commit/36ca
- hosts:
- v11.3.42026-10-20 · 2026-10-20 19:21 UTC
查看更新说明
Sorry y'all for the back-to-back releases. We had to fix a critical bug in MCP server.
🚀 Features
- cloud:
- Match histogram and real total on the log search page - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5466 (5cc18)
- hosts:
- Clean up every host on a schedule - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5467 (54f29)
- logs:
- Copy is the default line action, group the actions menu - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5461 (5272b)
- Search similar lines, clean up the cloud search page - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5462 (a04c0)
- search:
- Hand the find query to cloud search - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5469 (7fd2f)
🐞 Bug Fixes
- cloud:
- Render plan entitlements Cloud sends instead of guessing - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5472 (a1482)
- Show the search window and total Cloud sends - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5473 (f3ab0)
- deps:
- Update all non-major dependencies - in https://github.com/amir20/dozzle/issues/5459 (7d783)
- mcp:
- ⚠️ Serve the 2026-07-28 protocol so ChatGPT can connect - by @amir20 in https://github.com/amir20/dozzle/issues/5465 (4d6ef)
- search:
- Stop the palette running hidden cloud searches - by @amir20 and Claude Opus 5.5 in https://github.com/amir20/dozzle/issues/5471 (041de)
View changes on GitHub
- cloud:
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Dozzle - dozzle.dev
Dozzle is a lightweight, web-based application for monitoring Docker logs in real time. It doesn't store any log files—it's designed purely for live log viewing.

[!NOTE] If you like Dozzle, check out
dtop, a top-like application for monitoring Docker containers. It integrates with Dozzle to link directly to container logs.
Features
- Intelligent fuzzy search for container names
- Search logs using regex
- Search logs using SQL queries
- Small memory footprint
- Split screen for viewing multiple logs
- Live stats with memory and CPU usage
- Multi-user authentication with support for forward proxy authorization
- Swarm mode support
- Agent mode for monitoring multiple Docker hosts
- Dark mode
Dozzle has been tested with hundreds of containers. However, it doesn't support offline searching. Products like Loggly, Papertrail, or Kibana are better suited for full search capabilities.
Getting Started
Dozzle is a small container (7 MB compressed). Pull the latest release with:
docker pull amir20/dozzle:latest
Running Dozzle
The simplest way to use Dozzle is to run the Docker container. Mount the Docker Unix socket with --volume to /var/run/docker.sock:
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -v dozzle_data:/data -p 8080:8080 amir20/dozzle:latest
Dozzle will be available at http://localhost:8080/.
Here is a Docker Compose example:
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:
For advanced options like authentication, remote hosts, or common questions, see the documentation at dozzle.dev.
Image Tags
Images are published to both Docker Hub and ghcr.io with identical tags.
| Tag | Description |
|---|---|
latest | Most recent release. Recommended for most users. |
v10.6.15 | An exact release. Pin this for reproducible deployments. |
v10.6 | Latest patch within that minor version. Picks up bug fixes only. |
v10 | Latest release within that major version. Picks up new features too. |
alpine | Same as latest, but on an Alpine base instead of scratch. |
v10.6.15-alpine, v10.6-alpine, v10-alpine | Alpine variants of the version tags above. |
main | Built from the main branch on every push. Unreleased and unstable. |
pr-1234, pr-1234-alpine | Built from pull request #1234, for testing a fix before it ships. |
The default images are built FROM scratch and contain only the Dozzle binary, which is why they are around 7 MB compressed. That also means there is no shell inside them. Use the alpine variants only if something in your setup needs one, most commonly platforms that bind-mount a #!/bin/sh wrapper over the container entrypoint such as Unraid's per-container Tailscale toggle. See the FAQ for details.
Avoid latest and main in production. latest moves on every release and main is unreleased code.
Swarm Mode
Dozzle works with Docker Swarm. You can run Dozzle as a global service:
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
See the Swarm Mode documentation for more details.
Agent Mode
Dozzle can monitor multiple Docker hosts. Run Dozzle in agent mode with:
docker run -v /var/run/docker.sock:/var/run/docker.sock -p 7007:7007 amir20/dozzle:latest agent
See the Agent Mode documentation for more details.
Technical Details
Dozzle uses automatic API negotiation, which works with most Docker configurations. Dozzle also works with Colima and Podman.
Dozzle requires Docker Engine 19.03 or newer (API version 1.40+). Older daemons are not supported by the underlying Docker SDK.
Installation on Podman
By default, Podman doesn't have a background process, but you can enable the remote socket for Dozzle to work.
First, verify if your Podman installation has the remote socket enabled:
podman info
If you see output like this under the remote socket key, it's already enabled:
remoteSocket:
exists: true
path: /run/user/1000/podman/podman.sock
If it's not enabled, follow this tutorial to enable it.
Once the Podman remote socket is enabled, you can run Dozzle:
podman run --volume=/run/user/1000/podman/podman.sock:/var/run/docker.sock -d -p 8080:8080 docker.io/amir20/dozzle:latest
Nothing else is needed. Dozzle works out a stable host id for Podman on its own, since Podman is daemonless and has no engine identity to report.
[!NOTE] Older versions of this page told you to create a
/var/lib/docker/engine-idfile to preventhost not founderrors. That never worked. Podman's Docker-compatible/infoendpoint does not read any file, it returns a new random UUID on every call, so Dozzle now derives the id instead. You can delete the file.
For more details, see Podman Info or the FAQ.
Security
Dozzle supports file-based authentication and forward proxy authentication with tools like Authelia. See the documentation at https://dozzle.dev/guide/authentication.
Analytics
Dozzle collects anonymous user configurations using Google Analytics. Why? Dozzle is an open source project with no funding, so there's no time for formal user studies. Analytics help prioritize features and fixes based on how people use Dozzle. This data is completely public and can be viewed live on the Data Studio dashboard.
To disable analytics, use the --no-analytics flag.
Environment Variables and Configuration
Dozzle follows the 12-factor model. Configuration can be done via CLI flags or environment variables. See the documentation at dozzle.dev/guide/supported-env-vars for more details.
Support
There are many ways to support Dozzle:
- Use it! Write about it! Star it! If you love Dozzle, drop me a line and tell me what you love.
- Blog about Dozzle to spread the word. If you're good at writing, send PRs to improve the documentation at dozzle.dev.
- Sponsor my work at https://www.buymeacoffee.com/amirraminfar
License
Building
Want to contribute? Great! Dozzle has two parts: a Go backend that talks to Docker, and a Vue frontend that runs in the browser. You don't need to know both — pick the side that matches what you want to change. For documentation fixes, no setup is needed at all; just edit the file on GitHub.
1. Install the prerequisites
You'll need Go (1.25+), Node.js, Bun, and protoc.
On macOS, you can install everything in one go:
brew install go node oven-sh/bun/bun protobuf
On Linux (Debian/Ubuntu):
sudo apt install golang nodejs protobuf-compiler
curl -fsSL https://bun.com/install | bash
On Windows, we recommend using WSL2 and following the Linux instructions.
2. Clone and set up
git clone https://github.com/amir20/dozzle.git
cd dozzle
bun install # installs frontend dependencies
go install tool # installs Go build tools listed in go.mod (air, protoc-gen-go, etc.)
make generate # generates TLS certificates and protobuf code (only needed once)
3. Start the dev server
make dev
Open http://localhost:3100 — you should see the Dozzle UI connected to your local Docker. Both the frontend and backend reload automatically when you save a file.
Making your first change
Try editing assets/pages/index.vue and saving — the browser updates instantly. For backend changes, edit any .go file and the server will restart on its own.
Troubleshooting
- Nothing shows up at localhost:3100 — make sure Docker is running and the socket is accessible at
/var/run/docker.sock. make generatefails — confirmprotocis on your PATH (protoc --version).- Still stuck? Open a question in GitHub Discussions — we're happy to help.
Adding App Icons
Dozzle shows a logo next to containers whose image it recognizes. Icons are vendored from homarr-labs/dashboard-icons into assets/icons/apps/, and matching happens in assets/utils/appIcons.ts.
The repo ships an add-app-icon skill in .claude/skills/. To add icons with an AI coding agent, paste this prompt and fill in the images:
Use the add-app-icon skill in .claude/skills/add-app-icon/SKILL.md to add app icons
for these container images: <image1>, <image2>