我想做什么:
我已经在TLS验证设置为true的一台机器上运行dockerd。我想将此主机添加为docker-machine
中的计算机
我做了什么:
我使用以下命令启动dockerd:
$ sudo dockerd -D --tls=true --tlscert=cert.pem --tlskey=key.pem -H tcp://172.19.48.247:2376
在第二台计算机上,我获取了以下变量:
export DOCKER_HOST=tcp://172.19.48.247:2376
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/path/to/ssl
并成功运行docker命令:
$ docker run busybox echo hello
hello
然后我添加了这个主机docker-machine:
docker-machine create --driver none --url=tcp://172.19.48.247:2376 dockerhost
我要去哪里了:
我现在收到
x509: certificate signed by unknown authority
错误。$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS Unknown
dockerhost - none Running tcp://172.19.48.247:2376 Unknown Unable to query docker version: Get https://172.19.48.247:2376/v1.15/version: x509: certificate signed by unknown authority
我尝试使用
docker-machine config
,但是不起作用:$ docker-machine config dockerhost --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem -H tcp://172.19.48.247:2376
Incorrect Usage.
Usage: docker-machine config [OPTIONS] [arg...]
Print the connection config for machine
Description:
Argument is a machine name.
Options:
--swarm Display the Swarm config instead of the Docker daemon
flag provided but not defined: -tlsverify
最佳答案
默认情况下,无驱动程序将配置为使用在~/.docker/machine
上找到的TLS证书。这不一定是必需的,因为如果远程Docker主机具有的证书不是在该位置获得的ca.pem签名的,则将遇到错误。
我找到了对我测试过的替代方法here的引用,它似乎确实可以正常工作。这是我遵循的步骤:
docker-machine create -d none --url tcp://remotedocker.example.com:2376 remotedocker
这将创建以下目录:
~/.docker/machine/machines/remotedocker
该目录中有一个名为
config.json
的文件。编辑该文件,然后将“.docker / machine / certs”的每个实例更改为“.docker / machine / machines / remotedocker”通常,当您远程访问Docker时,它只需要访问
ca.pem
,cert.pem
和key.pem
文件。据我所知,config.json
驱动程序可能不会使用none
中引用的其他文件,因为regenerate-certs
不是由none
实现的。您将需要复制ca.pem和key.pem文件
此时,您应该能够运行
docker-machine config remotedocker
或eval "$(docker-machine env remotedocker)"
并成功使用远程守护程序。