如何使用AWS CloudFormation在内部彼此公开Docker容器?

时间:2020-07-10 16:39:58

标签: amazon-web-services docker selenium amazon-cloudformation

我是一个AWS新手。我有一个Web服务器容器和一个Selenium Hub容器。我的Web服务器需要访问另一个容器。我可以在使用docker-compose的开发环境中执行此操作(默认情况下,容器按名称彼此公开)。 我对如何使用AWS CloudFormation做到这一点感到困惑。 有"links" parameter in the ContainerDefinition,但我认为这使用了旧版docker link参数。所以我不愿意使用它。

有什么建议吗?

P.S:我不想向公众开放Selenium实例,因此不能使用公共主机名/ IP。

3 个答案:

答案 0 :(得分:2)

尽管在纯Docker世界中,links参数是 legacy ,但它仍然是在不依赖于专用服务发现的情况下连接AWS ECS世界中容器的最简单方法 / strong>(例如ConsulRoute 53)。

使用links的最大警告是不可能使用圆形链接。另外,容器必须在相同的任务/服务中运行。 links参数无法在多个任务/服务中使用。

答案 1 :(得分:2)

好,我解决了我的问题。 我遵循了这个blog

并将2个紧密耦合的容器放入相同的任务定义中,我只能够访问另一个容器,例如:localhost:port。

一切正常。

对于面临相同问题的其他人;如果您的容器没有紧密耦合,那么这一解决方案可能不是您的最佳选择,有一天您可能需要将它们部署在单独的计算机中。

但是对我来说很好。

答案 2 :(得分:0)

创建一个private DNS namespace并通过DnsConfig在此名称空间中注册您的服务。这将使您的服务可以通过Name提供的域名来访问。 我们使用Type: A, TTL: 10作为DnsRecords的配置。