我正在尝试将Docker主机上的脚本连接到Docker容器上的脚本。
这些脚本使用的是Python的远程队列管理器,它们在Docker之外完美运行,所以我很确定问题在于我的Docker配置或我对Docker端口转发的理解。
容器上的脚本正确绑定到(localhost,5800),我验证脚本不会崩溃。
我已尝试让脚本连接到端口5800上容器的IP地址,但这不起作用(连接被拒绝)。我也尝试使用-p标志并将5800转发到随机端口,然后从Docker主机连接到(localhost,randomport),这也不起作用(连接被拒绝)。
同样,脚本肯定在运行,因为即使我在容器上获取shell并手动启动脚本,也会发生问题,确保它成功启动服务器并且不会将其关闭。
对我而言,这似乎与在Docker容器中运行Web服务器完全相同。为什么这不起作用?这些脚本在Docker之外工作就好了。
https://github.com/hashme/thistle/tree/flask_thistle
(请参阅容器脚本的room.py和主机脚本的app.py;我没有完全运行脚本但是在REPL中乱码,所以我调整了很多参数而没有成功)
要复制问题,首先运行./container.sh,然后(在REPL中)导入应用程序并创建一个带有一些IP地址和端口号的MessagePasser。运行app.py脚本什么都不做。
答案 0 :(得分:1)
容器上的脚本正确绑定到(localhost,5800)
您需要确保容器内的脚本绑定到" 0.0.0.0" (所有接口)地址,而不是localhost(环回)。否则它将无法接受任何外部连接。