我刚刚启动了一个新的AWS EC2实例。在实例的安全组中,我添加了一个新规则来打开端口8080和端口80。
我创建了一个根据aws tutorial运行apache服务器的docker映像和容器。
当我运行docker run -p 80:80 hello-world
(其中hello-world是apache容器映像)时,一切正常,我可以从公用网络(使用Web浏览器或curl命令)访问服务器。
但是,当我运行docker run -p 8080:80 hello-world
并尝试发送GET请求(Web浏览器或curl)时,我得到了连接超时。
如果我登录到运行Docker容器的主机,则curl命令可以正常运行。这告诉我端口8080并没有真正向公共网络开放,并且有什么阻止它,那会是什么?
答案 0 :(得分:0)
我试图复制该东西,但是我无法做到(它对我有用),因此您应该检查一下这些东西:
1)检查安全组是否确实为您的ip打开了端口80和8080(如果只是为了确认这不是防火墙问题而进行的测试,则为0.0.0.0/0)。
2)检查容器是否正在运行:
docker ps -a
您应该在端口下看到:0.0.0.0:8080->80/tcp。
3)检查发送GET请求时,是否在请求中指定了端口8080,因此浏览器应类似于:
http://your.ip:8080
或卷曲:
curl http://your.ip:8080
答案 1 :(得分:0)