使用Dozzle快速查看服务器上docker日志

60 阅读3分钟

查看服务器上docker的日志,方法有很多种,比较复杂的是使用ELK,比较容易的方案有Portainer和Dozzle。

想要通过 Web 页面查看多台 Docker 容器的日志,有不少适配不同场景的开源项目,既有轻量易部署的单工具,也有适合大规模场景的日志集群方案,以下是具体推荐:

  1. Dozzle

这是一款轻量级的 Docker 容器实时日志查看工具,专门适配单服务器多容器场景,无需复杂配置,部署即用。其镜像仅 7MB,资源占用极低,且提供直观的 Web 界面。核心功能包括实时展示容器日志与 CPU、内存使用统计,支持正则表达式和 SQL 查询日志,还能分屏同时查看多个容器日志,也提供暗黑模式提升浏览体验。部署十分简单,通过一行 Docker 命令即可启动:

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

启动后访问服务器IP:8888就能查看所有容器日志,项目地址为github.com/amir20/dozz… 。

  1. Loki + Promtail + Grafana

这是一套轻量级的日志采集 + 可视化组合方案,适合需要长期存储日志、复杂查询分析的场景,不仅能查看 Docker 容器日志,还可拓展到多服务器、K8s 集群等场景。其中 Promtail 负责采集 Docker 容器日志并推送给 Loki,Loki 负责轻量化存储日志,Grafana 提供 Web 可视化界面用于查看和分析日志。该方案支持用 LogQL 语法筛选日志,比如指定容器、筛选错误关键词等,还能制作日志统计图表和配置告警。部署后通过 Grafana 的 Web 界面(默认端口 3000)集中查看所有容器日志,适合中大型容器集群的日志管理。相关项目地址:Loki(github.com/grafana/lok… )、Grafana(github.com/grafana/gra… )。

  1. log-pilot + Kibana

该组合适合需要将容器日志集中存储并进行可视化分析的场景。log-pilot 是阿里云开源的容器日志采集工具,能自动检测 Docker 容器,收集标准输出日志和容器内日志文件,支持转发到 Elasticsearch、Kafka 等存储介质;搭配 Kibana 的 Web 界面,可实现日志的搜索、过滤和可视化展示。它适配主流 Docker 版本,部署后通过 Kibana 页面集中管理所有容器日志,适合对日志有存储和深度分析需求的场景。项目地址为github.com/AliyunConta… 。

  1. Portainer

它是一款成熟的 Docker 可视化管理平台,并非专门的日志工具,但内置了容器日志查看功能,适合需要一站式管理容器(启停、部署、日志查看)的场景。其 Web 界面简洁直观,可查看单个容器的实时日志,支持日志搜索和复制,虽然日志分析功能不如 Dozzle 专业,但胜在功能全面,能减少多工具切换成本。部署后在容器详情页即可找到日志查看入口,项目地址为github.com/portainer/p… 。

详细部署方案:

# docker-compose.yml
services:                                                                                                                            
  dozzle:                                                                                                                            
    container_name: dozzle                                                                                                           
    image: amir20/dozzle:latest                                                                                                      
    volumes:                                                                                                                    
      - /var/run/docker.sock:/var/run/docker.sock                                                                                    
      - ./data:/data                                                                                                               
    environment:                                                                                                                   
      DOZZLE_AUTH_PROVIDER: simple                                                                                               
      DOZZLE_AUTH_TTL: 48h                                                                                                          
    ports:                                                                                                                         
      - 38081:8080
# data/users.yml
users:                                                                                                                        
  admin:                                                                                                                           
    email: your@email.com                                                                                                     
    name: yourname                                                                                                                 
    password: $1111222233334444                                                       
    filter:                                                                                                                            
  guest:                                                                                                                             
    email: guest@email.com                                                                                                     
    name: guest                                                                                                                    
    password: $23454567                                                           
    filter: "name=docker-container-name" 

这里需要对users.yml进行一个说明,如果不挂载users.yml,这个dozzle服务将可以直接访问不需要用户名密码鉴权。

这里的配置信息可以使用dozzle对应的命令进行生成

docker run -it --rm amir20/dozzle:latest generate --name guest --email guest@email.com --password aguestpassword guest
docker run -it --rm amir20/dozzle:latest generate --name yourname --email your@email.com --password adminpassword admin

访问界面

image.png

界面很美观易用!