代码之家  ›  专栏  ›  技术社区  ›  Bilal Baqar

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

  •  3
  • Bilal Baqar  · 技术社区  · 7 年前

    我想做的是:

    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 run busybox echo hello
    hello
    

    然后我添加了这个主机docker机器:

    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
    
    1 回复  |  直到 7 年前
        1
  •  6
  •   programmerq    6 年前

    默认情况下,无驱动程序将配置为使用在中找到的TLS证书 ~/.docker/machine . 这并不一定是必需的,因为如果远程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 文件夹。据我所知,中引用的其他文件 配置。json none 驱动程序,因为 regenerate-certs 未由实现 .

    您需要在ca.pem和密钥中复制。pem文件

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