Docker:无法读取CA证书

时间:2018-04-05 19:12:01

标签: docker windows-10

我在Windows 10 Pro上安装了Docker,我无法让它工作。

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

could not read CA certificate 

它正在寻找机器/机器/默认的证书。但是该文件夹不存在。

我创建了一个名为“default”的机器(它创建了上面提到的文件夹),但没有帮助。

在此之前,我创建了另一台名为“dev”的机器,它似乎有证书,但这似乎也无济于事。

还有机器/机器中的证书文件 - 我不知道我是否应该以某种方式指向Docker查看该文件夹(而不是机器/机器/默认)?

我对Docker很陌生,所以我可能会遗漏一些东西。但是我整天都在这里,阅读Docker文档,尝试了大量的解决方案和类似的答案,但似乎没有任何工作。

8 个答案:

答案 0 :(得分:45)

我有同样的问题。问题是,我从Docker Toolbox升级到Docker for Windows。卸载Docker Toolbox时,不会删除特定于用户的env变量。以下为我做了诀窍:

  1. 卸载Docker Toolbox。
  2. 卸载VirtualBox(您不能同时使用VirtualBox,因为Docker Toolbox和Hyper-V [由Docker for Windows使用]是必需的。)
  3. 删除Docker Toolbox env变量:
    • 转到控制面板\所有控制面板项目\系统
    • 点击高级系统设置
    • 转到高级标签,然后点击环境变量
    • 从系统/用户变量中删除所有DOCKER_*条目。
      • DOCKER_TLS_VERIFY
      • DOCKER_CERT_PATH
      • DOCKER_HOST
      • DOCKER_TOOLBOX_INSTALL_PATH
  4. 从命令提示符或PowerShell中删除DOCKER_ *。在PowerShell中运行以下命令:

    [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")

  5. 重新启动PowerShell。 (如有必要,也可以重启系统。)

  6. 来源:

答案 1 :(得分:2)

有时候并不是那么棘手。我刚刚通过以下方法解决了这个问题:

转到此PC:->在搜索栏中键入ca.pem ->现在转到该位置并复制 ->现在转到高级系统设置->环境变量->编辑-DOCKER_CERT_PATH->并粘贴该位置,然后将其运行

答案 2 :(得分:2)

以前(长期)删除的Docker Toolbox安装中徘徊的环境变量导致了Docker Desktop的此问题(在HyperV之后就可以正常启动。将其全部删除,请删除这些环境变量

  • DOCKER_TLS_VERIFY
  • DOCKER_CERT_PATH
  • DOCKER_HOST
  • DOCKER_TOOLBOX_INSTALL_PATH

,重新启动终端,现在一切正常

答案 3 :(得分:0)

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

  

'http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.37/containers/create:打开   //./ pipe / docker_engine'

之后,我也遇到了证书问题。 我所做的是将证书文件的位置更改为另一个位置,并通过环境变量DOCKER_CERT_PATH指向它。然后我经历了所有不同的问题,这些问题最终仅部分解决了我的问题。最后,我卸载了docker工具箱和VM Virtualbox,然后再次使用其他较旧的驱动程序NDIS5重新安装了它,您可以在安装期间在向导中进行选择。它解决了我在win10上使用Docker遇到的所有问题

Wizard during installation Docker toolbox

答案 4 :(得分:0)

删除环境变量并运行上述命令对我有用:

{{1}}

答案 5 :(得分:0)

我也有同样的问题。我已将DOCKER_CERT_PATH值更改为C:\ Users \ adity.docker \ machine \ certs。效果很好。

答案 6 :(得分:0)

对于那些在Oracle VM Virtualbox上运行docker计算机的用户,只需删除损坏的计算机并重新创建。

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


docker-machine rm docker-machine-name-here

例如 docker-machine rm boot2docker


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

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

docker-machine create -d virtualbox --virtualbox-memory 4096 your-machine-name-here

例如 docker-machine create -d virtualbox --virtualbox-memory 4096 boot2docker

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

docker-machine env your-machine-name-here

例如 docker-machine env boot2docker

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

docker-machine regenerate-certs your-machine-name-here

例如 docker-machine regenerate-certs boot2docker

答案 7 :(得分:-1)

以管理员权限运行 Docker 桌面。它和我一起工作。我看不到这个错误“'appdata\local\docker\vm-config\ca-certificates.crt' is denied” 现在,我可以在 Windows 10 上运行 Linux 容器了。