2016-02-29 4 views
2

Как подключиться к удаленному хосту docker с помощью python?подключиться к докере, размещенному на удаленном сервере

>>> 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') 

это работает. Но как подключиться к докеру, работающему на другом сервере?

+0

Возможный дубликат [Как получить доступ к демону Docker через tcp-socker?] (Http://stackoverflow.com/questions/35488251/how-to-access-docker-daemon-through-tcp-socker) – Auzias

ответ

1

Добавить опцию ТСР SYS конфигурации, как показано здесь:

vi /etc/sysconfig/docker 

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

После перезагрузки докер, я смог подключиться к удаленному серверу, используя Docker питона.

+0

Пожалуйста, сообщите меня вы не представляете миру порт 2375. Если вы запускаете Amazon, люди могут запускать ботов, чтобы злоупотреблять вашими услугами, что может стоить вам тысячи долларов. – taco

1

Это не ответ, но вам нужна ваша обратная связь.

Сообщение об ошибке: Connection refused, так что вы можете запустить команду:

telnet 52.90.216.176 2375 

Чтобы подтвердить, если это не проблема брандмауэра. Когда-то порт 2376

2

Похоже, вы используете докер-ру.

Также, похоже, что вы не знакомы с 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) 
Смежные вопросы