docker不使用gunicorn映射端口

我在docker集装箱内运行gunicorn。 我知道这是可行的,因为sshing到它和curl本地主机:8000 /docker容器中的东西给我我想要的反应,但是,我无法达到我的主机,尽pipedocker告诉我的端口已映射。 是什么赋予了?

我跑了

docker run -d -p 80:8000 myapp:version1.1 /bin/bash -c 'gunicorn things:app' 

docker ps给我

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 614df1f2708e myapp:version1.1 "/bin/bash -c 'gunico" 6 minutes ago Up 6 minutes 5000/tcp, 0.0.0.0:80->8000/tcp evil_stallman 

在我的主人,冰壶locahost /东西给我

 curl: (52) Empty reply from server 

但是,当我docker exec -t -i 614df1f2708e /bin/bash然后curl localhost:8000/things ,我成功地得到我的正确答案。

为什么不是docker正确映射我的端口8000?

当你发布一个端口时,Docker会将请求转发到容器中,但是容器需要监听它们。 该容器有一个来自Dockernetworking的IP地址,并且您的应用程序需要监听该地址。

检查你的gunicorn绑定设置 – 如果它只在127.0.0.1:8000监听,那么它不绑定到容器的IP地址,也不会从外部获取请求。 0.0.0.0:8000是安全的,因为它会绑定到所有地址。