前言
排查Docker容器问题时,日志是定位故障最重要的依据。日常调试我们大多依赖 docker logs 命令,来回切换终端、反复敲参数,多容器同时排错时操作繁琐,查看、筛选、对比日志都很不方便。
搭建ELK、Loki这类完整日志栈又过于重型,对于个人服务器、NAS、小规模自建服务来说太重,维护成本高。
Dozzle就是为此而生的轻量开源日志工具,无需数据库、不持久化存储日志,直接流式读取Docker原生日志,通过Web网页即可实时查看、搜索、过滤各个容器输出。体积小巧、部署简单,还支持分屏对比日志、网页端进入容器终端、多主机Agent集中监控。
本文完整讲解Dozzle部署、身份认证、Shell开启,搭配cpolar内网穿透实现外网访问,帮你摆脱命令行,网页端搞定容器日志排查。
1.什么是Dozzle?
Dozzle是一款开源、轻量、Web端Docker实时日志查看工具,Go语言开发,镜像仅7‑10MB,不需要数据库、不持久化保存日志,直接流式读取Docker守护进程的实时输出,把原本终端的docker logs搬到浏览器页Dozzle。
它定位是现场实时排错工具,不是长期日志存储系统,适合个人服务器、NAS、小主机、开发调试场景,替代反复敲命令看日志的操作。
✨核心能力
- 实时日志流:WebSocket/SSE流式输出,浏览器实时看容器stdout/stderr日志,支持关键词、正则过滤搜索日志。
- 分屏多容器:一个页面同时打开多个容器日志,对比排查多个服务问题。
- 网页Shell终端:浏览器直接exec进入容器内部,不用SSH登录服务器。
- 多主机Agent模式:一台Dozzle面板,集中查看多台服务器上所有Docker容器日志GitHub。
- 基础容器操作:网页直接启动 / 停止 / 重启容器,查看CPU、内存指标。
- 身份认证:支持账号密码登录,防止外网裸暴露风险。
- 告警 Webhook:匹配到错误日志,可以推送告警。
📌工作原理
Dozzle挂载宿主机/var/run/docker.sock,调用Docker API实时拉取日志流,日志只在浏览器内存流转,不会写入磁盘保存历史日志;容器重启之后,之前历史日志无法回看,只看当下实时输出稀土掘金。
⚠️重点区分:
- Dozzle:实时查看,不存日志,轻量,适合调试排错
- Loki / ELK:日志持久化存储,保存历史日志,资源开销大,适合生产长期留存日志
🎯适用场景
✅ 个人小主机、fnOS飞牛NAS、家庭实验室、开发调试 ✅ 不想部署重型日志栈,只想快速看容器报错 ✅ 需要多人协同看日志,不想给别人服务器SSH权限
❌ 不适合:需要长期归档、回溯几天前历史日志的生产环境。
2.前提条件
2.1ssh远程连接到极空间
- 开启【SSH 服务】
- 使用终端(Windows PowerShell / Mac Terminal)登录:
ssh root@IP
没有ssh的小伙伴可以参考这篇文章:
连接成功:极空间别再吃灰了!开启SSH,秒变全能服务器! – cpolar 极点云官网
2.2验证docker是否开启
使用命令:
docker -v
systemctl status -v
没有docker的小伙伴可以参考这篇文章:极空间开箱实录:从拆箱到远程访问保姆级教程,30分钟上手! – cpolar 极点云官网
3.安装Dozzle
3.1 docker一键部署
一键拉取Dozzle镜像:
docker pull amir20/dozzle:latest
查看是否拉取成功:
docker images
手动启动镜像,端口设为8888(自定义不冲突端口):
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 8888:8080 amir20/dozzle:latest
3.2 docker-compose部署
创建并编辑 docker-compose.yml文件:
vi docker-compose.yml
services:
dozzle:
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "8080:8080"
restart: unless-stopped
启动容器:
docker-compose up -d
验证docker容器是否启动成功:
docker ps
部署完成后,在浏览器中输入 http://极空间IP:8888 就能看到Dozzle的界面:
4.使用Dozzle
Dozzle的Web主界面,通过浏览器访问192.168.50.214:8888进入,左侧导航栏可快速切换各个容器,页面直观展示宿主机CPU、内存实时状态以及本机全部10个Docker容器,表格内清晰罗列每个容器的运行状态、创建时间、CPU与内存资源占用情况,无需登录服务器终端,在网页端就可以浏览主机概况并快速点开对应容器查看实时日志。
点击左侧容器名称,即可查到它的日志:
Dozzle的多容器分屏日志查看界面,左侧为容器导航列表,主区域同时实时混合展示dozzle、outline‑redis、linkding多个容器的日志流,不同容器日志用不同颜色标签区分,每条日志携带精确时间戳,能直观看到Redis持久化保存日志与linkding服务的健康检查请求输出,页面右上角还实时展示服务器网速、CPU与内存占用,无需执行docker logs命令,浏览器就可以同时观察多个容器实时输出,方便多服务联动故障排查。
点击右上角铃铛图标即可进入通知告警配置页面,页面分为目标与警报两大模块,可以添加通知接收目标,配置日志关键词触发的告警规则,支持对容器日志异常进行监控,匹配到报错日志后向外推送消息,当前尚未配置任何通知目标与告警规则。
添加告警通知目标的弹窗界面,当前选中HTTP Webhook类型,支持对接Slack、Discord或自定义接口,也可选择Dozzle Cloud实现邮件、AI摘要推送;页面可填写通知名称、Webhook回调地址,提供Slack、Discord、ntfy、自定义多种消息Payload格式,下方支持使用Go模板语法自定义告警消息内容,用来把容器异常日志推送至第三方消息平台。
设置页面,用于自定义日志界面外观与程序选项,上方显示板块可开启或关闭紧凑模式、时间戳、日志断行等功能,支持自定义时间格式、调整字体大小,右侧提供日志样式实时预览;下方选项区域可以设置界面语言、深浅颜色主题,配置容器跳转、分组规则、快捷键搜索、是否展示已停止容器等参数,修改后右侧预览区会实时生效。
创建警报弹窗界面,可设置告警名称,支持日志告警、指标告警、事件告警三种类型,通过容器筛选器匹配linkding容器,再利用日志筛选器编写条件,监控日志中level为error且message包含timeout的报错内容,最后选择已配置好的通知目标,即可在容器输出对应异常日志时触发推送,图中提示尚未配置通知目标,需要先添加告警接收目标才能完成告警创建。
借助cpolar内网穿透,我们可以把本地部署的Dozzle日志工具安全暴露至公网,无需公网IP、不用配置路由器端口映射,即可随时随地在外网浏览器访问Dozzle页面,远程查看、监控Docker容器实时日志,还能使用告警、多容器分屏查看等全部能力,实现跨网络环境下对容器服务的远程运维排查。
5.安装cpolar实现随时随地开发
5.1 什么是cpolar?
cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。
5.2 部署cpolar
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh
安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar
Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。
6.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
- 隧道名称:可自定义,本例使用了:dozzle,注意不要与已有的隧道名称重复
- 协议:http
- 本地地址:8888
- 域名类型:随机域名
- 地区:选择China Top
创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。
访问成功。
7.保留固定公网地址
使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。
点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是dozzle,大家可以自定义。填写备注信息,点击保留。
登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新
更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。
最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。
总结
日常排查Docker容器问题,反复敲docker logs命令效率很低,Dozzle是一款轻量开源的Docker日志Web工具,部署简单、资源占用小。它把所有容器日志搬到浏览器网页,支持单容器查看、多容器分屏同时监控日志流,不同容器日志颜色区分,自带时间戳、日志换行、字体样式等显示自定义功能;内置告警通知能力,通过 Webhook 对接第三方平台,日志匹配到报错关键词自动推送告警。搭配cpolar内网穿透,无需公网IP,不用折腾路由器端口转发,就可以外网远程访问Dozzle网页,随时随地查看容器实时日志,完成远程故障排查,大幅简化Docker日常运维工作。
感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站






























