再也不用敲docker logs,Dozzle把容器日志搬上网页

前言

排查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、小主机、开发调试场景,替代反复敲命令看日志的操作。

✨核心能力

  1. 实时日志流:WebSocket/SSE流式输出,浏览器实时看容器stdout/stderr日志,支持关键词、正则过滤搜索日志。
  2. 分屏多容器:一个页面同时打开多个容器日志,对比排查多个服务问题。
  3. 网页Shell终端:浏览器直接exec进入容器内部,不用SSH登录服务器。
  4. 多主机Agent模式:一台Dozzle面板,集中查看多台服务器上所有Docker容器日志GitHub。
  5. 基础容器操作:网页直接启动 / 停止 / 重启容器,查看CPU、内存指标。
  6. 身份认证:支持账号密码登录,防止外网裸暴露风险。
  7. 告警 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 极点云官网

image-20260522154032880

2.2验证docker是否开启

使用命令:

docker -v 
systemctl status -v

没有docker的小伙伴可以参考这篇文章:极空间开箱实录:从拆箱到远程访问保姆级教程,30分钟上手! – cpolar 极点云官网

image-20251017103712618

3.安装Dozzle

3.1 docker一键部署

一键拉取Dozzle镜像:

docker pull amir20/dozzle:latest

image-20260820152610084

查看是否拉取成功:

docker images

image-20260820152659180

手动启动镜像,端口设为8888(自定义不冲突端口):

docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 8888:8080 amir20/dozzle:latest

image-20260820152805776

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

image-20260820153000991

部署完成后,在浏览器中输入 http://极空间IP:8888 就能看到Dozzle的界面:

image-20260820153052297

4.使用Dozzle

Dozzle的Web主界面,通过浏览器访问192.168.50.214:8888进入,左侧导航栏可快速切换各个容器,页面直观展示宿主机CPU、内存实时状态以及本机全部10个Docker容器,表格内清晰罗列每个容器的运行状态、创建时间、CPU与内存资源占用情况,无需登录服务器终端,在网页端就可以浏览主机概况并快速点开对应容器查看实时日志。

image-20260820154651064

点击左侧容器名称,即可查到它的日志:

image-20260820154948818

Dozzle的多容器分屏日志查看界面,左侧为容器导航列表,主区域同时实时混合展示dozzle、outline‑redis、linkding多个容器的日志流,不同容器日志用不同颜色标签区分,每条日志携带精确时间戳,能直观看到Redis持久化保存日志与linkding服务的健康检查请求输出,页面右上角还实时展示服务器网速、CPU与内存占用,无需执行docker logs命令,浏览器就可以同时观察多个容器实时输出,方便多服务联动故障排查。

image-20260820155812992

点击右上角铃铛图标即可进入通知告警配置页面,页面分为目标与警报两大模块,可以添加通知接收目标,配置日志关键词触发的告警规则,支持对容器日志异常进行监控,匹配到报错日志后向外推送消息,当前尚未配置任何通知目标与告警规则。

image-20260820160943492

添加告警通知目标的弹窗界面,当前选中HTTP Webhook类型,支持对接Slack、Discord或自定义接口,也可选择Dozzle Cloud实现邮件、AI摘要推送;页面可填写通知名称、Webhook回调地址,提供Slack、Discord、ntfy、自定义多种消息Payload格式,下方支持使用Go模板语法自定义告警消息内容,用来把容器异常日志推送至第三方消息平台。

image-20260820161125942

设置页面,用于自定义日志界面外观与程序选项,上方显示板块可开启或关闭紧凑模式、时间戳、日志断行等功能,支持自定义时间格式、调整字体大小,右侧提供日志样式实时预览;下方选项区域可以设置界面语言、深浅颜色主题,配置容器跳转、分组规则、快捷键搜索、是否展示已停止容器等参数,修改后右侧预览区会实时生效。

image-20260820161435855

创建警报弹窗界面,可设置告警名称,支持日志告警、指标告警、事件告警三种类型,通过容器筛选器匹配linkding容器,再利用日志筛选器编写条件,监控日志中level为error且message包含timeout的报错内容,最后选择已配置好的通知目标,即可在容器输出对应异常日志时触发推送,图中提示尚未配置通知目标,需要先添加告警接收目标才能完成告警创建。

image-20260820174012530

借助cpolar内网穿透,我们可以把本地部署的Dozzle日志工具安全暴露至公网,无需公网IP、不用配置路由器端口映射,即可随时随地在外网浏览器访问Dozzle页面,远程查看、监控Docker容器实时日志,还能使用告警、多容器分屏查看等全部能力,实现跨网络环境下对容器服务的远程运维排查。

5.安装cpolar实现随时随地开发

5.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

5.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

官网在此:https://www.cpolar.com

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

image-20250725104019896

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

22e5adfaf290a17fc3384bb296055259

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

8a6698b1bf26d64ba3645827fbfb1c29

6.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:dozzle,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:8888
  • 域名类型:随机域名
  • 地区:选择China Top

image-20260820173409372

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20260820173429898

访问成功。

image-20260820173456121

7.保留固定公网地址

使用cpolar为其配置二级子域名(cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站),该地址为固定地址,不会随机变化。

image-20250918151358733

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是dozzle,大家可以自定义。填写备注信息,点击保留。

image-20260820173552750

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑。

image-20260820173622831

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20260820173659750

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20260820173708195

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20260820173723782

总结

日常排查Docker容器问题,反复敲docker logs命令效率很低,Dozzle是一款轻量开源的Docker日志Web工具,部署简单、资源占用小。它把所有容器日志搬到浏览器网页,支持单容器查看、多容器分屏同时监控日志流,不同容器日志颜色区分,自带时间戳、日志换行、字体样式等显示自定义功能;内置告警通知能力,通过 Webhook 对接第三方平台,日志匹配到报错关键词自动推送告警。搭配cpolar内网穿透,无需公网IP,不用折腾路由器端口转发,就可以外网远程访问Dozzle网页,随时随地查看容器实时日志,完成远程故障排查,大幅简化Docker日常运维工作。

感谢您对本篇文章的喜爱,有任何问题欢迎留言交流。cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站

Share:

发表回复

目录

On Key

推荐文章