在Debian系统中,Docker日志管理可通过命令行工具、配置文件优化、日志轮转及可视化工具等方式实现,以下是具体实践方法:
journalctl查看容器日志journalctl是systemd的日志管理工具,可过滤Docker服务的日志。常用命令:
journalctl -u docker.servicedocker ps获取容器ID/名称,再执行journalctl -u docker.service -t <容器ID>-f参数(如journalctl -u docker.service -t <容器ID> -f)docker logs直接查看容器日志docker logs是Docker自带命令,可直接获取容器标准输出(STDOUT)和标准错误(STDERR)的日志:
docker logs <容器ID/名称>docker logs -f <容器ID/名称>docker logs --since 30m <容器ID/名称>docker logs -f <容器ID/名称> > logs.txtdaemon.json全局配置Docker默认使用json-file日志驱动,可通过编辑/etc/docker/daemon.json(若不存在则创建)调整日志行为,例如限制日志大小和数量:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m", // 单个日志文件最大10MB
"max-file": "3" // 最多保留3个日志文件
}
}
修改后需重启Docker服务使配置生效:sudo systemctl restart docker
通过docker inspect命令查看容器的日志驱动设置:
docker inspect --format '{{.HostConfig.LogConfig.Type}}' <容器ID>
或查看详细日志选项:
docker inspect <容器ID> | grep -i logconfig
logrotate自动轮转日志logrotate是Linux系统自带的日志轮转工具,可自动压缩、删除旧日志。为Docker创建自定义配置文件/etc/logrotate.d/docker:
/var/lib/docker/containers/*/*.log {
weekly # 每周轮转一次
rotate 8 # 保留8个旧日志文件
compress # 压缩旧日志(gzip)
delaycompress # 延迟压缩(避免压缩正在写入的日志)
missingok # 若日志文件不存在也不报错
notifempty # 若日志为空则不轮转
}
测试配置是否正确:sudo logrotate --debug /etc/logrotate.d/docker
手动触发轮转:sudo logrotate -f /etc/logrotate.conf
若未使用logrotate,可通过find命令手动删除7天前的容器日志:
find /var/lib/docker/containers/ -name '*-json.log' -mtime +7 -exec rm {} \;
Dozzle是轻量级Web界面工具,可实时查看Docker容器日志,无需存储日志文件。安装命令:
docker run --name dozzle -d --volume=/var/run/docker.sock:/var/run/docker.sock -p 8080:8080 amir20/dozzle:latest
访问http://<服务器IP>:8080即可查看实时日志,支持搜索、过滤等功能
Portainer是Docker管理界面,可通过Web界面查看容器日志。安装命令:
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v /home/xiaoyaozi/data:/data portainer/portainer-ce
访问http://<服务器IP>:9000,登录后选择容器,点击“Logs”选项卡即可查看日志
Docker支持多种日志驱动,可根据需求选择:
修改daemon.json中的log-driver字段即可切换驱动(如"log-driver": "local"),重启Docker后生效