Docker的shm 查看和更改

10 min read

报错

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

Docker 查看容器共享内存大小

进入容器后可以df查看shm大小

docker exec -it ff /bin/sh
# df
Filesystem     1K-blocks     Used Available Use% Mounted on
overlay         61255492 14586388  43527780  26% /
tmpfs              65536        0     65536   0% /dev
shm                65536        0     65536   0% /dev/shm
/dev/vda1       61255492 14586388  43527780  26% /etc/hosts
tmpfs            4024584        0   4024584   0% /proc/acpi
tmpfs            4024584        0   4024584   0% /sys/firmware

Docker 修改容器shm大小

第一步

// 找到要修改容器的 ID
docker ps -a;

第二步

// 2f2162403489 为需要修改容器的 ID
docker inspect 2f2162403489 | grep Id
//输出显示需要的被修改的目录id
 "Id": "2f2162403489c3cff8bfbe52b17ff0c9d64cc7ad2905e318fdb2d298b806ndslanld",

第三步

//最高权限
su
输入密码
// 进入对应ID目录
 cd /var/lib/docker/containers/2f2162403489c3cff8bfbe52b17ff0c9d64cc7ad2905e318fdb2d298b8
 ls
 找到 hostconfig.json文件

第四步

// 停止docker服务
systemctl stop docker  
//或者
service docker stop

第五步

// 修改 hostconfig.json
vi hostconfig.json 
//找到shm,其中67108864为64m
"ShmSize": 67108864,
直接修改你需要的内存,保存退出

docker 在运行时指定shm大小

docker run -it --shm-size="1g" ubuntu