docker - 如何在 docker-machine 中为机器设置 TLS 证书

标签 docker docker-machine docker-swarm

我想做的事情:

我在一台机器上运行 dockerd,并将 TLS 验证设置为 true。我想将此主机添加为 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:由未知颁发机构签名的证书错误。

$ 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配置,但这不起作用:

$ 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 驱动程序将配置为使用在 ~/.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.pemcert.pemkey.pem 文件。据我所知, config.json 中引用的其他文件可能不会被 none 驱动程序使用,因为 regenerate-certs 是没有由none实现。

您需要复制 ca.pem 和 key.pem 文件

此时,您应该能够运行 docker-machine config remotedockereval "$(docker-machine env remotedocker)" 并使用您的远程守护进程成功。

关于docker - 如何在 docker-machine 中为机器设置 TLS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46338037/

相关文章:

docker - Windows上的DOCKER安装错误 “Internal error: Failed to expand shell folder constant ” userdocs”

docker - 当 'docker-machine ls' 显示正在运行的容器时,空 'docker ps' 输出是否有效?

tomcat - 如何将docker容器的IP地址动态映射到另一个容器

docker - 在 docker swarm 中使用 docker 部署 Jenkins

bash - Docker Alpine 以另一个用户身份执行命令

docker - 如何在Docker容器中找到从s3下载的文件?

java - Docker Compose - Flyway - 无法从数据源获取 Jdbc 连接

docker - 无法创建Docker Swarm

node.js - 将 karma 与 Docker 一起使用时未捕获 Chrome

ubuntu - 如何通过 jdbc 从容器连接到主机上的 Informix DB?