【问题标题】:RemoteDisconnected (Remote end closed connection without response) while connecting to Docker over SSH通过 SSH 连接到 Docker 时,RemoteDisconnected(远程结束关闭连接而没有响应)
【发布时间】:2021-04-09 17:14:06
【问题描述】:

我的代码在我的本地网络上运行(使用 VBOX),但是当我尝试在另一个网络上运行它时,我得到了这个错误:

docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

我的代码是:

import docker
client = docker.DockerClient(base_url ='ssh://george@192.168.56.103')
print(client.images.list())

整个错误信息是:

C:\Users\George\PycharmProjects\docker_project\venv\Scripts\python.exe C:/Users/George/PycharmProjects/docker_project/docker_test.py
Traceback (most recent call last):
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\George\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 1332, in getresponse
    response.begin()
  File "C:\Users\George\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 303, in begin
    version, status, reason = self._read_status()
  File "C:\Users\George\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 272, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\requests\adapters.py", line 439, in send
    resp = conn.urlopen(
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 755, in urlopen
    retries = retries.increment(
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\util\retry.py", line 531, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\packages\six.py", line 734, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\urllib3\connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Users\George\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 1332, in getresponse
    response.begin()
  File "C:\Users\George\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 303, in begin
    version, status, reason = self._read_status()
  File "C:\Users\George\AppData\Local\Programs\Python\Python38-32\lib\http\client.py", line 272, in _read_status
    raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\api\client.py", line 214, in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\api\daemon.py", line 181, in version
    return self._result(self._get(url), json=True)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\utils\decorators.py", line 46, in inner
    return f(self, *args, **kwargs)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\api\client.py", line 237, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\requests\sessions.py", line 555, in get
    return self.request('GET', url, **kwargs)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\requests\sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\requests\sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\requests\adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/George/PycharmProjects/docker_project/docker_test.py", line 25, in <module>
    client = docker.DockerClient(base_url ='ssh://george@192.168.56.103')
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\client.py", line 45, in __init__
    self.api = APIClient(*args, **kwargs)
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\api\client.py", line 197, in __init__
    self._version = self._retrieve_server_version()
  File "C:\Users\George\PycharmProjects\docker_project\venv\lib\site-packages\docker\api\client.py", line 221, in _retrieve_server_version
    raise DockerException(
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

这可能是什么原因?

【问题讨论】:

    标签: python docker ssh


    【解决方案1】:

    问题不在于连接本身。我试图在远程服务器上本地运行脚本:

    client = docker.from_env()
    

    我有一个权限被拒绝的异常。 用户必须对远程服务器上的 docker 具有 sudo 权限才能使用 Docker SDK。这里有更多信息如何做到这一点: https://docs.docker.com/engine/install/linux-postinstall/ 每当它使脚本正常工作时。

    【讨论】:

      猜你喜欢
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2017-03-12
      • 2021-08-20
      • 2021-10-17
      • 1970-01-01
      • 2021-10-21
      相关资源
      最近更新 更多