【问题标题】:How to increase the size of the /dev/shm in docker container如何增加 docker 容器中 /dev/shm 的大小
【发布时间】:2015-05-13 09:11:22
【问题描述】:

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

【问题讨论】:

  • 我很难找到这个。然而,这正是我的问题。在这里添加 shm_open 和 mmap 是希望 Google 能抓住这个 SO 帖子并让其他人的生活更轻松。这就是我支持这个问题的方式,对将文件映射到 /dev/shm 一无所知。

标签: docker containers


【解决方案1】:

如果您使用 docker-compose,您可以设置 your_service.shm_size 值,如果您希望容器在 运行 时使用该 /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 

Link to source.

【讨论】:

  • 这个答案显示了在构建案例和服务案例中使用 shm_size 的区别。我想知道为什么答案不被接受!
【解决方案2】:

您可以通过将可选参数--shm-size 传递给docker run 命令来修改shm 大小。默认为 64MB。

例如:

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

【讨论】:

  • 这不适用于带有 docker 1.11.0 的 debian 8。也不能作为构建参数工作!
  • 增加 shm 大小是否有负面影响? (除了增加的资源使用)
  • 这对我有用,但我将其设置为 2gb:--shm-size=2gb
  • 此解决方案很有帮助(也适用于 = 符号替换为空格)。但是,在 Docker Desktop for Windows 上,对于docker build(而不是docker run),它在某个时刻停止工作(可能在升级后但我无法证明)。我意识到这是由激活 Docker Buildkit 引起的。这个线程github.com/docker/buildx/issues/418 表明它不支持--shm-size 选项。解决办法是永久设置系统变量DOCKER_BUILDKIT=0,一切恢复正常。
【解决方案3】:

如果你使用docker-compose设置你的docker环境,也可以在docker-compose.yml配置文件中设置共享内存:

build:
  context: .
  shm_size: '2gb'

compose-file 文档中的更多信息:

【讨论】:

    【解决方案4】:

    如果有人使用 1.10.0 之前的旧 docker 版本并且由于某种原因无法升级,有一个我用来设置 shm-size 的解决方法对我来说很好(你需要 sudo-rights 在主持人):

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 2021-01-10
      • 2021-05-15
      • 1970-01-01
      • 2020-04-23
      相关资源
      最近更新 更多