已终止 - 构建进程因内存不足而被终止。请尝试增加内存限制。
Killed - The build process was terminated due to out of memory. Try increasing the memory limit.
ID: cicd/docker-build-oom-killed
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| Docker 24.0.7 | active | — | — | — |
| Docker 25.0.0 | active | — | — | — |
| GitHub Actions runner v2.315.0 | active | — | — | — |
根因分析
Docker 构建过程超过了运行器或主机上的可用内存,通常是由于大型多阶段构建、繁重的编译步骤或 CI 中资源分配不足。
English
The Docker build process exceeds the available memory on the runner or host, often due to large multi-stage builds, heavy compilation steps, or insufficient resource allocation in CI.
官方文档
https://docs.docker.com/config/containers/resource_constraints/解决方案
-
在 CI 配置中增加内存限制(例如 GitHub Actions:在作业定义中添加 `options: --memory=8g`,或 Docker Compose:`mem_limit: 8g`)。
-
通过合并 RUN 命令优化 Dockerfile:`RUN apt-get update && apt-get install -y package1 package2 && apt-get clean` 以减少层数和中间存储。
-
使用多阶段构建和精简基础镜像(例如 `FROM node:18-alpine` 代替 `FROM node:18`)以减少构建期间的内存占用。
无效尝试
常见但无效的做法:
-
60% 失败
Adding more RUN layers without combining them; each layer creates additional intermediate containers that increase memory pressure.
-
50% 失败
Removing --memory flag entirely thinking it's restrictive; the default limit might be too low, but removing it doesn't increase available memory.
-
90% 失败
Ignoring the error and retrying; the build will likely fail again at the same point unless memory is increased or the Dockerfile is optimized.