如何使用docker run启动flask服务器并在主机上使用它?

时间:2015-08-26 13:27:20

标签: python flask docker

我有一个烧瓶脚本,我尝试通过docker run命令执行它。按照命令我正在做

docker run -dit -v /media/sf_MY_WINDOWS/GitRepo/:/ext/GitRepo -p 5000:5000 "isbhatt/prefixman:v1" /ext/docker/vm_scripts/db_loader.sh

和db_loader.sh文件包含

/usr/local/bin/python2.7 /ext/SDSNG/src/prefix_manager/manage.py runserver --host 0.0.0.0 &

但是当我卷曲localhost:5000 Connection拒绝了。 如果我进入容器并运行这些东西并卷曲localhost:5000它在容器中工作.. 这有什么不对?

在容器上输出netstat -tln

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:5000                0.0.0.0:*                   LISTEN  

1 个答案:

答案 0 :(得分:1)

如果您的容器内部的脚本绑定到127.0.0.1,则通常使用-p提供的端口转发将不起作用。确保您的服务正在容器内部监听0.0.0.0

您可以通过在容器内运行netstat -tln来检查您的服务正在侦听的地址:

container# netstat -tln

如果你看到这个:

tcp        0      0 127.0.0.1:5000         0.0.0.0:*               LISTEN

那就是你的问题。你想看到:

tcp        0      0 0.0.0.0:5000           0.0.0.0:*               LISTEN