我在一个在AWS EC2 Ubuntu机器上运行的docker容器内运行了一个Python Flask Web服务器。容器在默认网络设置(docker0)上运行。在主机EC2中,我可以使用docker-machine ip(172.x.x.x)和主机的转发端口(3000:3000)向此Web服务器发送请求(Get,Post)。
url: http:// 172.x.x.x:3000 / <api address>
如何从外界向此Web服务器发送(GET,POST)请求?例如,来自在另一台EC2机器上运行的另一个Web服务器。甚至是使用我的网络浏览器从网上?
如果您有解决方案,请尽可能多地向我解释详细信息。
我能想到的唯一方法是在主EC2上编写一个侦听请求并将它们转发到相应的docker容器Web服务器的Web服务器?!但那将是太多的冗余代码,我宁愿直接请求在容器上运行的Web服务器!
答案 0 :(得分:2)
泊坞窗的IP地址不公开。您的EC2实例通常具有公共IP地址。您需要一个代理侦听EC2实例上的端口并将其传递给docker / Flask服务器。然后你可以使用ec2-instance-ip:agent-port从外部调用它。
它仍然不是一个长期解决方案,因为EC2 IP在停止时会发生变化。如果您希望ip / port可靠,您最好使用负载均衡器或弹性IP。
没错,它会产生大量冗余代码和额外的故障点。这就是为什么使用亚马逊的托管泊坞服务(https://aws.amazon.com/ecs/)会更好的原因。这样您就可以启动一个EC2实例,它是一个docker并具有一个公共IP地址。它仍然允许您SSH到您的EC2实例并更改内容。