Docker 日志

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


一、最常用日志命令

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

bash 复制代码
docker logs <container_name|container_id>

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

bash 复制代码
docker logs -f <container_name>

3. 限制日志输出行数

bash 复制代码
docker logs --tail 100 <container_name>

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

bash 复制代码
docker logs --since 10m <container_name>

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

bash 复制代码
docker logs --since "2024-06-01T10:00:00" --until "2024-06-01T12:00:00" <container_name>

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

示例:

json 复制代码
{"log":"Starting server on port 8080...\n","stream":"stdout","time":"2025-06-19T01:30:20.214018732Z"}
字段 含义
log 输出的实际日志内容(含换行符)
stream stdout 或 stderr
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 时):

bash 复制代码
docker run --log-driver=json-file my-app

四、日志文件在哪?

默认位置(json-file):

bash 复制代码
/var/lib/docker/containers/<container_id>/<container_id>-json.log

你可以用 cat 或 less 查看,也可以使用:

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

五、日志轮转与大小限制

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

bash 复制代码
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 个轮转)

六、进阶技巧

查看多个容器日志

bash 复制代码
docker-compose logs -f

日志导出

bash 复制代码
docker logs <container> > container.log

grep 关键字排查

bash 复制代码
docker logs <container> 2>&1 | grep ERROR

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

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

bash 复制代码
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

相关推荐
VIP_CQCRE40 分钟前
给团队搭一个 AI 工作台:Open WebUI 接入 Ace Data Cloud 实战
docker·ai·rag·open webui·ace data cloud
2501_933923253 小时前
SpringCloud组件:Eureka服务注册与发现
java·开发语言·后端·spring cloud·eureka
程序员老赵4 小时前
Docker 部署 Portainer CE:轻松搭建容器管理平台
docker·容器·开源
TTATTC5 小时前
Gmail、Drive、日历共用一套命令:gws 如何在运行时把 Discovery 文档编译成 CLI
docker·开源
大侠归来5 小时前
Docker 部署 Dolibarr:从零开始的完整指南
运维·docker·容器
七月吃橘子6 小时前
WSL2+Docker+Ollama,本地部署大模型实践(Qwen1.8b)
运维·docker·容器
Nontee6 小时前
K3s vs K8s:差的不是功能,是交付方式
云原生·容器·kubernetes
做运维的阿瑞6 小时前
Docker常见故障全方位排查指南
运维·docker·云原生·容器
木子欢儿7 小时前
Zabbix 7.4 Alpine 版 Docker Compose 部署
android·运维·docker·容器·zabbix
朱包林7 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算