Docker在Ubuntu上如何日志管理
Docker在Ubuntu上的日志管理指南
一、查看容器日志
-
基础查看命令
使用docker logs
命令查看指定容器的日志(将< container_id_or_name>
替换为实际容器标识):docker logs < container_id_or_name>
- 实时跟踪:添加
-f
或--follow
参数,实时查看日志输出(类似tail -f
); - 限制行数:添加
--tail N
参数,仅显示最后N条日志(如--tail 10
显示最后10条); - 时间过滤:添加
--since
和--until
参数,按时间范围筛选日志(如--since "2025-09-01" --until "2025-09-25"
)。
- 实时跟踪:添加
-
查看Docker引擎自身日志
- Ubuntu 16.04及以上(systemd):使用
journalctl
命令查看Docker服务日志:
添加sudo journalctl -u docker.service
-n 100
可显示最近100条日志,-f
可实时跟踪。 - Ubuntu 14.04(Upstart):日志文件位于
/var/log/upstart/docker.log
,使用cat
或tail
查看:cat /var/log/upstart/docker.log sudo tail -f /var/log/upstart/docker.log
- Ubuntu 16.04及以上(systemd):使用
二、配置日志驱动
Docker默认使用json-file
驱动(日志存储为JSON格式文件),可通过修改守护进程配置调整日志行为:
-
编辑配置文件
打开或创建/etc/docker/daemon.json
,添加以下内容:{ "log-driver": "json-file", "log-opts": { "max-size": "10m", // 单个日志文件最大大小(如10MB) "max-file": "3" // 保留的旧日志文件数量(超过则轮转) } }
支持的其他驱动:
syslog
(发送到系统日志)、journald
(集成systemd日志)、fluentd
(发送到Fluentd收集器)等。 -
重启Docker生效
修改配置后,重启Docker服务使设置生效:sudo systemctl restart docker
三、日志轮转管理
避免日志文件无限增长占用磁盘空间,可通过以下两种方式实现轮转:
-
Docker内置轮转(推荐)
通过daemon.json
中的log-opts
配置(如上述),适用于json-file
驱动。修改后,Docker会自动轮转日志文件(如container_id-json.log.1
、container_id-json.log.2.gz
等)。 -
系统级logrotate配置
编辑/etc/logrotate.d/docker
(若不存在则创建),添加以下规则:/var/lib/docker/containers/*/*.log { daily # 每天轮转 rotate 7 # 保留7天日志 compress # 压缩旧日志(gzip) missingok # 日志文件不存在时不报错 notifempty # 日志为空时不轮转 create 640 root root # 创建新日志文件的权限 sharedscripts # 所有日志轮转完成后执行脚本 postrotate /usr/bin/kill -USR1 $(cat /var/lib/docker/containers/*/*.log.pid 2> /dev/null) 2> /dev/null || true endscript }
保存后,
logrotate
会自动按规则轮转Docker容器日志。
四、使用第三方日志管理工具
对于生产环境,建议使用集中式日志管理工具,实现日志收集、分析、可视化:
-
ELK Stack(Elasticsearch+Logstash+Kibana)
- 安装ELK:通过
apt
或官方文档安装Elasticsearch、Logstash、Kibana; - 配置Logstash:编辑
/etc/logstash/conf.d/docker.conf
,添加Docker日志输入(如beats
或file
插件)和Elasticsearch输出; - 导入日志:使用Filebeat采集Docker日志(
/var/lib/docker/containers/*/*.log
)并发送到Logstash,最终在Kibana中可视化。
- 安装ELK:通过
-
Fluentd
- 安装Fluentd:
sudo apt install fluentd
; - 配置Fluentd:编辑
/etc/fluent/fluent.conf
,添加Docker输入(forward
插件监听24224端口)和Elasticsearch输出:< source> ["是", "Docker Fluentd配置示例", "Fluentd Docker input配置", "Fluentd Elasticsearch output配置"]< /source>
- 启动Fluentd:
sudo systemctl start fluentd
; - 配置Docker使用Fluentd:启动容器时指定
--log-driver=fluentd
和--log-opt fluentd-address=localhost:24224
。
- 安装Fluentd:
五、Docker Compose中的日志配置
若使用Docker Compose管理容器,可在docker-compose.yml
中为服务配置日志驱动:
version: '3'
services:
web:
image: nginx
logging:
driver: "json-file" # 日志驱动(默认为json-file)
options:
max-size: "10m" # 单个日志文件最大大小
max-file: "3" # 保留的旧日志文件数量
保存后,运行docker-compose up -d
启动服务,日志将按配置管理。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker在Ubuntu上如何日志管理
本文地址: https://pptw.com/jishu/715716.html