首页/安全/取证与溯源速查/容器日志与宿主机证据关联
Linux 取证135 条

容器日志与宿主机证据关联

容器日志以 JSON 行保存在宿主机目录,容器被删除后正是从这里找回;分析时注意容器时间与宿主时间的时区差异。

取证与溯源速查安全更新于 2026-10-13

容器日志查看

Docker 默认的 json-file 日志驱动把容器的标准输出与错误输出按行写到宿主机 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log,每行是一个含 log 与 time 字段的 JSON 对象。它的价值在于:容器内不落盘的应用输出,往往只在这份日志里留下痕迹。

基本信息

路径/var/lib/docker/containers/<容器ID>/<容器ID>-json.log
行格式每行一个 JSON 对象,含 log 与 time 字段
time 格式带时区的 RFC 3339 时间
查询命令docker logs 支持 --since、--until、--tail
生命周期容器删除后日志目录一并消失
权限要求读取容器日志目录需要 root

典型使用场景

  • 查看容器应用的标准输出与错误输出
  • 按时间窗提取某次事件的相关输出
  • 判断容器何时启动与退出
  • 与容器内的审计记录互相印证
  • 分析已被删除容器的日志残留

最小示例

最小示例
docker ps --no-trunc | head                          # 取得完整容器 ID
docker logs --since '2026-01-02T03:00:00' --until '2026-01-02T06:00:00' <容器> | head -40
tail -5 /var/lib/docker/containers/<ID>/<ID>-json.log 2>/dev/null
docker inspect <容器> | grep -i -E 'StartedAt|FinishedAt'
ls -l /var/lib/docker/containers/ | head              # 目录概览
sha256sum /var/lib/docker/containers/<ID>/<ID>-json.log 2>/dev/null

要素与注意

要素含义注意
log 字段该行输出的文本多行输出会被转义在同一行里
time 字段带时区的 RFC 3339 时间与宿主机时区可能不同
容器 ID 目录按容器组织的日志目录容器删除后目录随之消失
StartedAt 与 FinishedAt容器起止时刻用于框定日志时间窗
日志驱动决定日志存储位置非 json-file 时路径不同
json-file 驱动下每行含 log 与 time 两个字段,time 为带时区的 RFC 3339 格式,换算后可直接并入时间线。
使用 journald 等其它日志驱动时,日志不会落在上述目录,需要改从宿主机的日志系统查询。
日志驱动可以在容器创建时指定,也可以在守护进程配置中统一设定;排查前先确认当前实际使用哪一种。
容器日志里常包含应用打印的口令、令牌与个人信息,采集后展示或写入报告前都要按脱敏规则处理。
容器被删除后日志目录随之消失;需要长期留证时应在容器生命周期内复制到证据目录并计算哈希。

易错点

  • 直接在容器内找日志文件:默认驱动下日志存放在宿主机目录,容器内看不到
  • 忽略时区差异:容器内应用时间常为 UTC,与宿主机记录混用会出现整体偏移
  • 采集过晚:容器被重建或删除后日志目录消失,无法再获取
  • 只读当前日志文件:轮转配置会切分文件,需同时检查其它分片

数据来源与参考

  • Docker 官方文档(json-file 日志驱动)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌