# 容器退出代码137（OOMKilled）- 内存限制过低

- **ID:** `docker/container-oom-killed-memory-limit`
- **领域:** docker
- **类别:** resource_error
- **错误码:** `137`
- **验证级别:** ai_generated
- **修复率:** 85%

## 根因

容器超出了其内存限制，被内核OOM杀手终止，通常是由于--memory或-m设置不足。

## 版本兼容性

| 版本 | 状态 | 引入 | 弃用 |
|------|------|------|------|
| Docker 24.0.7 | active | — | — |
| Docker 25.0.3 | active | — | — |
| containerd 1.7.13 | active | — | — |

## 解决方案

1. ```
   增加内存限制：docker run -m 512m --memory-reservation 256m my_image
   ```
2. ```
   使用docker stats监控实际使用量并设置高20%的限制：docker stats <container_name>
   ```
3. ```
   在docker-compose.yml中添加mem_limit：services: app: mem_limit: 512m
   ```

## 无效尝试

- **** — Rebuilding the image with more layers doesn't change runtime memory limits; the limit is set at container start. (70% 失败率)
- **** — Adding swap space may delay the OOM but doesn't fix the underlying memory exhaustion; the container may still be killed or become unstable. (60% 失败率)
- **** — Restarting the container without changing memory limits just repeats the same crash. (90% 失败率)
