假设我有两个Docker容器1和2.我想使用多容器Docker镜像将它们部署到AWS Elastic Beanstalk,这样我就可以使用以下EC2实例来降低成本:
EC2实例2
EC2实例3
所以我的问题是:
答案 0 :(得分:4)
我需要创建多少个Elastic Beanstalk应用程序?
您可以使用包含多个环境的单个应用程序来获取您喜欢的设置。这在Elastic Beanstalk Documentation环境中有所描述。对于您的用例,您将拥有一个" production"和"测试"为同一个应用程序配置的环境。
您的环境可以有不同的配置,因此您可以为测试环境使用更小(更便宜)的EC2实例。
您还可以使用不同的自动缩放规则,因此在您所描述的环境中,您将在测试环境中指定至少1个EC2实例,但在生产中至少指定2个EC2实例。
我怎样才能获得Container& 1& 2分享EC2实例?
我想你问的是如何将两个Docker容器部署到充当Docker主机的单个EC2实例上?
这是在Dockerrun.aws.json
文件中定义的,Elastic Beanstalk guide中记录了该文件。注 - 您应该参考版本2的多容器Docker应用程序。
该文件声明了您希望如何配置环境。您的问题的相关位是containerDefinitions
,其中包含您将部署到主机(基础EC2实例)的Docker容器数组。
当Elastic Beanstalk扩展您的环境时,它会将Dockerrun文件中的配置应用于新实例。因此,如果您的示例生产环境扩展为具有三个实例,那么您最终将运行相同的两个容器的第三个实例。
需要创建多少个ELB
根据documentation,每个环境都有一个Elastic Load Balancer:
每个环境都有一个指向负载均衡器的CNAME(URL)。
在上面提到的Dockerrun文件的containerDefinition
部分中,您可以定义容器的端口映射。因此,如果您的示例中的一个容器正在运行Nginx,那么您的Dockerrun文件中的配置将与此类似:
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
然后,此配置将应用于运行容器配置的任何实例 - 当负载均衡器将请求路由到该特定实例时,它将转发到侦听端口80的容器。