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

Docker容器错误码137终止排查:资源限制配置查询与移除

解决容器因资源限制被终止(退出码137,OOMKilled=false)的问题

首先,退出码137通常意味着容器进程收到了SIGKILL信号(128+9),既然OOMKilled状态为false,说明不是宿主机的OOM Killer触发的,你的猜测没错,很大概率是Docker本身的资源限制配置导致容器被强制终止。下面是查看和移除这些限制的具体方法:

一、查看容器的资源限制配置

1. 通过docker inspect查看当前容器的资源约束

直接用docker inspect命令查看容器的HostConfig部分,这里包含了所有资源限制相关的配置:

docker inspect <容器ID或名称> | grep -A 30 "HostConfig"

如果你的系统安装了jq工具,可以用更清晰的格式输出关键字段:

docker inspect <容器ID或名称> | jq '.[] | .HostConfig | {Memory, MemorySwap, CpuQuota, CpuPeriod, CpuShares, BlkioWeight}'

这些字段的含义:

  • Memory:容器能使用的最大内存(字节数),0表示无限制
  • MemorySwap:容器能使用的最大内存+swap空间,0表示无限制
  • CpuQuota/CpuPeriod:一起控制CPU的使用上限,CpuQuota/CpuPeriod就是CPU核心数的限制
  • CpuShares:CPU权重(相对其他容器),不是硬限制

2. 检查Docker Compose配置文件

因为你是用docker-compose启动的容器,直接查看你的docker-compose.yml文件,找到对应服务下的资源限制配置。通常会在resources.limits节点下,比如:

services:
  your-service-name:
    image: your-image
    # 其他配置...
    resources:
      limits:
        memory: 256M
        cpus: '0.25'

如果存在这样的配置,就是导致容器被终止的原因。

二、移除资源限制的方法

1. 修改Docker Compose配置并重启

打开docker-compose.yml,删除对应服务下的resources.limits整个节点(如果只是想调整,也可以把值改大),然后执行重启命令:

docker-compose up -d --force-recreate

--force-recreate参数会强制重新创建容器,确保新的配置生效。

2. 临时验证(可选)

如果你想先临时验证是不是资源限制的问题,可以直接用docker run命令启动一个无限制的容器测试:

docker run --rm -d --name test-container <你的镜像>

如果这个容器能正常运行,就确认是之前的资源限制配置导致的问题。

额外排查点

如果移除限制后容器还是被终止,建议检查容器内的应用日志(比如进入容器查看/var/log下的日志),或者确认宿主机本身是不是有其他进程占用了过多资源,导致容器间接被影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:04