我刚刚启动了一个新的 AWS EC2 实例。在实例的安全组中,我添加了一条新规则来打开端口 8080 以及端口 80。
我创建了一个 docker 镜像和容器,根据 aws tutorial 运行 apache 服务器。 .
当我运行docker run -p 80:80 hello-world
时(其中 hello-world 是 apache 容器镜像),一切正常,我可以从公共(public)网络访问服务器(使用 Web 浏览器或curl 命令)。
但是,当我运行 docker run -p 8080:80 hello-world
时我尝试发送 GET 请求(网络浏览器或curl),但出现连接超时。
如果我登录到运行 docker 容器的主机,curl 命令可以正常工作。这告诉我端口 8080 并未真正向公共(public)网络开放,并且有东西阻止了它,那可能是什么?
最佳答案
我试图重现这个事情,但我无法做到(它对我有用),所以你应该检查的事情:
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 :
curl http://your.ip:8080
关于amazon-web-services - 无法访问AWS EC2上的8080端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53136876/