温馨提示×

CentOS与Docker的日志如何管理

小樊
50
2025-08-08 10:22:22
栏目: 智能运维

一、Docker日志查看

  • 容器日志:使用 docker logs <容器ID/名称> 查看,支持实时输出(-f)和过滤(grep)。
  • Docker引擎日志:通过 journalctl -u docker.service 查看。

二、日志驱动配置

  • 默认驱动(json-file)
    • 限制日志大小和数量:修改 /etc/docker/daemon.json,如 {"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"3"}},重启Docker生效。
  • 其他驱动
    • syslog:将日志发送至系统日志服务器,需配置 syslog-address
    • journald:集成系统日志,通过 journalctl 查看。

三、日志轮转与清理

  • 自动轮转:使用 logrotate 工具,配置文件示例:
    /var/lib/docker/containers/*/*.log {
        daily
        rotate 7
        compress
        missingok
        copytruncate
    }
    
    保存至 /etc/logrotate.d/docker-container-logs,自动按天轮转并压缩。
  • 手动清理
    • 清空日志文件:truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
    • 删除旧日志:find /var/lib/docker/containers/ -name "*.log" -mtime +30 -exec rm {} \;

四、日志存储与分析

  • 本地存储:通过挂载宿主机目录(-v /宿主机路径:/容器路径)将日志保存到宿主机。
  • 集中管理
    • ELK Stack:收集、存储、可视化日志,需部署Elasticsearch、Logstash、Kibana。
    • Fluentd:轻量级日志收集器,支持多种输出插件。

五、最佳实践

  • 生产环境:使用 json-file 驱动限制日志大小,搭配 logrotate 定期清理,并通过ELK/Fluentd实现集中分析。
  • 安全合规:敏感日志需加密传输(如TLS),并定期归档至合规存储。

参考来源:[1,2,3,4,5,6,7,8,9,10,11]

0