一个应用程序 – >在单个Ec2上运行多个Docker实例

我有一个应用程序,比如一个API,在ec2上作为docker容器运行。 由于这个容器依赖于ec2主机(端口映射),我无法在同一台机器上运行多个实例。

我想要达到一个状态,我有5个主机,前面有一个elb,我应该能够在所有这些主机上运行多个容器实例。

我知道我可以使用ECS来达到这个状态。

我可以做Ec2,ELB和Docker吗?

-谢谢

有多种方法可以做到这一点

为每个docker集装箱使用不同的端口

docker run -d -p 81:80 yourimage docker run -d -p 82:80 yourimage docker run -d -p 83:80 yourimage docker run -d -p 84:80 yourimage docker run -d -p 85:80 yourimage 

然后,您可以在端口80上放置一个nginx负载均衡器。有关http://nginx.org/en/docs/http/load_balancing.html的更多详细信息

你需要使用下面的configuration

 http { upstream myapp1 { server 127.0.0.1:81; server 127.0.0.1:82; server 127.0.0.1:83; server 127.0.0.1:84; server 127.0.0.1:85; } server { listen 80; location / { proxy_pass http://myapp1; } } } 

使用单节点泊坞窗群pipe理器

你可以使用下面的命令设置一个单一的节点docker群

 docker swarm init 

然后在那台机器上运行下面的命令

 docker service create --name=myapp --replicase=5 -p 80:80 yourimage 

这将创build5个负载平衡的容器并将其发布到端口80上。

在这两种情况下都不需要ELB。 我怀疑ELB是在同一个主机+多端口的情况下工作的