Amazon web services 调用运行在AWS EC2上的容器

Amazon web services 调用运行在AWS EC2上的容器,amazon-web-services,amazon-ec2,Amazon Web Services,Amazon Ec2,我有一个Linux EC2,里面运行docker。 Docker正在运行3个服务。2个是工人,1个是API 我希望能够从系统外调用该API,但我得到“无法访问此站点”。 服务正在运行,调用是一个简单的ping,它通过VS在本地工作,因此我认为这不是问题所在 我的安全组具有0.0.0.0/0允许的所有通信量 我尝试了以下URL,但没有成功: http://ec2-{public ip}.ap-southerast-2.compute.amazonaws.com/ping http://{publ

我有一个Linux EC2,里面运行docker。 Docker正在运行3个服务。2个是工人,1个是API

我希望能够从系统外调用该API,但我得到“无法访问此站点”。 服务正在运行,调用是一个简单的
ping
,它通过VS在本地工作,因此我认为这不是问题所在

我的安全组具有
0.0.0.0/0
允许的所有通信量

我尝试了以下URL,但没有成功:

  • http://ec2-{public ip}.ap-southerast-2.compute.amazonaws.com/ping
  • http://{public ip}/ping
  • http://{public ip}/172.17.0.2/ping(容器ip地址)
根据评论

实际上不“公开”端口:

EXPOSE指令实际上并不发布端口。它作为构建映像的人员和运行容器的人员之间的一种文档类型,用于发布哪些端口。要在运行容器时实际发布端口,请使用docker上的-p标志发布并映射一个或多个端口,或使用-p标志发布所有公开的端口并将其映射到高阶端口


因此,要将容器中的端口80公开给实例,必须使用
-p80:80
选项。

容器正在侦听端口80?另外,如果您从实例中
curl localhost
,它是否工作?不,它是“连接被拒绝”的,但我在docker文件中公开了80,因此假设这样做
EXPOSE
本身不会公开任何内容。当您运行容器时,您必须使用
-p80:80
选项显式地允许它。啊,是的,这是有效的。谢谢@MarcinPerfect。着手