如何在docker机器中为机器设置TLS证书
我想做的事:
我有dockerd在TLSvalidation设置为true的一台机器上运行。 我想添加这个主机作为一台机器在docker-machine
我做了什么:
我用下面的命令启动dockerd:
$ sudo dockerd -D --tls=true --tlscert=cert.pem --tlskey=key.pem -H tcp://172.19.48.247:2376
在第二台机器上,我得到了以下variables:
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
错误x509: certificate signed by unknown authority
的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
默认情况下,none驱动程序将被configuration为使用在~/.docker/machine
find的TLS证书。 这不一定是需要的,因为如果您的远程Docker主机拥有由您在该位置获得的ca.pem以外的其他名称签名的证书,则会遇到您遇到的错误。
我在这里find了一个解决方法的参考,我testing,它绝对似乎工作。 以下是我遵循的步骤:
docker-machine create -d none --url tcp://remotedocker.example.com:2376 remotedocker
这将创build以下目录:
~/.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)"
并成功使用远程守护进程。
- Docker堆栈部署滚动更新卷问题
- 如何让Docker机器从主机获取图像,然后为其自身提供任何图像?
- 来自守护进程的错误响应:获取https://registry-1.docker.io/v2/:在192.168.65.1:53上拨号tcp:lookup registry-1.docker.io:没有这样的主机
- Docker :无法selectUCP节点。 UCP节点不存在。
- 从docker集装箱访问主机DNS
- 如何更改从“docker信息”显示的“registry”值
- docker机与Swarm选项和运行docker群初始化和连接之间的区别
- docker swarm init无法selectIP地址错误
- 无法在minishift中访问正在运行的Docker镜像(使用tomcat) – OpenShift-Origin