Docker没有使用gunicorn映射端口

时间:2016-09-29 21:36:35

标签: docker ports

我在码头工人的容器内运行枪炮。我知道这是有效的,因为sshing到它并卷曲localhost:8000 / docker容器中的东西给了我想要的响应,但是,我无法在我的主机上达到这个,尽管docker告诉我端口已被映射。是什么给了什么?

我跑了

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时,我成功地得到了正确答案。

为什么我的端口8000无法正确映射?

1 个答案:

答案 0 :(得分:11)

当您发布端口时,Docker会将请求转发到容器中,但容器需要监听它们。容器具有来自Docker网络的IP地址,您的应用程序需要侦听该地址。

Check your gunicorn bind setting - 如果它只是在127.0.0.1:8000上侦听,那么它不会绑定到容器的IP地址,也不会从外部获取请求。 0.0.0.0:8000是安全的,因为它会绑定到所有地址。