假设我有两个 Docker 容器 1 和 2。我想使用多容器 Docker 映像将它们部署到 AWS Elastic Beanstalk,以便我拥有以下 EC2 实例来降低成本:
EC2 实例 2
EC2 实例 3
所以我的问题是:
我需要创建多少个 Elastic Beanstalk 应用程序?
您可以使用具有多个环境的单个应用程序获得您想要的设置。这在有关环境的Elastic Beanstalk 文档中进行了描述。对于您的用例,您将为同一个应用程序配置一个“生产”和“测试”环境。
您的环境可以有不同的配置,因此您可以为您的测试环境使用更小(更便宜)的 EC2 实例。
您还可以有不同的自动扩展规则,因此在您描述的环境中,您将在测试环境中指定至少 1 个 EC2 实例,但在生产环境中至少指定 2 个 EC2 实例。
如何让 Container 的 1 & 2 共享 EC2 实例?
我想您是在问如何将两个 Docker 容器部署到充当 Docker 主机的单个 EC2 实例上?
这在Dockerrun.aws.json
文件中定义,该文件记录在Elastic Beanstalk 指南 中。注意 - 对于多容器 Docker 应用程序,您应该参考版本 2。
该文件声明了您希望如何配置您的环境。与您的问题相关的一点是containerDefinitions
它包含一组 Docker 容器,您可以将这些容器部署到您的主机(底层 EC2 实例)。
当 Elastic Beanstalk 扩展您的环境时,它会将 Dockerrun 文件中的配置应用到新实例。因此,如果您的示例生产环境扩展为具有三个实例,您最终会得到第三个实例运行相同的两个容器。
需要创建多少个 ELB
根据文档,您将在每个环境中拥有一个 Elastic Load Balancer:
每个环境都有一个指向负载均衡器的 CNAME (URL)。
在containerDefinition
上面提到的 Dockerrun 文件部分中,您可以为容器定义端口映射。因此,如果您的示例中的容器之一正在运行 Nginx,您的 Dockerrun 文件中将具有与此类似的配置:
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
然后将此配置应用于运行您的容器配置的任何实例 - 当负载均衡器将请求路由到该特定实例时,它会转发到侦听端口 80 的容器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句