我有一个Flask应用程序在Azure vm上的docker容器中运行。
应用程序在端口5000上运行,我将该端口暴露给docker
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
57cdce7b5b2b auto_ml2:latest "/bin/sh -c 'python3…" 6 seconds ago Up 5 seconds 0.0.0.0:5000->5000/tcp serene_mcnulty
mlcontainers2@automl:/$
我正在尝试进行以下API调用:
headers = {'content-type': 'application/json'}
url = "http://XX.XX.X.XX:5000/api/AutoML"
resp = requests.post(url,data=json.dumps(data), headers=headers )
但是过了一会儿,我得到一个超时错误:
Failed to establish a new connection: [Errno 110] Connection timed out'))
我认为该端口必须关闭,因此我为其添加了一条规则,并打开了80和5000-6000端口并重新启动VM
但是在此之后我得到了同样的错误。
编辑
我从VM对其进行了测试,它可以正常工作:
但是从远程请求中,我总是收到相同的错误:
答案 0 :(得分:1)
对于此问题,首先,需要确保可以从VM内的映像访问容器。然后,您需要添加规则,以允许NSG中与VM关联的所有TCP端口。最后,您可以使用NSG规则允许的正确端口通过VM公共IP访问VM外部的API服务器。