如何修改容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
  • 1

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


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

你可能感兴趣的:(docker,容器,运维)