dozzle轻量级Docker日志查看器【超详细】

2,286 阅读5分钟

官方文档:dozzle.dev/guide/authe…

git地址:github.com/amir20/dozz…

设置身份验证:dozzle.dev/guide/authe…

远程主机设置:dozzle.dev/guide/remot…

注意啊!!! 别通过这个下载大日志文件,小心榨干内存,影响服务

dozzle简介

Dozzle 是 一款基于接口来监视Docker日志的轻量级的应用,它不存储任何日志文件,而仅仅是实时监视你的容器日志。

本机启动dozzle服务

生成密码:

#安装shasum命令
yum install perl-Digest-SHA
#生成密码
echo -n 密码 | shasum -a 256
echo -n '密码' | sha256sum

users.yml

users:
  # "admin" here is username
  admin:
    name: "admin"
    # Just sha-256 which can be computed with "echo -n password | shasum -a 256"
    password: "f15c16b99f82d8201767d3a841ff40849c8a1b812ffbfd2e393d2b6aa6682a6e"
    email: me@email.net

启动带认证服务

docker run -d -p 9992:8080 --name dozzle --network=elk -v /var/run/docker.sock:/var/run/docker.sock -v /docker/dozzle:/data amir20/dozzle:v7.0.2 --auth-provider simple --hostname node80

设置为中文

远程windows下docker desktop

宿主机IP:192.168.50.139

开启守护进程服务端口2375(生产环境需要配置证书)

关闭防火墙

启动dozzle服务

docker run -d -p 9992:8080 --name dozzle --network=elk -v /var/run/docker.sock:/var/run/docker.sock -v /docker/dozzle:/data -e "DOZZLE_ENABLE_ACTIONS=true" -e "DOZZLE_REMOTE_HOST=tcp://192.168.50.139:2375|local" amir20/dozzle:v7.0.2 --auth-provider simple --hostname node80

远程其他linux下docker服务

服务节点: 192.168.137.81

开启守护进程服务端口2375(生产环境需要配置证书)

#编辑文件
vim /usr/lib/systemd/system/docker.service
#修改ExecStart的值,添加-H tcp://0.0.0.0:2375如下:
-H tcp://0.0.0.0:2375
#重载systemctl配置
systemctl daemon-reload
#重启 Docker
service docker restart
#查看Docker服务状态
service docker status
#开放5672端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent   
#配置立即生效
firewall-cmd --reload

启动dozzle服务

docker run -d -p 9992:8080 --name dozzle --network=elk -v /var/run/docker.sock:/var/run/docker.sock -v /docker/dozzle:/data -e "DOZZLE_ENABLE_ACTIONS=true" -e "DOZZLE_REMOTE_HOST=tcp://192.168.50.139:2375|local,tcp://192.168.137.81:2375|node81" amir20/dozzle:v7.0.2 --auth-provider simple --hostname node80

远程其他linux下docker服务(使用TLS证书)

节点规划

节点IP部署服务
192.168.137.80dozzle、go01
192.168.137.81go01
192.168.137.82go01

使用脚步生成证书(分别81和82节点进行操作)

生成证书的脚本:gitee.com/dromara/Jpo…

wget https://gitee.com/dromara/Jpom/raw/master/script/docker-tls.sh
sh docker-tls.sh

脚本只有一个输入项,输入本机IP

生成证书

开启守护进程服务端口2375并设置证书(分别81和82节点进行操作)

#编辑文件
vim /usr/lib/systemd/system/docker.service
#修改ExecStart的值,添加-H tcp://0.0.0.0:2375如下:
-H tcp://0.0.0.0:2375 --tlsverify --tlscacert=/app/tls/ca.pem --tlscert=/app/tls/server-cert.pem --tlskey=/app/tls/server-key.pem
#重载systemctl配置
systemctl daemon-reload
#重启 Docker
service docker restart
#查看Docker服务状态
service docker status
#开放5672端口
firewall-cmd --zone=public --add-port=2375/tcp --permanent   
#配置立即生效
firewall-cmd --reload

80节点上传81和82节点证书

#创建此目录,上传81节点 key.pem、ca.pem、cert.pem证书
cd /app/cert/192.168.137.81
#创建此目录,上传82节点 key.pem、ca.pem、cert.pem证书
cd /app/cert/192.168.137.82

80节点启动dozzle服务(挂载证书目录)

多个节点证书挂载,使用{host}进行区分,如dozzle容器的/certs/192.168.137.81

单个节点直接挂载在/certs下;

docker run -d -p 9992:8080 --name dozzle --network=elk -v /var/run/docker.sock:/var/run/docker.sock -v /docker/dozzle:/data -v /app/cert/192.168.137.81:/certs/192.168.137.81 -v /app/cert/192.168.137.82:/certs/192.168.137.82 -e "DOZZLE_ENABLE_ACTIONS=true" -e "DOZZLE_REMOTE_HOST=tcp://192.168.137.81:2375|node81,tcp://192.168.137.82:2375|node82" amir20/dozzle:v7.0.2 --auth-provider simple --hostname node80

查看dozzle服务

过滤容器

DOZZLE_FILTER 是一个用于过滤容器日志的选项,允许你只查看符合指定条件的容器日志。

详细说明:

  • 默认值: ""(空字符串),表示不过滤任何容器,显示所有容器的日志。
  • 作用: 通过为 DOZZLE_FILTER 传递容器名称的子字符串或正则表达式,Dozzle 会仅显示匹配该条件的容器的日志。多个条件可以通过逗号分隔。

指定容器名称筛选:

  • 过滤特定容器:DOZZLE_FILTER="nginx" 将只显示包含 nginx 的容器日志。
  • 使用多个过滤条件:DOZZLE_FILTER="nginx,redis" 可以同时显示 nginxredis 容器的日志。

通过这个选项,可以更轻松地聚焦特定容器的日志,而不是查看所有容器的输出。

结合容器标签筛选

为容器添加标签
你可以在启动容器时使用 Docker 标签(labels)来标识容器。

#使用 docker run 命令时可以指定标签
docker run -d --label app=webserver nginx
docker run -d --label app=database redis

通过标签值进行过滤:你可以在 DOZZLE_FILTER 中指定标签名和值的格式来过滤容器日志。

例如,过滤标签为 app=webserver 的容器:

#这将只显示打上 app=webserver 标签的容器(如 nginx)的日志
DOZZLE_FILTER="label=app=webserver"

多标签或条件过滤
如果你想过滤多个标签或条件,可以使用逗号分隔不同的标签或过滤条件:

#这个示例会筛选同时具有 app=webserver 和 env=production 标签的容器日志
DOZZLE_FILTER="label=app=webserver,label=env=production"

标签与容器名称混合过滤:

你还可以将基于容器名称的过滤和基于标签的过滤结合起来。例如:

DOZZLE_FILTER="nginx,label=app=database"

此命令会显示容器名称包含 nginx 的日志,以及带有 app=database 标签的容器日志

结束!!!