如何增加docker容器中/dev/shm的大小

问题描述 投票:0回答:5

目前,当我创建新的 docker 容器时,共享内存目录的大小限制为 64MB。但是,我需要增加这个大小,因为我的应用程序依赖于这个共享内存。 有没有办法增加docker容器中/dev/shm的大小? 我听说 64MB 是硬编码在 docker 代码中的,如何从源代码安装 docker 并更改 /dev/shm 的值?

docker containers
5个回答
167
投票

如果您使用 docker-compose,如果您希望容器在

running
your_service.shm_size
building
时使用 /dev/shm 大小,则可以设置 your_service.build.shm_size 值。

示例:

version: '3.5'
services:
  your_service:
    build:
      context: .
      shm_size: '2gb' <-- this will set the size when BUILDING
    shm_size: '2gb' <-- when RUNNING 

链接到来源


111
投票

您可以通过将可选参数

--shm-size
传递给
docker run
命令来修改shm大小。默认为 64MB。

例如:

docker run -it --shm-size=256m oracle11g /bin/bash

17
投票

如果你使用docker-compose来设置你的docker环境,也可以在

docker-compose.yml
配置文件中设置共享内存:

build:
  context: .
  shm_size: '2gb'

撰写文件文档中的更多信息:


11
投票

如果有人使用 1.10.0 之前的旧版 docker,并且由于某种原因无法升级,我可以使用一个解决方法来设置 shm-size,这对我来说效果很好(您需要 sudo 权限才能在主机上创建挂载) :

sudo mkdir /mnt/dockershm
sudo mount -t tmpfs -o size=1G tmpfs /mnt/dockershm
docker run -d -v /mnt/dockershm:/dev/shm dockerimagetorun:latest

3
投票

有时编辑 docker daemon 的全局配置可能更合适,而不是在 docker-compose.yml 或 cli 中设置值。

这里是守护进程配置文件

的文档

选择一种编辑配置的方法:

  1. 在 Docker Desktop 上,您可以转到
    Settings->[Docker Engine]
  2. 在 Linux 上,您可以在
    /etc/docker/daemon.json
  3. 编辑默认文件
  4. 在窗户上
    %programdata%\docker\config\daemon.json
  5. 在 Mac 上
    ~/.docker/daemon.json

编辑配置文件以更改

shm
默认大小。

示例:

{
   ...
   "default-shm-size" : "128M"
   ...
}

更改后,可能需要重启docker来重新配置。

© www.soinside.com 2019 - 2024. All rights reserved.