查看服务器上docker的日志,方法有很多种,比较复杂的是使用ELK,比较容易的方案有Portainer和Dozzle。
想要通过 Web 页面查看多台 Docker 容器的日志,有不少适配不同场景的开源项目,既有轻量易部署的单工具,也有适合大规模场景的日志集群方案,以下是具体推荐:
- 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… 。
- 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… )。
- log-pilot + Kibana
该组合适合需要将容器日志集中存储并进行可视化分析的场景。log-pilot 是阿里云开源的容器日志采集工具,能自动检测 Docker 容器,收集标准输出日志和容器内日志文件,支持转发到 Elasticsearch、Kafka 等存储介质;搭配 Kibana 的 Web 界面,可实现日志的搜索、过滤和可视化展示。它适配主流 Docker 版本,部署后通过 Kibana 页面集中管理所有容器日志,适合对日志有存储和深度分析需求的场景。项目地址为github.com/AliyunConta… 。
- 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
访问界面
界面很美观易用!