很多同学在docker里面运行程序时会得到这样的错误
RuntimeError: DataLoader worker (pid 6209) is killed by signal: Bus error.
It is possible that dataloader's workers are out of shared memory.
Please try to raise your shared memory limit.
这种错误的原因是共享内存不足。通过该指令查看:
ipcs -al
/*会得到:
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4091826
max total shared memory (pages) = 2097152
min seg size (bytes) = 1
*/
最简单的办法是重新新建一个容器,在run的时候添加参数:
–shm-size 6G
这样即可,如果不想这么做可以继续看:
1. 在容器中查看大小:
.
df -h | grep shm
内存远远不够
首先要关闭docker, 否则下面的操作步骤会无效!!
service docker stop
2. 进入宿主机中修改Host.json
/var/lib/docker/containers
ls
查看你的docker容器的id:
docker ps
之后进入该文件的配置文件夹:
cd askdhadh(要修改的容器的id)
3. 修改hostconfig.json
vim hostconfig.json
之后
67108864KB 就约等于64M
那么就修改为你要的大小即可
我这里是在后面加了个“22” 大概扩大100倍
保存退出
4. 然后重启docker服务
// 停止docker服务
systemctl stop docker
// 再开启
systemctl start docker
//或者
systemctl restatrt docker
//或者
service docker stop
service docker start
进入容器查看就发现修改好了啦