Macos 通过OSX上的Docker py连接到Docker机器 上下文
我正在尝试使用连接到OSX上的 我不能简单地使用标准的Macos 通过OSX上的Docker py连接到Docker机器 上下文,macos,ssl,docker,docker-machine,dockerpy,Macos,Ssl,Docker,Docker Machine,Dockerpy,我正在尝试使用连接到OSX上的 我不能简单地使用标准的客户机(base\u url=)unix://var/run/docker.sock“)因为docker是在docker机器上运行的虚拟机,而不是我的本地操作系统 相反,我尝试使用docker.tls将安全地连接到虚拟机: from docker import Client import docker.tls as tls from os import path CERTS = path.join(path.expanduser('~'),
客户机(base\u url=)unix://var/run/docker.sock“)
因为docker是在docker机器上运行的
虚拟机,而不是我的本地操作系统
相反,我尝试使用docker.tls
将安全地连接到虚拟机:
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'
我一直在尝试跟踪boot2docker
的类似问题,即docker machine
的旧版本,但我不太了解SSL证书是如何实现的。我尝试按照github问题中的建议,将192.168.99.100 localhost
添加到我的/etc/hosts
文件的末尾,但这并没有解决问题(即使在导出DOCKER\u主机之后)=tcp://localhost:2376)
可能通过证书连接不是docker-machine
的方式,因此任何通过docker-py
连接到特定docker-machine
的替代方法的答案也是可以接受的
更新
似乎
docker machine
的v0.5.2试图通过create
命令的--tls san
标志来解决这个问题。需要进行验证,但通过brew进行的安装仍然提供了v0.5.1版本,因此我必须手动安装。I安装了docker machine
v0.5.2,详情见。然后我必须创建一台新机器,如下所示:
$ docker-machine create -d virtualbox --tls-san <hostname> <machine-name>
我在
证书路径中替换了
,在基本url中替换了
,看起来像是Docker py v1.8.0,您可以连接到Docker机器,如下所示
import docker
client = docker.from_env(assert_hostname=False)
print client.version()
请参阅文档我正在尝试此解决方案,但我一直遇到以下问题:requests.exceptions.HTTPError:404客户端错误:找不到url:In/etc/hosts我已经尝试了这两种方法:dockerhost 192.168.99.100和:192.168.99.100dockerhost@BercoBeute运行docker machine ip
并使用该ip。谢谢@cdagli,但我想删除对环境变量和用python代码完成所有配置
import docker
client = docker.from_env(assert_hostname=False)
print client.version()