Dozzle Docker 日志实时查看器教程
在搬瓦工 VPS 上运行多个 Docker 容器时,日志管理是一项重要的运维工作。传统的 docker logs 命令虽然可用,但在多容器环境下操作繁琐且不够直观。Dozzle 是一款轻量级的实时 Docker 日志查看工具,它提供了美观的 Web 界面,无需数据库,资源占用极低,非常适合在搬瓦工 VPS 上部署使用。本文将详细介绍 Dozzle 的安装、配置和使用方法。
一、Dozzle 简介与特点
Dozzle 是一个用 Go 语言编写的实时 Docker 日志查看器,它通过连接 Docker Socket 来读取容器日志,并以流式方式在浏览器中展示。与 ELK、Loki 等重量级日志方案不同,Dozzle 专注于实时查看,不存储任何日志数据。
Dozzle 的主要特点包括:
- 极低资源占用:内存通常只需 10-20MB,非常适合搬瓦工小内存方案。
- 零配置启动:只需挂载 Docker Socket 即可运行,无需额外依赖。
- 实时日志流:基于 Server-Sent Events 技术,日志实时推送到浏览器。
- 多容器支持:可以同时查看多个容器的日志,支持分屏显示。
- 正则搜索:支持在日志中进行正则表达式搜索和过滤。
- 多主机监控:支持通过 Agent 模式连接远程 Docker 主机。
二、环境准备
在开始之前,请确保你的搬瓦工 VPS 满足以下条件:
- 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
- 内存不低于 256MB(Dozzle 本身占用很少)。
- 防火墙已开放相应端口(默认 8080)。
确认 Docker 运行正常:
docker --version
docker ps
三、快速部署 Dozzle
3.1 使用 Docker 命令启动
最简单的方式是直接使用 docker run 命令启动 Dozzle:
docker run -d \
--name dozzle \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-p 8080:8080 \
amir20/dozzle:latest
参数说明:
-v /var/run/docker.sock:/var/run/docker.sock:ro:以只读方式挂载 Docker Socket,让 Dozzle 能够读取容器信息和日志。-p 8080:8080:将容器的 8080 端口映射到主机。--restart unless-stopped:确保容器在意外退出后自动重启。
3.2 使用 Docker Compose 部署
推荐使用 Docker Compose 进行部署管理。创建项目目录和配置文件:
mkdir -p /opt/dozzle && cd /opt/dozzle
cat > docker-compose.yml <<'EOF'
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- DOZZLE_LEVEL=info
- DOZZLE_TAILSIZE=300
EOF
docker compose up -d
3.3 验证部署
部署完成后,在浏览器中访问 http://你的IP:8080 即可看到 Dozzle 的 Web 界面。左侧会列出所有正在运行的容器,点击任意容器即可查看其实时日志。
# 检查 Dozzle 容器状态
docker ps | grep dozzle
# 查看 Dozzle 自身日志
docker logs dozzle
四、Dozzle 配置详解
4.1 常用环境变量
Dozzle 支持通过环境变量进行配置:
DOZZLE_LEVEL:日志级别,可选 debug、info、warn、error,默认 info。DOZZLE_TAILSIZE:初始加载的日志行数,默认 300。DOZZLE_FILTER:容器过滤条件,例如name=myapp只显示指定容器。DOZZLE_HOSTNAME:在多主机模式下设置当前主机的显示名称。DOZZLE_NO_ANALYTICS:设为 true 可禁用匿名统计。
4.2 配置身份认证
在生产环境中,建议为 Dozzle 添加身份认证。首先生成用户配置文件:
# 生成密码哈希(需要安装 htpasswd 或使用 Dozzle 内置工具)
docker run amir20/dozzle:latest generate admin --password your-secure-password
# 将输出的内容保存到 users.yml 文件
cat > /opt/dozzle/users.yml <<'EOF'
users:
admin:
name: "Admin"
password: "$2a$10$生成的哈希值"
email: admin@example.com
EOF
然后更新 Docker Compose 配置以挂载用户文件:
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /opt/dozzle/users.yml:/data/users.yml
environment:
- DOZZLE_AUTH_PROVIDER=simple
docker compose up -d
五、配合反向代理使用
为了安全性,建议通过反向代理(如 Nginx Proxy Manager)为 Dozzle 配置 HTTPS 访问。修改 Compose 配置,将端口改为仅监听本地:
ports:
- "127.0.0.1:8080:8080"
然后在反向代理中将域名指向 127.0.0.1:8080,并启用 SSL 证书。这样 Dozzle 的 Web 界面只能通过 HTTPS 域名访问,而不会暴露在公网端口上。
六、多主机日志监控
如果你有多台搬瓦工 VPS,Dozzle 支持通过 Agent 模式集中查看所有主机的容器日志。在远程主机上部署 Dozzle Agent:
# 在远程主机上运行 Agent
docker run -d \
--name dozzle-agent \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-p 7007:7007 \
amir20/dozzle:latest agent
在主服务器的 Dozzle 配置中添加远程主机:
environment:
- DOZZLE_REMOTE_HOST=tcp://远程主机IP:7007|remote-vps
重启主服务器的 Dozzle 后,Web 界面中即可切换查看不同主机的容器日志。
七、日志搜索与过滤技巧
Dozzle 的 Web 界面提供了强大的搜索功能:
- 关键词搜索:直接输入关键词即可实时过滤日志。
- 正则表达式:使用
/pattern/格式进行正则搜索,例如/error|warn/i匹配所有错误和警告。 - 多容器对比:可以同时打开多个容器日志标签页,方便排查跨服务问题。
- 日志级别高亮:Dozzle 会自动识别 ERROR、WARN、INFO 等级别并进行颜色高亮。
八、常见问题
无法连接到 Docker Socket
如果 Dozzle 启动后报错提示无法连接 Docker Socket,请检查挂载路径和权限:
# 检查 Docker Socket 是否存在
ls -la /var/run/docker.sock
# 确认当前用户有权限访问
docker info
Web 界面无法访问
确认防火墙已开放 8080 端口:
# 检查端口监听状态
ss -tlnp | grep 8080
# Ubuntu/Debian 开放端口
ufw allow 8080/tcp
# CentOS 开放端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
总结
Dozzle 是一款非常适合搬瓦工 VPS 用户的 Docker 日志管理工具,它轻量、简洁、功能实用。通过本文的教程,你可以快速部署 Dozzle 并利用其 Web 界面实时监控所有容器的日志输出。如果你还没有安装 Docker,请参考 Docker 安装教程。更多 Docker 相关工具教程可以参考 LazyDocker 终端管理器 和 Ctop 容器监控。选购搬瓦工 VPS 请访问 bwh81.net,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣。