我有一个tensorflow与flask应用程序一起运行在docker容器中。我在flask_client.py文件中给出了从容器外部访问的权限。
if __name__ == "__main__":
app.run(host= '0.0.0.0')
当我运行这个flask_client.py文件时,
python flask_client.py --server=172.17.0.2:9000
Initialization done.
* Running on http://0.0.0.0:5000/ (press CTRL+C to quit)
我的容器IP地址:172.17.0.2,它在端口9000上运行。
我的虚拟机IP地址:192.168.99.100
而flask运行在http://0.0.0.0:5000/
但是我可以从命令提示符ping 192.168.99.100和172.17.0.2
C:\Windows\system32>ping 192.168.99.100
Pinging 192.168.99.100 with 32 bytes of data:
Reply from 192.168.99.100: bytes=32 time=5ms TTL=64
Reply from 192.168.99.100: bytes=32 time=4ms TTL=64
Reply from 192.168.99.100: bytes=32 time=4ms TTL=64
Reply from 192.168.99.100: bytes=32 time=4ms TTL=64
Ping statistics for 192.168.99.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 5ms, Average = 4ms
C:\Windows\system32>ping 172.17.0.2
Pinging 172.17.0.2 with 32 bytes of data:
Reply from 172.17.0.2: bytes=32 time=4ms TTL=63
Reply from 172.17.0.2: bytes=32 time=4ms TTL=63
Reply from 172.17.0.2: bytes=32 time=4ms TTL=63
Reply from 172.17.0.2: bytes=32 time=4ms TTL=63
Ping statistics for 172.17.0.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 4ms, Maximum = 4ms, Average = 4ms
当我在码头集装箱里挣扎时,它显示了这样的东西。
这些是我的泊坞站容器内的端口和地址:
我现在该怎么办?
PS:我的docker PS正在显示任何端口
您需要将Flask应用程序的内部端口5000映射到主机的公共端口。例如,我将192.168.99.100:80映射到您的容器-ip端口5000。
因此,如果您在本地浏览器中访问 http://192.168.99.100 则会看到容器的内容:5000
docker run -d -p 80:5000 your_image
有关Docker运行的更多信息,请参阅文档。