docker build 镜像构建失败 return code 137

1,348次阅读
没有评论

问题

在一个 python 镜像中, 要用到 pip install -r requirementsFROM python:3.7 WORKDIR /code EXPOSE 80 COPY ./code/requirements.txt requirements.txt RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple CMD [“gunicorn”, “-w”, “4”, “-b”, “0.0.0.0:80”, “wsgi:app”]

但是在构建镜像的过程中, 正常情况下, docker 会将容器内一切信息打印出来.

但 build 过程中, docker 容器非正常退出. 错误信息没有报出来

docker build 镜像构建失败 return code 137

说实话, 很抽象. 仅有return code 137

哪怕镜像没有构建完成, 可以通过 docker ps -a 查看镜像构建时的退出码

docker build 镜像构建失败 return code 137

但无法使用 docker logs 命令查看尚未构建好的镜像的日志

按道理而言, 若 pip 命令出错, docker build 会将错误信息打印出来. 但 killed 表示 docker 容器是非正常退出.

而该 return code 137 有很多种原因出现

  • 容器接受到 SIGKILL 信号, 通常情况下代表容器内存溢出, 导致程序异常退出
  • 容器被 docker 发送命令, 命令强制关闭容器

利用 top 命令监控

docker build 镜像构建失败 return code 137

top命令执行后, 按 m 键会按照使用内存降序排序

解决办法

调整 docker container 的内存限制

使用 docker info 命令, 查看 docker 基本配置信息
image.png

服务器就2G内存, docker 可以使用 memory 是 1.936GiB

docker build 镜像构建失败 return code 137

最后一行则表示 docker 容器会尽可能的使用宿主的CPU和内存资源. 这也是Linux系统下 docker 的默认设置

这意味着 docker container 容器部署时, 已经充分利用容器内存.

top 命令, 一开始是稳定 5% MEM, 突然飙升到 40%, 然后就 killed 了

似乎只能升级服务器内存呢. 最后还是放弃使用 docker 部署, 直接在主机上安装python环境.

问题的原因是因为 requirement.txt 中需要安装的包过大, (如 PyTorch 和 TensorFlow 都需要安装). pip 没有足够的内存进行安装, 导致使用的内存过多而被系统检测发送 SIGKILL 终止创建.

Docker 使用采用 Linux 的 subsystem 技术, 实现对容器内进程使用资源做限制和跟踪

参考

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2024 年 1 月
1234567
891011121314
15161718192021
22232425262728
293031  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
最新评论
王光卫博客 王光卫博客 用户思维很有必要对用户进行数据分析
王光卫博客 王光卫博客 我们活得居然不如AI,唉
王光卫博客 王光卫博客 这又得开始存钱了
王光卫博客 王光卫博客 正在找能理解中国古汉语的AI :cry:
□惊叹号!! □惊叹号!! 可以领券
一路向北 一路向北 已经添加
一路向北 一路向北 申请友情链接: 名称:烙馍省钱 网址:https://tb-m.luomor.com/ 已添加文心AIGC
热评文章