Docker:无法读取CA证书

Docker:无法读取CA证书,docker,windows-10,Docker,Windows 10,我在Windows10Pro上安装了Docker,但无法使其工作 当我尝试运行hello world时,我得到 could not read CA certificate 它正在计算机/计算机/默认值中查找证书。但是,该文件夹不存在 我创建了一个名为“default”的机器(它创建了上述文件夹),但没有任何帮助 在此之前,我创建了另一台名为“dev”的机器,它似乎有证书,但这似乎也没有帮助 机器/机器中也有证书文件-我不知道是否应该让Docker查找该文件夹(而不是机器/机器/默认) 我是D

我在Windows10Pro上安装了Docker,但无法使其工作

当我尝试运行hello world时,我得到

could not read CA certificate 
它正在计算机/计算机/默认值中查找证书。但是,该文件夹不存在

我创建了一个名为“default”的机器(它创建了上述文件夹),但没有任何帮助

在此之前,我创建了另一台名为“dev”的机器,它似乎有证书,但这似乎也没有帮助

机器/机器中也有证书文件-我不知道是否应该让Docker查找该文件夹(而不是机器/机器/默认)


我是Docker的新手,所以我可能错过了一些东西。然而,我整天都在做这件事,阅读了Docker文档,尝试了大量的解决方案和类似的答案,但似乎没有任何效果

我也有同样的问题。问题是,我从Docker工具箱升级到了Docker for Windows。卸载时,不会删除用户特定的环境变量。下面是我的诀窍:

  • 卸载Docker工具箱
  • 卸载VirtualBox(您不能使用VirtualBox,因为它是Docker Toolbox和Hyper-V[由Docker for Windows使用]同时使用所必需的。)
  • 删除Docker工具箱环境变量:
    • 转到控制面板\所有控制面板项目\系统
    • 单击高级系统设置
    • 转到“高级”选项卡,然后单击“环境变量”
    • 从系统/用户变量中删除所有
      DOCKER.*
      条目。
      • DOCKER\u TLS\u VERIFY
      • DOCKER\u证书路径
      • DOCKER\u主机
      • DOCKER\u工具箱\u安装路径
  • 从命令提示符或PowerShell中删除DOCKER_*。在PowerShell中运行以下命令:

    [Environment]:SetEnvironmentVariable(“DOCKER\u CERT\u PATH”、$null,“User”)

    [Environment]:SetEnvironmentVariable(“DOCKER\u HOST”$null,“User”)

    [Environment]:SetEnvironmentVariable(“DOCKER\u MACHINE\u NAME”,$null,“User”)

    [Environment]:SetEnvironmentVariable(“DOCKER\u TLS\u VERIFY”,$null,“User”)

    [Environment]::SetEnvironmentVariable(“DOCKER\u TOOLBOX\u INSTALL\u PATH”,$null,“User”)

  • 重新启动PowerShell。(如有必要,重新启动系统。)

  • 资料来源:


      • 嘿,我也遇到过类似的问题,我是从这种错误开始的

        ':打开 ///管道/码头工人/发动机'

        在那之后,我的证书也有问题。 我所做的是将我的证书文件的位置更改为另一个位置,并通过环境变量DOCKER\u cert\u PATH指向它。然后我经历了所有不同的问题,这些问题最终只是部分解决了我的问题。最后,我卸载了docker toolbox和VM Virtualbox,并使用不同的旧驱动程序NDIS5重新安装了它,您可以在安装过程中在向导中选择NDIS5。它解决了我在win10上与Docker的所有问题


        有时候没那么棘手。我刚刚通过这样做解决了这个问题:

        转到这台电脑:->在搜索栏中键入ca.pem ->现在去那个地方复制它
        ->现在转到高级系统设置->环境变量->编辑-DOCKER\u CERT\u PATH->并粘贴该位置,这样它将运行删除环境变量并运行上述命令对我有效:

        [Environment]::SetEnvironmentVariable("DOCKER_CERT_PATH", $null, "User")
        
        [Environment]::SetEnvironmentVariable("DOCKER_HOST", $null, "User")
        
        [Environment]::SetEnvironmentVariable("DOCKER_MACHINE_NAME", $null, "User")
        
        [Environment]::SetEnvironmentVariable("DOCKER_TLS_VERIFY", $null, "User")
        
        [Environment]::SetEnvironmentVariable("DOCKER_TOOLBOX_INSTALL_PATH", $null, "User")
        

        我也有同样的问题。我已将DOCKER\u CERT\u路径值更改为C:\Users\adity.DOCKER\machine\certs。它工作得很好。

        对于那些在Oracle VM Virtualbox上运行docker机器的人,只需删除损坏的机器并重新创建

        由于没有“重新创建”命令,您可以使用以下命令删除损坏的计算机:


        docker机器rm docker机器名称在此

        e、 g.docker机器rm boot2docker


        或手动卸下机器。 要手动删除,请转到“C:\Users\user'\.docker\machine\machines”,您将找到机器的目录列表,并删除损坏机器的目录

        要创建新机器,请使用以下命令:

        docker machine create-d virtualbox--virtualbox memory 4096此处显示您的机器名称

        e、 g.docker机器创建-d virtualbox——virtualbox内存4096 boot2docker

        使用以下命令验证创建是否成功、状态和配置详细信息:

        docker machine env此处显示您的机器名称

        e、 g.docker机器环境引导器docker

        您可以尝试另一种快捷方式,以避免丢失现有的容器和docker图像;使用以下命令重新创建证书:

        docker机器重新生成证书此处显示您的机器名称


        e、 g.docker计算机重新生成证书boot2docker

        环境变量从以前(长时间)移除的docker Toolbox安装中挂起,导致docker Desktop出现此问题(在HyperV后正常启动)。将其全部移除,移除这些环境变量

        • DOCKER_TLS_验证
        • DOCKER\u证书路径
        • DOCKER_主机
        • DOCKER\u工具箱\u安装\u路径

        ,重新启动终端,现在一切都很好

        是的!对于我们这些迁移的人来说,这就是你需要做的。真的有必要卸载virtual box吗?难道你不能不运行它吗?如上所述,在清理后工作正常。不必重新启动。它也可以在Winows 8.1上工作。我不必重新启动。如果这会很痛苦,为什么要让它变得简单?(我作为使用Windows的开发人员的生活)我尝试过这一点,并通过了证书颁发的困难,但在tcp ip地址出现问题后:我最终删除了所有以DOCKER_…或COMPOSE_…开头的环境变量,因为我使用了DOCKER toolbox(Windows 10 familial)在Windows 10 professional上卸载并最终安装docker之前。解决方案如下所述。