Shm And Docker

shm 是什么及其在 docker 中的使用与设定。

shm 是什么

Shared Memory

共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。

shm 实现方式

There are two different types of shared memory implementations:

shm 文件结构

/dev/shm

shm 也被称为 tmpfs,这个目录不在硬盘上,而是在内存里。

查看哪些进程在使用 shm

ipcs -pm

Docker Container shm

默认 64M,有三种方式修改:

  1. 全局修改,配置 daemon.json
{
    "default-shm-size": "1G"
}

修改后重启 Docker:

sudo systemctl restart docker
  1. 创建容器时修改:
docker run --shm-size=2G some-container

  1. 在 docker-compose 指定
db:
  image: "postgres:11.3-alpine"
  shm_size: 1g
  1. remount
mount -o remount,size=256m -t tmpfs /var/lib/docker/containers/your-container-id/mounts/shm

参考

pq: could not resize shared memory segment. No space left on device.

Shared Memory & Docker