【问题标题】:AWS Elastic beanstalk: how to set ulimit when using docker imagesAWS Elastic beanstalk:使用 docker 镜像时如何设置 ulimit
【发布时间】:2021-04-05 18:45:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-web-services docker amazon-elastic-beanstalk amazon-ecs


    【解决方案1】:

    您需要SYS_RESOURCE Linux 功能才能从容器内设置 ulimit,通常指定为 using the --cap-add flag with docker run

    使用 Elastic Beanstalk 可以通过以下方式实现:

    1. 如果您已经在使用 docker-compose,然后像往常一样将它添加到您的 compose 文件中(在 services.<your service> 键下)
      ulimits:
          nofile:
              soft: 20000
              hard: 20000
      
    2. 如果您将Dockerrun.aws.json 版本1 用于单容器Docker 环境,请参阅Task Definition Resource Limits
      {
          "AWSEBDockerrunVersion": "1",
          .
          .
          .
          "ulimits": [
              {
                  "name": "nofile",
                  "softLimit": 20000,
                  "hardLimit": 20000
              }
          ]
      }
      
    3. 如果您将Dockerrun.aws.json 版本2 用于多容器Docker 环境,this gist may be useful
      {
         "AWSEBDockerrunVersion": "2",
         "containerDefinitions": [ 
             {
                 .
                 .
                 .
                 "ulimits": [ 
                     { 
                         "hardLimit": 20000,
                         "name": "nofile",
                         "softLimit": 20000
                     }
                 ]
             }
         ]
      }
      

    另请参阅Elastic Beanstalk Docker docs

    【讨论】:

    • 谢谢@tamth,这看起来很有希望。我找不到 containerDefinitions 的文档,你知道它是否适用于特定版本的 Dockerrun.aws.json
    • @Ankit 谢谢,我已经扩展了答案以区分 v1 和 v2。
    • 谢谢。我们最终切换到使用 docker-compose.yml。似乎最直接。
    • @tamth 你试过解决方案 2 吗?我的测试没有任何改变。 :思考:
    • @user1791139 我需要更多上下文来理解您的问题。
    猜你喜欢
    • 2015-01-16
    • 2020-01-21
    • 2015-07-12
    • 2019-08-10
    • 1970-01-01
    • 2021-11-25
    • 2021-09-30
    • 2015-08-07
    相关资源
    最近更新 更多