【问题标题】:AWS ECS: multiple containers deployed but only one container on port 80 is discoverableAWS ECS:部署了多个容器,但只能发现端口 80 上的一个容器
【发布时间】:2020-04-06 06:22:50
【问题描述】:

我正在尝试使用 aws-cli(实例类型为 EC2)在 aws ecs 上运行我的 docker 容器

我有一个包含 2 个服务的 docker-compose 文件。

version:'3'
services:
 service-one:
  image: dockerhub/image1
  ports:
   - "4500:9090"
 service-two:
  image: dockerhub/image2
  ports:
  - "80:3030"

当我使用 ecs-cli 在 aws ecs 上运行它时:

ecs-cli compose service up --config-name config --ecs-profile etc

我的容器成功启动但是只有一个容器(服务二)出现在端口 80 上,我看不到端口 4500 上的服务一,即使它在 docker 内成功运行(码头集装箱ps)。我还尝试在端口 80 上运行 service-one,然后它出现了。

总结:我无法从网络上发现任何容器,除非它在端口 80 上运行。

【问题讨论】:

  • 检查你的安全组,好像只有80端口是公开的
  • 您可能希望在集群前面有一个 ALB
  • @Adiii 你是对的!!!我是 AWS 的菜鸟,应该明白这一点。感谢您的回答!

标签: amazon-web-services docker amazon-ec2 docker-compose amazon-ecs


【解决方案1】:

检查与您的 EC2 实例关联的安全组,并在 inbound rules 上添加类型为 http 的新规则,作为端口范围您的容器端口 (4500),作为源,仅用于测试(您正在向世界公开您的服务),选择来源Anywhere

【讨论】:

    【解决方案2】:

    正如@Madeo 的回答中提到的,您需要在 ec2 实例的安全组中打开端口 4500。您可以在端口 4500 上添加自定义 tcp 规则并将其打开到 0.0.0.0, ::/0 。但这应该仅用于测试目的。当您确定它正常工作时,更新安全组以仅接受来自您希望它到达的位置(例如负载均衡器)的流量。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 2016-07-23
      相关资源
      最近更新 更多