用于windows的Docker SSL证书

用于windows的Docker SSL证书,windows,docker,Windows,Docker,我试图将docker映像发布到私有存储库,但我无法确定应该将SSL证书放置在Windows计算机上的何处 根据这个页面,证书应该放在/etc/docker/certs.d/HOSTNAME目录中。这显然不是Windows路径。但是,当我运行docker终端并键入cd/etc时,它确实会将我带到一个工作目录 经过一些调查,我发现它将进入C:\Program Files\Git\etc,因此我在该路径下创建了一个docker\certs.d\docker-registry.lan(docker-re

我试图将docker映像发布到私有存储库,但我无法确定应该将SSL证书放置在Windows计算机上的何处

根据这个页面,证书应该放在/etc/docker/certs.d/HOSTNAME目录中。这显然不是Windows路径。但是,当我运行docker终端并键入cd/etc时,它确实会将我带到一个工作目录

经过一些调查,我发现它将进入C:\Program Files\Git\etc,因此我在该路径下创建了一个docker\certs.d\docker-registry.lan(docker-registry.lan是我们的内部注册表)目录。然后我用docker machine stop、docker machine start命令重新启动docker machine

然而,当我尝试推送时,我得到一个错误,显示x509:由未知授权机构签署的证书

对于通过linux执行此操作的其他人来说,此密钥工作正常,因此我知道此密钥工作正常。我认为问题在于我没有将钥匙存储在正确的位置

我尝试了一系列不同的键,但似乎都不起作用。这一定是我错过的一个简单的解决办法。谁能帮我解决这个问题

谢谢

解决方案是

  • 切换到
    ca.crt
    所在的本地文件夹
  • 将文件复制到虚拟机:
    docker machine scp ca.crt默认值:。
  • 登录到虚拟机:
    docker machine ssh default
  • 创建所需文件夹:
    sudo mkdir/var/lib/boot2docker/certs
  • 将证书复制到以下位置:
    sudo cp ca.crt/var/lib/boot2docker/certs
  • 退出虚拟机:
    Exit
  • 重新启动虚拟机:
    docker机器重新启动默认值
  • 基于和的答案

    @warmoverflow

    您好,由于您的回复,Docker可以自动注册证书

    但是根据boot2docker中的“README.md”,您可以使用.pem文件而不是.crt文件

    (以
    .pem
    格式)加载到
    /var/lib/boot2docker/certs/
    目录中,boot2docker将在启动时自动从持久性分区加载它

    只需将.crt文件重命名为.pem文件


    .

    如果您在Windows上本机运行Docker守护程序,正确的位置是
    C:\ProgramData\Docker\certs.d\myregistrydomain.com5000\ca.crt
    。此处的详细信息:

    情况已发生变化,无需在Windows 10上的任何位置放置证书文件或担心端口号。(截至2019年7月21日)

    在Docker Community 2.0.0.3(31259)上,只需将Docker repo的公共证书添加到本地计算机上的“受信任的根权限存储”。你可以双击你的证书,它会开始询问你想把它放在哪里的过程。(它可能也适用于当前用户存储,未检查)

    将证书添加到商店后,重新启动Docker服务,然后可以从私人回购中推/拉


    下面的docker VM在启动期间从Windows获取所有受信任的根权限,并为您管理这些权限。

    在Windows上配置docker客户端

    要将注册表的CA证书传递给在Windows 10上运行的Docker客户端,请使用Windows证书导入向导

    Copy the ca.crt file to the Windows 10 machine on which you run the Docker client.
    Right-click the ca.crt file and select Install Certificate.
    Follow the prompts of the wizard to install the certificate.
    Restart the Docker daemon:
        Click the up arrow in the task bar to show running tasks.
        Right-click the Docker icon and select Settings.
        Select Reset and click Restart Docker.
    Log in to the registry server.
    
    docker login registry_ip
    

    路径是指Docker计算机上名为
    default
    的路径,它实际上是一个VirtualBox vm。您可以使用
    docker machine scp local\u certs\u path default:/etc/docker/certs.d/HOSTNAME
    将证书复制到该计算机。@warmoverflow谢谢,这很有意义。但是,当我尝试
    $docker machine scp/c/ca.crt default:/etc/docker/certs.d/docker registry.lan
    时,我得到以下错误
    加载主机时出错:加载主机时出错:主机不存在:“c”
    很遗憾,我目前无法测试。你能试试吗?
    //c/ca.crt
    //c/ca.crt:没有这样的文件或目录我注意到当我运行
    docker machine env
    时,它列出了
    docker\u CERT\u PATH=“c:\Users\rmclaughlin\.docker\machine\machines\default
    这就是我需要的路径吗?