如何更改docker容器shm

容器与中间件容器服务技术服务知识库
问题描述

使用docker启动容器时遇到报错,如下:

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

此问题是由于容器共享内存不足导致,可以通过启动容器指定参数或修改docker默认配置来修改shm大小。默认shm大小为 64MiB。

问题解决

方案一

启动容器指定 --shm-size 参数

# 启动容器
$ docker run -d -p 80:80 --shm-size 1g  nginx
9f6b2c6c6d27c0b07e536fc52acd646e6d05c5b0709f2ff2382f156464e0977a
$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
9f6b2c6c6d27   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 3 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   loving_galois

# 验证
$ docker inspect 9f6b2c6c6d27 |grep -i shm
            "ShmSize": 1073741824,

方案二

修改docker配置文件

$ cat /etc/docker/daemon.json 
{
  "default-shm-size": "64M"
}
$ systemctl reload docker
$ docker run -d -p 80:80 --name shm-test ngin
$ docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
f48a40f310ed   nginx     "/docker-entrypoint.…"   3 seconds ago   Up 3 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   shm-test
$ docker inspect f48a40f310ed |grep -i shm
        "Name": "/shm-test",
            "ShmSize": 1073741824,
参考链接

[1] https://docs.docker.com/engine/reference/commandline/dockerd/ [2] https://docs.docker.com/engine/reference/commandline/run/ 如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

所属团队号:
相关资源
字节跳动 NoSQL 的实践与探索
随着 NoSQL 的蓬勃发展越来越多的数据存储在了 NoSQL 系统中,并且 NoSQL 和 RDBMS 的界限越来越模糊,各种不同的专用 NoSQL 系统不停涌现,各具特色,形态不一。本次主要分享字节跳动内部和火山引擎 NoSQL 的实践,希望能够给大家一定的启发。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论