让docker通过-P标志自动选择端口范围的用例是什么?
这是否只是方便,所以您不必显式传递特定端口?但是,需要访问该服务的任何事情都需要知道端口正确吗?
答案 0 :(得分:2)
就目前的用例而言,在某些情况下(例如在单个主机上部署蓝绿色),让docker自动选择端口非常重要。
对于实例,您在AWS ECS上运行容器,并且有一个EC2实例,因此您将无法进行蓝绿色部署,在这种情况下,您会收到类似
的错误消息服务测试无法放置任务,因为没有容器实例满足其所有要求。最匹配的匹配容器实例97d97ce9-967d-49ad-83ad-f4f904aae1f6已在使用您的任务所需的端口。有关更多信息,请参见“故障排除”部分。
您也可以查看这篇文章
如果您的服务包含2个容器(任务),则至少需要2个ECS容器实例,因为多个容器无法在同一服务器上的同一端口上运行,因此每个容器都托管在单独的服务器上。因此,为了在同一个容器实例上运行多个容器,我们需要动态端口映射!
这是在AWS的上下文中,您也可以通过使用动态端口映射在主机上部署多个服务来进行复制。
understanding-dynamic-port-mapping-in-amazon-ecs-with-application-load-balancer
这是一种情况,另一种情况是,您可以运行同一docker容器的多个服务,因为所有服务都需要相同的端口,这可以使用动态端口来实现。
另一种情况可能是Wowza流引擎,该引擎需要动态端口或端口范围来发布并从客户端获取流。
在使用AWS的情况下,动态端口映射在此处进行了解释。
https://aws.amazon.com/premiumsupport/knowledge-center/dynamic-port-mapping-ecs/