如何修改容docker容器的shmsize共享内存大小

很多同学在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

进入容器查看就发现修改好了啦
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值