首页/云/Docker 容器速查/docker run --shm-size 调整共享内存
资源与安全50 条

docker run --shm-size 调整共享内存

设置容器 /dev/shm 大小(默认 64m):浏览器渲染、数据库与多进程服务常因共享内存不足失败,可显式放大并纳入内存预算。

Docker 容器速查云更新于 2026-10-13

--shm-size 是什么

--shm-size 设置容器内 /dev/shm 的大小,默认 64m。/dev/shm 是基于内存的临时文件系统,浏览器内核渲染、数据库与多进程服务常因共享内存不足失败,表现是进程莫名崩溃、日志含糊。需要时显式放大,并把它纳入内存预算。

基本信息

语法--shm-size=512m
默认值64m
底层实现基于内存的临时文件系统
内存计量计入容器内存限制
适用平台Linux 容器为主,其他平台按各自说明

典型使用场景

  • 无头浏览器渲染容器:页面复杂时共享内存不够会直接崩溃
  • 数据库容器:共享内存是连接与排序缓冲的重要来源
  • 多进程应用:进程间共享大块数据时需要更大的共享内存
  • 排障:应用出现难以复现的崩溃时先确认共享内存是否够用
  • 性能调优:让共享内存容量与并发规模匹配

设置与核对

设置与核对
docker run -d --shm-size=512m --name chrome browser/headless:126
docker exec chrome df -h /dev/shm                    # 核对容器内共享内存容量
docker inspect -f '{{.HostConfig.ShmSize}}' chrome   # 核对配置值
docker run -d --shm-size=1g --memory=2g --name api app/api:1.4.2   # 与内存预算一起评估

调整前后要注意

关注点默认表现调整后注意
容量64m,复杂场景容易不够调大要同步核对内存预算
内存计量计入容器内存可能更早触发 OOM
数据生命周期随容器生命周期存在重建即清空
平台差异非 Linux 行为不同按平台说明核对
临时文件系统的页计入容器内存限制,设了内存上限时调大共享内存等于压缩应用可用内存,两件事要一起评估。
无头浏览器类容器最容易踩这个默认值:表现是莫名其妙的渲染崩溃且日志含糊,排查时先看共享内存容量。
调大共享内存后没有同步检查内存上限,容器会更早触发 OOM,却被归咎于应用缺陷,容量调整要成对进行。
共享内存内容随容器生命周期存在,容器重建即清空;需要跨重启保留的数据要放到卷而不是共享内存。
共享内存只是进程间通信的一种方式,某些应用改用文件或套接字通信也能绕开容量限制,但改造成本通常高于直接调大参数。

易错点

  • 无头浏览器类容器忘了它默认 64m,表现为莫名其妙的渲染崩溃且日志含糊
  • 调大后没有同步检查内存上限,容器更早触发 OOM 却归咎于应用
  • 把需要持久化的数据放进共享内存,容器重建后数据直接丢失
  • 在非 Linux 平台上照搬 Linux 的参数与结论,行为差异会导致判断错误

数据来源与参考

  • Docker 官方 CLI 参考:docker run --shm-size(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌