macos – 在OSX上通过docker-py连接到Docker-Machine

前端之家收集整理的这篇文章主要介绍了macos – 在OSX上通过docker-py连接到Docker-Machine前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上下文

我试图在OSX上使用docker-py连接到docker-machine.

我不能简单地使用标准客户端(base_url =’unix://var/run/docker.sock’),因为docker在docker-machine虚拟机上运行,​​而不是我的本地操作系统.

相反,我试图使用docker.tls安全地连接到VM:

from docker import Client
import docker.tls as tls
from os import path

CERTS = path.join(path.expanduser('~'),'.docker','machine','certs')

tls_config = tls.TLSConfig(
    client_cert=(path.join(CERTS,'cert.pem'),path.join(CERTS,'key.pem')),ca_cert=path.join(CERTS,'ca.pem'),verify=True
#verify=False
)
client = docker.Client(base_url='https://192.168.99.100:2376',tls=tls_config)

问题

当我尝试运行此代码(在下一行运行类似print client.containers()的东西)时,我收到此错误

requests.exceptions.SSLError: hostname '192.168.99.100' doesn't match 'localhost'

我一直试图跟随github issue关于boot2docker的类似问题,即.旧版本的docker-machine,但我不太了解SSL证书的实现方式.我尝试在github问题中建议将192.168.99.100 localhost添加到我的/ etc / hosts文件的末尾,但这并没有解决问题(即使在导出DOCKER_HOST = tcp:// localhost:2376之后).

也许通过证书连接不是停靠码机的方法,所以任何通过docker-py连接到特定码头机的替代方法的答案也是可以接受的.

UPDATE
看起来像docker-machine的v0.5.2试图通过–tls-san标志为create命令解决这个问题.需要验证但是通过brew的安装仍然给出了v0.5.1,所以我必须手动安装.

最佳答案
看起来像Docker-py v1.8.0你可以像下面那样连接到Docker-machine;

import docker
client = docker.from_env(assert_hostname=False)
print client.version()

请参阅doc here

猜你在找的Docker相关文章