简介
Dozzle 是一个 Docker 日志查看器,它提供了一个 Web 界面,可以方便地查看 Docker 容器的日志。Dozzle 可以在任何支持 Docker 的平台上运行,包括本地机器、云服务器和容器编排平台等。Dozzle 的特点包括:
- 界面简洁美观,易于使用。
- 支持多个容器的日志查看,可以快速切换。
- 支持容器日志的实时查看,可以随时更新日志。
- 支持搜索和过滤日志,可以快速定位关键信息。
- 支持导出日志,方便进行分析和存档。
Dozzle 是一个开源工具,可以在 GitHub 上找到它的源代码和文档。
开始使用
docker
docker run --detach --volume=/var/run/docker.sock:/var/run/docker.sock -p 9999:8080 amir20/dozzle
docker-compose(推荐)
version: "3"
services:
dozzle:
container_name: dozzle
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 9999:8080
进阶功能
身份验证
Dozzle supports multi-user authentication by setting --auth-provider
to simple
. In this mode, Dozzle will try to read /data/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: "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8"
email: me@email.net
远程多服务器容器查看
先打开docker容器的远程调用
## 修改docker配置文件
vim /usr/lib/systemd/system/docker.service
## 修改如下数据
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
## 重新载入,重启docker
systemctl daemon-reload
systemctl restart docker.service
## 验证
docker -H tcp://x.x.x.x:2375 version
Remote hosts can be configured with --remote-host
or DOZZLE_REMOTE_HOST
. All certs must be mounted to /certs
directory. The /cert
directory expects to have /certs/{ca,cert,key}.pem
or /certs/{host}/{ca,cert,key}.pem
in case of multiple hosts.
version: "3"
services:
dozzle:
image: amir20/dozzle:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /path/to/certs:/certs
ports:
- 8080:8080
environment:
DOZZLE_REMOTE_HOST: tcp://167.99.1.1:2376,tcp://167.99.1.2:2376
--remote-host
supports host labels by appending them to the connection string with |
.
非docker logs日志查看
Mounting Local Log Files with Alpine
Dozzle reads any output stream. This can be used in combination with alpine to tail
a mounted file. An example of this is as follows:
version: "3"
services:
dozzle-from-file:
container_name: dozzle-from-file
image: alpine
volumes:
- /var/log/system.log:/var/log/stream.log
command:
- tail
- -f
- /var/log/stream.log
network_mode: none
restart: unless-stopped
如果你的日志文件是动态生成的,或者以当天的日期结尾的日志。但是docker-compose不支持volume直接定义变量,但是你可以使用volume或者提前定义路径的方式来使用。
Docker Compose does not support executing shell commands directly within the YAML file. To dynamically set the volume name based on the current date, you'll need to use an entrypoint script or a wrapper script.
Here's how you can achieve it:
使用内置脚本entrypoint
# 在 Docker Compose 文件中添加以下行:
entrypoint: /entrypoint.sh
# 在容器内部创建 /entrypoint.sh 脚本,该脚本可以设置环境变量并启动您的应用程序。
#!/bin/sh
export DATE=${DATE:-$(date +%Y-%m-%d)}
exec /your/app
示例参考:
1、在主机上创建dockerrunner.sh文件
export LOG_FILE="/var/DockerVolumes/log/eclouddefault/eclouddefault/dbe01ba1-d105-482b-939d-526735cf2e34/03c5e12f-6a1f-494b-ab7e-a470e4e64e5f/d9f9dae6-c6ab-49df-9399-0240b469bdd9/"
# Append the current date to the log file name
LOG_FILE="$LOG_FILE/wrapper.$(date +%Y%m%d).log"
# Run Docker Compose with the dynamically generated log file name
docker-compose up -d
2、权限
sudo chmod +x dockerrunner.sh
3、创建yaml文件
version: "3"
services:
dozzle-from-file:
container_name: dozzle-from-tpframecs
image: alpine
volumes:
- "${LOG_FILE}:/var/log/wrapper.log:ro"
command:
- tail
- -f
- /var/log/wrapper.log
network_mode: none
restart: unless-stopped
4、运行dockerrunner.sh文件
5、定期刷新功能
you can use the system's cron job scheduler
## 查看定时任务
which cron
## 安装配置定时任务
sudo yum install cronie
## 启动并配置自启动
sudo systemctl start crond
sudo systemctl enable crond
- Open your crontab file for editing by running:
bashCopy code
crontab -e
- Add an entry to schedule the execution of your script daily. For example, to run it at midnight every day, add the following line to the crontab:
## bashCopy code
0 0 * * * /path/to/rundocker.sh
Replace /path/to/rundocker.sh
with the actual path to your script.
- Save and exit the crontab editor. The changes will be automatically applied.
This configuration will execute the rundocker.sh
script daily at midnight. Adjust the timing as needed according to your requirements.
- centos 默认调度应用
使用 systemd 定时器来定期执行脚本或命令涉及创建一个 .timer 文件和一个 .service 文件,然后启用和配置定时器。以下是基本的步骤:
创建 Service 文件: 首先,创建一个描述你要执行的命令或脚本的 systemd 服务文件。这个文件通常存储在/etc/systemd/system/
目录中,以 .service
结尾。例如,创建一个名为my_script.service
的文件:
sudo nano /etc/systemd/system/my_script.service
在文件中添加类似以下内容的内容,用你自己的脚本路径和命令替换:
[Unit]
Description=My Script Service
After=network.target
[Service]
Type=simple
ExecStart=/path/to/your/script.sh
[Install]
WantedBy=multi-user.target
创建 Timer 文件: 现在,创建一个描述定时执行的 systemd 定时器文件。这个文件通常存储在 /etc/systemd/system/ 目录中,以 .timer 结尾。例如,创建一个名为 my_script.timer 的文件:
sudo nano /etc/systemd/system/my_script.timer
在文件中添加类似以下内容的内容,根据你的需求调整时间设置:
[Unit]
Description=Run My Script Weekly
[Timer]
#### OnCalendar定义了你的脚本应该在何时执行
OnCalendar=weekly
#### 是否启用定时器
Persistent=true
[Install]
WantedBy=timers.target
启用定时器和服务: 使用 systemctl 命令启用定时器和服务。
sudo systemctl daemon-reload # 重新加载 systemd 配置
sudo systemctl enable my_script.timer # 启用定时器
sudo systemctl enable my_script.service # 启用服务
sudo systemctl start my_script.timer # 启动定时器
确保定时器和服务都已启用和运行。
这样,你的脚本将会在指定的时间间隔内定期执行。你可以通过编辑 .timer 文件来更改执行时间,通过编辑 .service 文件来更改执行的命令或脚本。
使用volume外置卷功能挂载
要使用 Docker Compose 创建一个 volume 并将其挂载到外部目录,你可以在 docker-compose.yml
文件中定义 volume 并将其与服务一起使用。以下是一个简单的示例:
假设你有一个名为 myapp
的应用程序,它需要将数据存储在外部目录 /path/to/external/data
中。你可以按照以下步骤操作:
- 在
docker-compose.yml
文件中定义 volume 和服务。 - 将服务的挂载路径指向该 volume。
下面是一个示例 docker-compose.yml
文件:
version: '3'
services:
myapp:
image: myapp_image
volumes:
- myapp_data:/app/data
volumes:
myapp_data:
driver: local
driver_opts:
type: none
o: bind
device: /path/to/external/data
在这个示例中:
myapp
是你的服务名称。myapp_image
是你应用程序的 Docker 镜像。myapp_data
是 volume 的名称。- 在
volumes
部分中,myapp_data
volume 被定义为本地驱动,类型为none
,并将其绑定到外部目录/path/to/external/data
。
现在,当你使用 docker-compose up
启动你的服务时,/app/data
目录将被挂载到 /path/to/external/data
,并且 myapp
服务将能够在该目录中读取和写入数据。
请记住,在运行 docker-compose up
命令之前确保 /path/to/external/data
目录已经存在,否则 Docker 将会自动创建一个空目录。
Dozzle是一个非常实用的Docker日志查看器,它提供了一个简洁美观易用的Web界面,可以方便地查看Docker容器的日志。它支持多个容器的日志查看,可以快速切换;支持容器日志的实时查看,可以随时更新日志;支持搜索和过滤日志,可以快速定位关键信息;支持导出日志,方便进行分析和存档。此外,Dozzle还支持多用户身份验证和远程多服务器容器查看等高级功能。这些功能使得Dozzle在实际应用中非常实用。
在使用Dozzle时,我们可以通过docker或docker-compose进行部署和运行。同时,Dozzle还支持非docker logs日志查看,可以通过挂载本地日志文件来实现。Dozzle的官方文档和阿里云实战都提供了详细的使用说明和示例,非常方便。
总的来说,Dozzle是一个非常实用的Docker日志查看器,它的界面简洁美观,易于使用,而且支持多种高级功能。如果能够进一步完善和优化,例如增加更多的过滤和搜索功能,或者提供更加丰富的日志分析工具,那么将会更加完美。