0

我在 Elastic beanstalk 集群中使用 docker 环境,但遇到打开文件限制的问题。我验证了在主机上我的打开文件限制为 65535,但在 docker 容器中,软限制为 1024,硬限制为 4096。我想在容器内增加这些限制,但是当我尝试手动执行此操作时,我即使使用root也会出错:

root@4020d4faf5fc:/# ulimit -n 20000
bash: ulimit: open files: cannot modify limit: Operation not permitted

一个类似的线程也分享了一些想法,但似乎这些想法与增加主机与容器的限制有关。

4

1 回答 1

3

您需要SYS_RESOURCELinux 功能从容器内设置 ulimit,通常使用--cap-add带有docker run.

使用 Elastic Beanstalk,可以通过以下方式完成此操作:

  1. 如果您已经在使用 docker-compose,那么像往常一样将它添加到您的 compose 文件中(在services.<your service>键下)
    ulimits:
        nofile:
            soft: 20000
            hard: 20000
    
  2. 如果您将Dockerrun.aws.json版本 1 用于单容器 Docker 环境,请参阅任务定义资源限制
    {
        "AWSEBDockerrunVersion": "1",
        .
        .
        .
        "ulimits": [
            {
                "name": "nofile",
                "softLimit": 20000,
                "hardLimit": 20000
            }
        ]
    }
    
  3. 如果您将Dockerrun.aws.json版本 2 用于多容器 Docker 环境,则此要点可能有用
    {
       "AWSEBDockerrunVersion": "2",
       "containerDefinitions": [ 
           {
               .
               .
               .
               "ulimits": [ 
                   { 
                       "hardLimit": 20000,
                       "name": "nofile",
                       "softLimit": 20000
                   }
               ]
           }
       ]
    }
    

另请参阅Elastic Beanstalk Docker 文档

于 2020-12-29T05:40:11.207 回答