我发现docker镜像TensorFlow/serving实际上使用可执行文件tensorflow_model_server
来启动服务器。所以我把它装进一个码头集装箱手动启动服务器。
我的命令:
tensorflow_model_server --model_base_path=/root/serving/my_image_classifier/ --rest_api_port=8501 --model_name=ImageClassifier
此命令启动服务器,日志如下:
2018-11-27 03:56:43.302391: I tensorflow_serving/core/loader_harness.cc:86] Successfully loaded servable version {name: ImageClassifier version: 2}
2018-11-27 03:56:43.304439: I tensorflow_serving/model_servers/server.cc:286] Running gRPC ModelServer at 0.0.0.0:8500 ...
[warn] getaddrinfo: address family for nodename not supported
2018-11-27 03:56:43.306009: I tensorflow_serving/model_servers/server.cc:302] Exporting HTTP/REST API at:localhost:8501
正如它所说,它的HTTP/RESTneneneba API导出为localhost。这是不对的,因为如果服务器在docker中绑定到localhost,则无法从外部附加。
我认真地阅读了帮助,但没有发现任何有用的东西。
那么,我如何让它绑定在0.0.0.0上呢
TensorFlow ModelServer版本:
TensorFlow ModelServer: 1.12.0-rc0+dev.sha.87470f0
TensorFlow Library: 1.12.0
事实上,即使日志显示HTTP/RESTneneneba API绑定在"localhost"上,它实际上也可以连接到docker容器外部。
为什么我不能附加它是另一个奇怪的问题(在机器重新启动后,whitch自动消失(。
然而,我仍然认为tensorflow_model_server在日志中使用"localhost"是不对的,尤其是当它告诉RPC绑定"0.0.0.0"时
我应该打开一个问题。