2016-02-29 96 views
2

如何使用python連接到遠程docker主機?連接到託管在遠程服務器上的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',)) 

如果我登錄到52.90.216.176和使用下列內容:

>>> cli = Client(base_url='unix://var/run/docker.sock') 

這個工程。但是,如何連接到另一臺服務器上運行的docker?

+0

可能的重複[如何通過tcp-socker訪問Docker守護進程?](http://stackoverflow.com/questions/35488251/how-to-access-docker-daemon-through-tcp-socker) – Auzias

回答

1

添加TCP選項SYS如下圖所示的配置:

vi /etc/sysconfig/docker 

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

泊塢窗重啓後,我使用Python可以連接到遠程服務器泊塢窗。

+0

請告訴我不會將2375端口暴露給世界。如果你在亞馬遜上運行,人們可能會運行殭屍程序來濫用你的服務,這會花費你數千美元。 – taco

1

這不是答案,但需要您的反饋。

的錯誤信息是:Connection refused,這樣你就可以運行該命令:

telnet 52.90.216.176 2375 

要確認如果沒有防火牆問題。有時端口是2376

2

這聽起來像你正在使用泊塢窗-PY。

而且,聽起來也許你不熟悉的TLS,因此,請閱讀文檔using TLS with docker-py。您可能需要下載您的TLS文件並將它們本地複製到docker-py客戶端,因爲它們用於驗證您是否有權連接到Docker守護程序。

我希望你的遠程Docker守護進程不會暴露給世界。

如果它沒有運行TLS(暴露於天下):

client = docker.Client(base_url='<https_url>', tls=False) 

如果固定使用TLS(未暴露於天下):

client = docker.Client(base_url='<https_url>', tls=True)