You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Azure容器实例重启前的日志及排查OOM终止问题?

排查容器持续重启(疑似OOM)及获取历史日志的方法

针对你遇到的容器组中单个容器持续重启、怀疑是内存耗尽(OOM)但日志里没找到确认信息的问题,我整理了几个实用的排查步骤:

一、确认容器是否因OOM被编排器终止

Kubernetes环境

  • 查看Pod的事件详情:执行 kubectl describe pod <你的Pod名称>,在输出的Events板块里,找是否有类似Container <容器名> was terminated with exit code 137或者明确标注OOMKilled的事件——exit code 137通常意味着容器被SIGKILL信号终止,而OOM是触发这个信号的常见原因。
  • 查看Pod的状态细节:执行 kubectl get pod <你的Pod名称> -o yaml,在status.containerStatuses字段下,找到对应容器的terminationReason和terminationMessage,如果是OOM导致的终止,这里会明确显示OOMKilled。

Docker(含Compose/Swarm)环境

  • 检查容器状态:执行 docker inspect <容器ID/名称>,在返回的JSON结构中,找到State字段,查看OOMKilled是否为true,同时ExitCode如果是137,也能佐证是OOM导致的终止。
  • 查看Docker守护进程日志:在部分系统中,Docker daemon会记录OOM相关的事件,比如在Ubuntu上可以查看journalctl -u docker.service,搜索OOM关键词。

二、获取容器的历史日志

Kubernetes环境

  • 拉取上一次启动的容器日志:执行 kubectl logs <你的Pod名称> -c <目标容器名称> --previous,这个命令会调取容器重启前的那个实例的日志,很多时候容器启动即崩溃,当前日志为空,但历史日志会包含崩溃前的关键信息。
  • 如果需要查看更早的日志,可以结合--since或--tail参数,比如 kubectl logs <Pod名称> -c <容器名称> --since 1h 查看1小时内的所有日志。

Docker环境

  • 查看容器的全部历史日志:执行 docker logs <容器ID/名称>,默认会输出所有日志;如果日志太长,可以用--tail 500只看最后500行,或者--since 24h查看最近24小时的日志。
  • 访问日志文件(如果使用默认的json-file驱动):Docker默认会把日志存在/var/lib/docker/containers/<容器ID>/<容器ID>-json.log路径下,你可以直接用cat或tail命令查看这个文件的内容,即使容器已经重启多次,历史日志也会保留在这里。

额外验证技巧

如果还是无法确定,你可以临时调整容器的内存限制(比如适当调高),观察容器是否还会重启:如果调整后容器稳定运行,基本就能确认之前的问题是OOM导致的。

内容的提问来源于stack exchange,提问作者Jerry Joyce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:35:39