首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerrun aws硬编码内存

Dockerrun aws硬编码内存
EN

Stack Overflow用户
提问于 2019-02-22 09:33:34
回答 1查看 1.1K关注 0票数 8

Elasticbeanstalk,中的多容器Docker环境中,在Dockerrun.aws.json中必须定义内存,我想知道处理内存硬编码值的最佳实践是什么。

特别是当我们需要调整实例类型时,我们也需要调整内存值。

有没有办法指定某种百分比而不是确切的数字?也许是对@aws的一个建议

这是一个Dockerrun.aws模板示例:

代码语言:javascript
复制
{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    {
      "name": "container-1",
      "image": "image-1.com/image-xxxxxx",
      "memory": 512
    },
    {
      "name": "container-2",
      "image": "image-2.com/image-xxxxxx",
      "memory": 256
    },
    {
      "name": "container-3",
      "image": "image-3.com/image-xxxxxx",
      "memory": 256
    }
  ]
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-22 21:59:58

我不是AWS内部人员,但我们在应用程序中使用了AWSElasticBean秸秆以及更高级的部署策略(例如自定义CloudFormation模板)。以下是我作为一名使用这些服务的DevOps工程师的个人经验中的一些注意事项:

  • 最好的做法是按照文档所解释的那样,在MiB文件Dockerrun.aws.json中定义内存。1
  • 您不需要定义内存硬限制。内存软限制就足够了,正如文档所述:“为容器定义中的一个或两个内存或memoryReservation参数指定一个非零整数”1。
  • 必须将内存或memoryReservation保留提供给AWSElasticBean秸秆,因为它使用AWS作为底层服务,这需要这些值之一。它使用ECS代理将容器放置在EC2实例上,并且必须知道为每个容器预留多少空间。
  • 上面描述的升级/降级问题(即“调整实例类型”)不应该是一个问题,除非您的应用程序是内存绑定的,因为您总是可以为绑定到CPU的应用程序设置一个非常低的memoryReservation值。有关软内存和硬内存限制之间的差异的详细说明,请参见2。还请记住:“Docker守护进程为容器保留至少4 MiB的内存,因此您不应该为容器指定少于4 MiB的内存。”
  • 如果您想要更多的灵活性/控制,您可以通过AWS CloudFormation使用基础设施作为代码,始终从AWS弹性want转移到ECS部署。
  • 如果您对AWS ECS中的工作模式感兴趣,请访问AWS的以下伟大博客文章: Amazon如何管理CPU和内存资源。4.

参考文献

1

2

3

4

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54824007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档