当前位置: 首页 > news >正文

Docker 日志

Docker 日志是排查容器故障、监控运行状态的重要工具。下面从 日志查看命令、详解字段、日志驱动、最佳实践 四个方面给你详细解析。


一、最常用日志命令

1. 查看容器日志(默认 stdout、stderr)

docker logs <container_name|container_id>

2. 实时滚动查看(类似 tail -f

docker logs -f <container_name>

3. 限制日志输出行数

docker logs --tail 100 <container_name>

4. 查看某个时间之后的日志(如最近10分钟)

docker logs --since 10m <container_name>

5. 查看某个时间范围日志

docker logs --since "2024-06-01T10:00:00" --until "2024-06-01T12:00:00" <container_name>

二、示例日志格式详解(默认 json-file 驱动)

示例:

{"log":"Starting server on port 8080...\n","stream":"stdout","time":"2025-06-19T01:30:20.214018732Z"}
字段含义
log输出的实际日志内容(含换行符)
streamstdoutstderr
time日志生成的 UTC 时间戳

三、日志驱动介绍(Docker 默认使用 json-file

Docker 支持多种日志驱动,可通过 --log-driver 设置:

驱动名称说明
json-file默认驱动,日志以 JSON 文件保存在宿主机
local类似 json-file,但空间管理更优
syslog日志发给宿主机的 syslog 系统
journald使用 systemd-journald 接收
fluentd发送到 fluentd 收集器
awslogs发送到 AWS CloudWatch
splunk日志推送到 Splunk
none不记录日志(不推荐)

设置日志驱动(docker run 时):

docker run --log-driver=json-file my-app

四、日志文件在哪?

默认位置(json-file):

/var/lib/docker/containers/<container_id>/<container_id>-json.log

你可以用 catless 查看,也可以使用:

cat /var/lib/docker/containers/$(docker inspect --format='{{.Id}}' <name>)/*.log

五、日志轮转与大小限制

长期运行容器会导致日志爆炸(占满磁盘),建议配置:

docker run \--log-driver=json-file \--log-opt max-size=10m \--log-opt max-file=3 \my-app

含义:

  • max-size=10m:单个日志文件最大 10MB
  • max-file=3:最多保留 3 个文件(当前 + 2 个轮转)

六、进阶技巧

查看多个容器日志

docker-compose logs -f

日志导出

docker logs <container> > container.log

grep 关键字排查

docker logs <container> 2>&1 | grep ERROR

七、Kubernetes 中查看日志(补充)

如果你以后在用 K8s,可用:

kubectl logs <pod-name>
kubectl logs -f <pod-name> -c <container-name>

总结

场景命令或技巧
实时看日志docker logs -f 容器
看错误日志`docker logs 容器grep ERROR`
限制日志大小--log-opt max-size/max-file
查看原始日志文件/var/lib/docker/containers/.../*.log
多容器统一查看docker-compose logs -f

http://www.lryc.cn/news/572087.html

相关文章:

  • 技术文章大纲:SpringBoot自动化部署实战
  • 《状压DP(01矩阵约束问题)》基础概念
  • 计算机网络:(五)信道复用技术,数字传输系统,宽带接入技术
  • 03 面试官考察与 CAP 有关的分布式理论
  • 开源ChatBI :深入解密 Spring AI Alibaba 的中文NL2SQL智能引擎
  • 基于RAGFlow构建Text2SQL的实战教程
  • 密室出逃消消乐小游戏微信流量主小程序开源
  • 如何将文件从安卓设备传输到电脑?
  • XMOS基于边缘AI+DSP+MCU+I/O智算芯片的音频解决方案矩阵引领行业创新潮流
  • 吴恩达机器学习笔记:正则化2
  • 从Excel到知识图谱再到数据分析:数据驱动智能体构建指南
  • SCRM软件数据分析功能使用指南:从数据挖掘到商业决策
  • Spark 技术与实战学习心得:从入门到实践的深度探索
  • CppCon 2017 学习:Effective Qt: 2017 Edition
  • 锂电池保护板测试仪:守护电池安全的幕后保障
  • 【css】设置了margin-top为负数,div被img覆盖的解决方法
  • django调用 paramiko powershell 获取cpu 个数
  • IPv4编址及IPv4路由基础
  • Pinia + Vue Router 权限控制(终极完整版)
  • 无监督学习中的特征选择与检测(FSD)在医疗动线流程优化中的应用
  • 2025-05-05-80x86汇编语言环境配置
  • 使用随机森林实现目标检测
  • AI时代SEO关键词革新
  • 医疗低功耗智能AI网络搜索优化策略
  • 49-Oracle init.ora-PFILE-SPFILE-启动参数转换实操
  • 129. 求根节点到叶节点数字之和 --- DFS +回溯(js)
  • 详解鸿蒙Next仓颉开发语言中的全屏模式
  • 【hadoop】搭建考试环境(单机)
  • LVS+Keepalived+nginx
  • Spring Boot + MyBatis + Vue:打造高效全栈应用的黄金组合