簡體   English   中英

在OSX上通過docker-py連接到Docker-Machine

[英]Connecting to Docker-Machine via docker-py on OSX

上下文

我正在嘗試使用docker-py連接到OSX上的docker-machine

我不能簡單地使用標准Client(base_url='unix://var/run/docker.sock')因為Client(base_url='unix://var/run/docker.sock') 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問題與boot2docker類似的問題,即。 舊版本的docker-machine ,但我不太了解SSL證書的實現方式。 我嘗試在github問題中建議將192.168.99.100 localhost添加到我的/etc/hosts文件的末尾,但這並沒有解決問題(即使在export DOCKER_HOST=tcp://localhost:2376 )。

也許通過證書連接不是docker-machine ,所以任何通過docker-py連接到特定docker-machine替代方法的答案也是可以接受的。

更新看起來像docker 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()

請參閱此處的文檔

我安裝了docker docker-machine v0.5.2,詳見github上發行版 然后我只需要創建一個新機器如下:

$ docker-machine create -d virtualbox --tls-san <hostname> <machine-name>

然后我將<hostname> <machine-ip>/etc/hosts 之后代碼工作了

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

CERTS = path.join(path.expanduser('~'), '.docker', 'machine', 'machines', <machine-name>)

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
)
client = docker.Client(base_url='https://<machine-ip>:2376', tls=tls_config)

我替換了CERTS路徑中的<machine-name>並替換了base_url中的<machine-ip>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM