首页主机资讯Docker在Ubuntu上如何日志管理

Docker在Ubuntu上如何日志管理

时间2025-10-01 12:32:03发布访客分类主机资讯浏览759
导读:Docker在Ubuntu上的日志管理指南 一、查看容器日志 基础查看命令 使用docker logs命令查看指定容器的日志(将<container_id_or_name>替换为实际容器标识): docker logs &l...

Docker在Ubuntu上的日志管理指南

一、查看容器日志

  1. 基础查看命令
    使用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")。
  2. 查看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,使用cattail查看:
      cat /var/log/upstart/docker.log
      sudo tail -f /var/log/upstart/docker.log
      

二、配置日志驱动

Docker默认使用json-file驱动(日志存储为JSON格式文件),可通过修改守护进程配置调整日志行为:

  1. 编辑配置文件
    打开或创建/etc/docker/daemon.json,添加以下内容:

    {
    
      "log-driver": "json-file",
      "log-opts": {
    
        "max-size": "10m",  // 单个日志文件最大大小(如10MB)
        "max-file": "3"     // 保留的旧日志文件数量(超过则轮转)
      }
    
    }
    
    

    支持的其他驱动:syslog(发送到系统日志)、journald(集成systemd日志)、fluentd(发送到Fluentd收集器)等。

  2. 重启Docker生效
    修改配置后,重启Docker服务使设置生效:

    sudo systemctl restart docker
    

三、日志轮转管理

避免日志文件无限增长占用磁盘空间,可通过以下两种方式实现轮转:

  1. Docker内置轮转(推荐)
    通过daemon.json中的log-opts配置(如上述),适用于json-file驱动。修改后,Docker会自动轮转日志文件(如container_id-json.log.1container_id-json.log.2.gz等)。

  2. 系统级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容器日志。

四、使用第三方日志管理工具

对于生产环境,建议使用集中式日志管理工具,实现日志收集、分析、可视化:

  1. ELK Stack(Elasticsearch+Logstash+Kibana)

    • 安装ELK:通过apt或官方文档安装Elasticsearch、Logstash、Kibana;
    • 配置Logstash:编辑/etc/logstash/conf.d/docker.conf,添加Docker日志输入(如beatsfile插件)和Elasticsearch输出;
    • 导入日志:使用Filebeat采集Docker日志(/var/lib/docker/containers/*/*.log)并发送到Logstash,最终在Kibana中可视化。
  2. 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

五、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
WebLogic在Linux上如何监控 如何自定义dhclient的配置选项

游客 回复需填写必要信息