docker 生产容器 运行出现shm 空间不足问题解决

ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).

容器启动

docker run -it --gpus all -v /data/data01/project/train/:/opt/ml/code detect_image_trt:1.0.0 /bin/bash

分析:在上述的容器若采用映射的方式启动,未进行shm的分配,默认是64M, 会出现shm 空间不足的报错。
运行:

df -h
在这里插入图片描述

解决:启动容器设置shm的大小

docker run -it --gpus all –shm-size 8g -v /data/data01/project/train/:/opt/ml/code detect_image_trt:1.0.0 /bin/bash

### 解决正在运行Docker 容器内存不足问题 对于已经处于运行状态下的 Docker 容器而言,如果遇到内存不足的情况,有几种方法来处理这个问题。 调整现有容器配置并非总是可行的选择,因为某些参数如 `--memory` 和 `--memory-swap` 需要在创建容器时指定,并且一旦设定便不可更改。然而,可以通过停止并移除当前容器实例,随后利用更新后的资源配置重新部署该应用服务的方式间接实现对内存分配策略的修改[^1]。 当面临共享内存不足问题时,重启 Docker 服务可能有助于缓解临时性的资源紧张状况。执行如下命令可完成此操作: ```bash systemctl restart docker ``` 之后再次尝试启动受影响的应用容器之前,建议先检查系统的共享内存区域大小是否已恢复正常水平,通过下面这条指令获取相关信息: ```bash df -lh | grep shm ``` 为了从根本上解决问题,在未来部署新的容器实例前应当合理规划其所需的内存限额。例如,若希望将某个基于 Ubuntu 的测试环境限定为最大占用不超过 512MB RAM,则可以在启动它的时候加入相应的选项: ```bash docker container run --rm -it \ --name stress-test \ --memory 512M \ ubuntu:22.04 /bin/bash ``` 另外值得注意的是,如果不显式定义交换空间(`--memory-swap`)的话,默认情况下会允许两倍于实际物理内存容量作为虚拟存储供应用程序调用。这意味着即使设定了较低的实际内存上限(比如 100 MB),只要总可用内存加起来满足需求,程序仍然能够顺利执行下去[^3]。 最后提醒一点,定期监控各个容器的具体性能表现也是十分必要的。借助像 `docker stats` 这样的工具可以帮助管理员及时发现潜在的风险点,从而采取适当措施加以预防或纠正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值