在docker容器已经创建的情况下如何修改其共享内存
背景
在使用docker进行训练时,data_loader加载数据时,报出了内存相关的一些问题。
经查资料,发现可能为docker 容器的共享内存太小导致的。
使用df -lh | grep shm
进行查看,果然显示内存只有64M。
于是想将容器的共享内存改大一些, 并且不想重建容器,毕竟训练环境好不容易搭的。
最后从资料中筛选出了这个方法。
第一步 查看并记下自己docker 容器的ID
docker inspect 容器名 |grep Id
第二步 找到容器的配置文件
cd /var/lib/docker/containers/容器Id
如果不能进入,可能是权限问题,可以用sudo -s
切换到root权限
第三步 停止docker服务
systemctl stop docker
或者
systemctl stop docker.service
这一步可能需要耐心等待一会儿,直到系统执行完成。
第四步 修改hostconfig.json
在hostconfig.json文件中找到关键词“ShmSize”,修改后面的数字。67108864这个数字代表64MB, 可以按倍数增加,或者直接在最后补0,变成640MB,或者6.4G。
第五步 重启docker服务
systemctl start docker
或者
systemctl start docker.service
同样的,这一步也需要耐心等待一会儿。
第六步 重启容器,验证共享内存
docker start 容器名
df -lh | grep shm
这回应该显示一个更大的内存啦!