Python 连接到远程服务器上托管的docker

Python 连接到远程服务器上托管的docker,python,docker,Python,Docker,如何使用python连接到远程docker主机 >>> from docker import Client >>> cli = Client(base_url='tcp://52.90.216.176:2375') >>> >>> cli.containers() Traceback (most recent call last): File "<stdin>", line 1, in <module&

如何使用python连接到远程docker主机

>>> from docker import Client
>>> cli = Client(base_url='tcp://52.90.216.176:2375')
>>>
>>> cli.containers()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/site-packages/docker/api/container.py", line 69, in containers
    res = self._result(self._get(u, params=params), True)
  File "/usr/local/lib/python2.7/site-packages/docker/utils/decorators.py", line 47, in inner
    return f(self, *args, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/docker/client.py", line 112, in _get
    return self.get(url, **self._set_request_timeout(kwargs))
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 480, in get
    return self.request('GET', url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 468, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 437, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='52.90.216.176', port=2375): Max retries exceeded with url: /v1.21/containers/json?all=0&limit=-1&trunc_cmd=0&size=0 (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7fd87d836750>: Failed to establish a new connection: [Errno 111] Connection refused',))

这很有效。但如何连接到另一台服务器上运行的docker?

这不是答案,但需要您的反馈

错误消息是:
连接被拒绝
,因此您可以运行以下命令:

telnet 52.90.216.176  2375

确认是否没有防火墙问题。有时端口是
2376

听起来像是在使用docker py

另外,听起来您可能不熟悉TLS,因此请阅读文档以了解详细信息。您可能需要下载TLS文件并将其本地复制到docker py客户端,因为它们用于验证您是否有权连接到docker守护程序

我希望你的远程Docker守护进程不会暴露于世界

如果未运行TLS(暴露于外界):

client=docker.client(基本url='',tls=False)
如果采用TLS固定(不暴露于外界):

client=docker.client(基本url='',tls=True)

将tcp选项添加到系统配置中,如下所示:

vi /etc/sysconfig/docker

OPTIONS="--host=tcp://0.0.0.0:2375"

重新启动docker后,我可以使用python连接到远程docker服务器。

可能重复的请告诉我您没有向世界公开端口2375。如果你在亚马逊上运行,人们可以运行机器人来滥用你的服务,这可能会花费你数千美元。
client = docker.Client(base_url='<https_url>', tls=False)
client = docker.Client(base_url='<https_url>', tls=True)
vi /etc/sysconfig/docker

OPTIONS="--host=tcp://0.0.0.0:2375"