我在docker集装箱内运行gunicorn。我知道这是可行的,因为在docker容器中放入sshing并卷曲localhost:8000/things会给我想要的响应,但是,尽管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
时,我成功地得到了正确的响应
为什么docker没有正确映射我的端口8000
发布端口时,Docker会将请求转发到容器中,但容器需要侦听它们。容器具有来自Docker网络的IP地址,您的应用程序需要监听该地址
Check your gunicorn bind setting-如果它只在
127.0.0.1:8000
上侦听,那么它不会绑定到容器的IP地址,也不会从外部获取请求0.0.0.0:8000
是安全的,因为它将绑定到所有地址相关问题 更多 >
编程相关推荐