Docker Compose:将不同的服务从docker-compose.yml部署到不同的主机集
比方说,我有一个docker-compose.yml
文件,有三种不同的服务(s1,s2,s3)。 然后,如果我部署它们,比如在一个主机上的AWS ECS(举个例子)群集,所有的三个containers
都会去那个主机。 如果我缩放群集2主机,那么第二个主机,然后第二个主机也将获得所有三个containers
。
理想情况下,我想为不同的services
有不同的 clusters
,以便它们可以独立扩展。 我不想让我的数据库容器与我的backend
容器在同一个群集上,因为它们都有不同的扩展需求。
我将如何实现这种与docker构成的行为?
Kubernetes提供了这种抽象的概念,但是由于这不是docker的一部分,我想知道如何在docker中开发多服务应用程序,其中每个service
(在docker-compose.yml中定义)可以独立调整。 *
对于ECS,您需要创build多个群集(即,如果您坚持通过撰写进行部署,则需要为每个基础架构创build一个群集),或者只需创build多个任务。 每个任务应该是你的堆栈中的一个层(即API或网站等)。 然后,您可以独立缩放图层。
ECS和K8S之间最大的区别在于,由于ECS使用主机端口映射,所以不能有两个不同的任务公开相同的端口并在同一主机上运行。
看看这个aws文章以及: http : //docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html
让我们直接在这里得到术语:
docker-compose
在单个主机上部署Docker containers
。
docker-swarm
是用来在多个主机上部署containers
的工具。
通常,一个cluster
是一组主机(或节点 ),可以是一起工作的物理机器或虚拟机。
Pod
不是一个集群:它是一组保证在单个节点上运行的容器,分组在一起并通过本地主机进行通信。
在Kubernetes中 ,部署将根据复制策略,节点资源和关联性在所有可用nodes
上安排容器,因此您不需要定义容器的位置:Kubernetes为您pipe理该容器。
然后你用两种方法进行缩放:
- 通过简单地增加容器的复制因子来扩展容器实例的数量(或者也可以使用自定义的策略)
- 通过添加新节点(物理或虚拟机)来扩展集群,从而为集群添加资源。
- Python中的AWS Elastic Beanstalk container_commands 3.4 Docker容器
- 弹性beanstalk泊坞窗应用程序不部署时更新
- Auth0 OWIN API在通过AWS EC2上的Docker Container发布时不validationJWT令牌
- Docker Scrapinghub /飞溅与139退出
- 从docker-compose到AWS
- 在EC2实例上使用IAMangular色的“没有基本身份validation凭据”
- 具有绑定端口和绑定主机名的Akka集群
- Amazon ECS – dockerlogin未经授权:需要身份validation
- 如何设置从docker-hub到AWS ECS的连续部署?