首页 > 解决方案 > “目标机主动拒绝”对 tensorflow 服务 Docker 容器的 POST 请求

问题描述

编辑:我需要将与容器配对的 DOCKER 虚拟机端口转发到我的本地机器的相同端口。

我正在尝试使用 REST API 从本地托管在 docker 工具箱容器上的模型的 tensorflow 服务中获得响应,并且收到任何尝试从我的主机连接到它的错误。我已经用尽了所有我能想到的尝试或搜索来解决我的问题。

我尝试连接 localhost:8501 和 192.168.99.101:8501 中的 docker IP 和 117.17.0.2:8501 容器的 IP,但均未成功。

这是与我的问题有关的更多详细信息的 imgur 专辑,以获取更多上下文,包括 docker 机器详细信息、容器详细信息、我尝试的 POST 和 GET 请求、VirtualBox 统计信息和容器日志:https://imgur。 com/a/hORpGYd

在所有这些尝试中,我还尝试禁用我的防火墙。

我可以成功 ping 192.168.99.101 但不能 192.168.99.101:2376 也不能 192.168.99.101:8501。

当我进入 Docker 容器并运行 tensorflow_model_server 命令时,出现另一个错误,该错误位于 imgur 库的开头。

我的主机操作系统是 Windows 10 家庭版。

我真的不确定这个问题是否是虚拟盒子不应该拒绝连接的网络问题,或者它是否可能是 tensorflow 服务方面的问题。

提前感谢您的帮助!

Traceback (most recent call last):
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\connection.py", line 171, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw)
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\util\connection.py", line 79, in create_connection
    raise err
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\util\connection.py", line 69, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 354, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Users\Charles\Anaconda3\lib\http\client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\Charles\Anaconda3\lib\http\client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\Charles\Anaconda3\lib\http\client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\Charles\Anaconda3\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
  File "C:\Users\Charles\Anaconda3\lib\http\client.py", line 964, in send
    self.connect()
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\connection.py", line 196, in connect
    conn = self._new_conn()
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\connection.py", line 180, in _new_conn
    self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000002902F3DECC0>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Charles\Anaconda3\lib\site-packages\requests\adapters.py", line 445, in send
    timeout=timeout
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\connectionpool.py", line 638, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Users\Charles\Anaconda3\lib\site-packages\urllib3\util\retry.py", line 398, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=8501): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000002902F3DECC0>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/Charles/PycharmProjects/spamreader/test4.py", line 3, in <module>
    out = requests.get("http://localhost:8501")
  File "C:\Users\Charles\Anaconda3\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Users\Charles\Anaconda3\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\Charles\Anaconda3\lib\site-packages\requests\sessions.py", line 512, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Charles\Anaconda3\lib\site-packages\requests\sessions.py", line 622, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Charles\Anaconda3\lib\site-packages\requests\adapters.py", line 513, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8501): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000002902F3DECC0>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it',))

泊坞窗中的错误消息:

>   --model_name=prod_mod --model_base_path=/models/prod_mod
2019-01-22 05:21:16.214490: I tensorflow_serving/model_servers/server.cc:82] Building single TensorFlow model file config:  model_name: prod_mod model_base_path: /models/prod_mod
2019-01-22 05:21:16.215026: I tensorflow_serving/model_servers/server_core.cc:461] Adding/updating models.
2019-01-22 05:21:16.215231: I tensorflow_serving/model_servers/server_core.cc:558]  (Re-)adding model: prod_mod
2019-01-22 05:21:16.334858: I tensorflow_serving/core/basic_manager.cc:739] Successfully reserved resources to load servable {name: prod_mod version: 1}
2019-01-22 05:21:16.335783: I tensorflow_serving/core/loader_harness.cc:66] Approving load for servable version {name: prod_mod version: 1}
2019-01-22 05:21:16.336508: I tensorflow_serving/core/loader_harness.cc:74] Loading servable version {name: prod_mod version: 1}
2019-01-22 05:21:16.337655: I external/org_tensorflow/tensorflow/contrib/session_bundle/bundle_shim.cc:363] Attempting to load native SavedModelBundle in bundle-shim from: /models/prod_mod/1
2019-01-22 05:21:16.338101: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:31] Reading SavedModel from: /models/prod_mod/1
2019-01-22 05:21:16.355285: I external/org_tensorflow/tensorflow/cc/saved_model/reader.cc:54] Reading meta graph with tags { serve }
2019-01-22 05:21:16.367139: I external/org_tensorflow/tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2019-01-22 05:21:16.405369: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:162] Restoring SavedModel bundle.
2019-01-22 05:21:16.550336: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:138] Running MainOp with key saved_model_main_op on SavedModel bundle.
2019-01-22 05:21:16.571837: I external/org_tensorflow/tensorflow/cc/saved_model/loader.cc:259] SavedModel load for tags { serve }; Status: success. Took 233732 microseconds.
2019-01-22 05:21:16.572396: I tensorflow_serving/servables/tensorflow/saved_model_warmup.cc:83] No warmup data file found at /models/prod_mod/1/assets.extra/tf_serving_warmup_requests
2019-01-22 05:21:16.578072: I tensorflow_serving/core/loader_harness.cc:86] Successfully loaded servable version {name: prod_mod version: 1}
2019-01-22 05:21:16.579211: 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
[evhttp_server.cc : 222] RAW: Couldn't bind to port 8501
Aborted (core dumped)
root@dce94d95c992:/#

标签: dockerpostnetwork-programmingvirtual-machinetensorflow-serving

解决方案


这主要是因为您尝试连接的服务器没有运行。我在尝试使用 mongo 制作烧瓶应用程序时遇到了完全相同的错误。我得到了两次,因为我的 mongo 服务器没有运行,我试图连接到它,下一次我试图连接到另一个没有运行的服务器。所以请检查您的服务器。

如果主机或端口错误,也会发生这种情况。

如果您找到不同的解决方案,请告诉。


推荐阅读