Shm And Docker
shm 是什么及其在 docker 中的使用与设定。
shm 是什么
Shared Memory
共享内存是系统出于多个进程之间通讯的考虑,而预留的的一块内存区。
shm 实现方式
There are two different types of shared memory implementations:
- System V IPC,
- and BSD mmap.
shm 文件结构
/dev/shm
shm 也被称为 tmpfs,这个目录不在硬盘上,而是在内存里。
查看哪些进程在使用 shm
ipcs -pm
Docker Container shm
默认 64M,有三种方式修改:
- 全局修改,配置 daemon.json
{
"default-shm-size": "1G"
}
修改后重启 Docker:
sudo systemctl restart docker
- 创建容器时修改:
docker run --shm-size=2G some-container
- 在 docker-compose 指定
db:
image: "postgres:11.3-alpine"
shm_size: 1g
- 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.