温馨提示×

Docker容器在Ubuntu上如何进行日志查看

小樊
79
2025-10-18 13:17:49
栏目: 智能运维

在Ubuntu上查看Docker容器日志的常用方法

1. 基本日志查看命令

使用docker logs命令可查看容器的**标准输出(stdout)标准错误(stderr)**日志(Docker默认日志驱动为json-file,日志存储在宿主机中)。

  • 查看特定容器的日志:将<container_id_or_name>替换为容器的ID或名称(可通过docker ps获取运行中容器,docker ps -a获取所有容器)。
    docker logs <container_id_or_name>
    
  • 查看所有容器的日志:通过docker ps -aq获取所有容器ID,批量查看日志。
    docker logs $(docker ps -aq)
    

2. 实时跟踪日志输出

若需实时查看容器日志(类似tail -f),添加-f--follow选项:

docker logs -f <container_id_or_name>

Ctrl+C可停止实时跟踪。

3. 限制日志行数

使用--tail选项指定显示最近的N条日志(避免日志过多):

docker logs --tail=100 <container_id_or_name>  # 显示最近100条

结合-f可实现“实时查看最新100条日志”:

docker logs -f --tail=100 <container_id_or_name>

4. 查看指定时间段的日志

  • 查看自某个时间点以来的日志:使用--since选项(支持ISO 8601格式或相对时间,如10m表示10分钟前)。
    docker logs --since="2025-10-01T12:00:00Z" <container_id_or_name>  # 自2025-10-01 12:00:00以来的日志
    docker logs --since=1h <container_id_or_name>  # 自1小时以来的日志
    
  • 查看某个时间范围内的日志:结合--until选项(如查看2025-10-01 12:00:00至13:00:00的日志)。
    docker logs --since="2025-10-01T12:00:00Z" --until="2025-10-01T13:00:00Z" <container_id_or_name>
    

5. 显示日志时间戳

添加-t--timestamps选项,在每条日志前添加UTC时间戳,便于定位问题:

docker logs -t <container_id_or_name>

6. 查看容器内日志文件

若应用程序将日志写入容器内的文件(而非标准输出),可通过docker exec进入容器查看:

  • 进入容器
    docker exec -it <container_id_or_name> /bin/bash  # 进入容器的bash shell
    
  • 查看日志文件:使用cattailless命令(如/var/log/my_app.log为应用程序日志路径)。
    cat /var/log/my_app.log          # 查看完整日志
    tail -f /var/log/my_app.log      # 实时跟踪日志
    less /var/log/my_app.log         # 分页查看(按q退出)
    

7. 日志轮转配置(避免日志爆炸)

为防止长期运行的容器日志占满磁盘,可在启动容器时配置日志轮转:

docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 <image_name>
  • max-size=10m:单个日志文件最大10MB;
  • max-file=3:最多保留3个日志文件(当前文件+2个轮转文件)。

注意事项

  • 若容器未产生日志,可能是应用程序未正确配置日志输出(如日志级别过高或未输出到stdout/stderr);
  • 查看日志需具备足够权限(通常需要root用户或属于docker组);
  • 对于生产环境,建议使用集中化日志管理工具(如ELK Stack、Splunk)收集和分析日志,避免日志分散在各个容器中。

0