【问题标题】:Docker: could not read CA certificateDocker:无法读取 CA 证书
【发布时间】:2018-09-15 17:11:20
【问题描述】:

我在 Windows 10 Pro 上安装了 Docker,但无法正常工作。

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

could not read CA certificate 

它在 machine/machines/default 中寻找证书。但是那个文件夹不存在。

我创建了一台名为“default”的机器(它创建了上述文件夹),但这并没有帮助。

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

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

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

【问题讨论】:

    标签: docker windows-10


    【解决方案1】:

    以管理员权限运行 Docker Desktop。它对我有用。我看不到这个错误“'appdata\local\docker\vm-config\ca-certificates.crt'被拒绝” 现在,我可以在 Windows 10 上运行 Linux 容器了。

    【讨论】:

      【解决方案2】:

      从之前(长期)删除的 Docker Toolbox 安装中挂起的环境变量导致 Docker Desktop 出现此问题(在 HyperV 之后启动正常。全部删除,删除这些环境变量

      • DOCKER_TLS_VERIFY
      • DOCKER_CERT_PATH
      • DOCKER_HOST
      • DOCKER_TOOLBOX_INSTALL_PATH

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

      【讨论】:

        【解决方案3】:

        对于那些在 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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

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

              转到这台电脑:-> 在搜索栏中输入 ca.pem -> 现在去那个位置并复制它 -> 现在转到高级系统设置 -> 环境变量 -> 编辑 - DOCKER_CERT_PATH -> 并粘贴该位置,然后它将运行

              【讨论】:

              • 我尝试过,我通过了证书难度,但是在我遇到 tcp-ip 地址问题之后:我终于删除了所有以 DOCKER_... 或 COMPOSE_... 开头的环境变量,因为我使用了 Docker卸载之前的工具箱(Windows 10 家族),最后在 Windows 10 专业版上安装 docker。解决方案如下所述。
              【解决方案7】:

              嘿,我也遇到过类似的问题,一开始就出现这种错误

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

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

              【讨论】:

                【解决方案8】:

                我有同样的问题。问题是,我从 Docker Toolbox 升级到 Docker for Windows。卸载 Docker Toolbox 时,不会删除用户特定的环境变量。以下对我有用:

                1. 卸载 Docker 工具箱。
                2. 卸载 VirtualBox(您不能使用 VirtualBox,因为 Docker Toolbox 和 Hyper-V [Docker for Windows 使用] 同时需要它。)
                3. 删除 Docker Toolbox 环境变量:
                  • 转到控制面板\所有控制面板项\系统
                  • 点击高级系统设置
                  • 转到高级选项卡并单击环境变量
                  • 从系统/用户变量中删除所有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。 (如有必要,也请重新启动系统。)

                来源:

                【讨论】:

                • 是的!对于我们这些迁移的人来说,这是您需要做的。
                • 真的有必要卸载虚拟盒子吗?你不能不运行它吗?
                • 如上所述清理后工作。不必重新启动。
                • 它也适用于 Winows 8.1。我不必重新启动。
                • 如果它可能很痛苦,为什么要让它变得容易? (我作为开发人员使用 Windows 的生活)
                猜你喜欢
                • 2016-02-08
                • 1970-01-01
                • 2015-01-12
                • 2021-05-16
                • 2017-06-28
                • 1970-01-01
                • 2023-03-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多