我有一个烧瓶脚本,我尝试通过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
答案 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