无法从 Web 浏览器访问 EC2 上的 docker webapp
Cannot access a docker webapp on EC2 from a web browser
我正在 运行在 Amazon EC2 上的 docker 容器中安装一个网络应用程序,但我的网络浏览器没有显示任何内容并且无法访问。我忘了什么吗?如果有人能指出原因并提供提示,我将不胜感激。
这就是我 运行 网络应用程序的方式:
ubuntu@ip-172-31-29-212:~$ sudo docker run -p5000:5000 makotodocker/my-image:test-0.0.2
* Serving Flask app 'application.py' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
这是我在此 EC2 实例上的安全组设置。
我的实例的 public IPv4 地址是 13.38.1.129,所以我输入 https://13.38.1.129:5000。但是浏览器没有显示任何内容,只是无法连接。
编辑: 这是 docker ps --all
的结果
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
695a6671ebf4 makotodocker/my-image:test-0.0.2 "flask run" 20 seconds ago Up 19 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp angry_taussig
这是 ps -ef | grep 5000
的结果,不确定是否有帮助。
ubuntu@ip-172-31-29-212:~$ ps -ef | grep 5000
root 3784 567 0 05:09 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5000 -container-ip 172.17.0.2 -container-port 5000
root 3789 567 0 05:09 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5000 -container-ip 172.17.0.2 -container-port 5000
ubuntu 3856 3667 0 05:09 pts/0 00:00:00 grep --color=auto 5000
您运行在您的本地主机地址 (127.0.0.1) 中安装您的应用程序,运行它使用 0.0.0.0 作为主机,它应该可以工作。
localhost 和 0.0.0.0 的区别在于前者是一个环回地址,而后者是一个元地址,映射了您实例中的所有地址。
工作示例:
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def main():
return "Hello, World!"
运行 与:
flask run --host 0.0.0.0
确保端口 5000 在实例的安全组中列入白名单。
我正在 运行在 Amazon EC2 上的 docker 容器中安装一个网络应用程序,但我的网络浏览器没有显示任何内容并且无法访问。我忘了什么吗?如果有人能指出原因并提供提示,我将不胜感激。
这就是我 运行 网络应用程序的方式:
ubuntu@ip-172-31-29-212:~$ sudo docker run -p5000:5000 makotodocker/my-image:test-0.0.2
* Serving Flask app 'application.py' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
这是我在此 EC2 实例上的安全组设置。
我的实例的 public IPv4 地址是 13.38.1.129,所以我输入 https://13.38.1.129:5000。但是浏览器没有显示任何内容,只是无法连接。
编辑: 这是 docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
695a6671ebf4 makotodocker/my-image:test-0.0.2 "flask run" 20 seconds ago Up 19 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp angry_taussig
这是 ps -ef | grep 5000
的结果,不确定是否有帮助。
ubuntu@ip-172-31-29-212:~$ ps -ef | grep 5000
root 3784 567 0 05:09 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5000 -container-ip 172.17.0.2 -container-port 5000
root 3789 567 0 05:09 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5000 -container-ip 172.17.0.2 -container-port 5000
ubuntu 3856 3667 0 05:09 pts/0 00:00:00 grep --color=auto 5000
您运行在您的本地主机地址 (127.0.0.1) 中安装您的应用程序,运行它使用 0.0.0.0 作为主机,它应该可以工作。
localhost 和 0.0.0.0 的区别在于前者是一个环回地址,而后者是一个元地址,映射了您实例中的所有地址。
工作示例: app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def main():
return "Hello, World!"
运行 与:
flask run --host 0.0.0.0
确保端口 5000 在实例的安全组中列入白名单。