尝试启动docker时不断收到无法读取CA证书

Posted

技术标签:

【中文标题】尝试启动docker时不断收到无法读取CA证书【英文标题】:Keep getting Could not read CA certificate when trying to start docker 【发布时间】:2016-02-08 14:24:11 【问题描述】:

我正在尝试从 boot2docker 迁移到 docker-machine。

我按照here 的指示安装 docker,但我不断收到以下消息:

Could not read CA certificate "/Users/<useraccountfolder>/.boot2docker/certs/boot2docker-vm/ca.pem": open /Users/<useraccountfolder>/.boot2docker/certs/boot2docker-vm/ca.pem: no such file or directory

当我运行大多数 docker 命令时。

【问题讨论】:

【参考方案1】:

我找到了我的解决方案here

我需要将我的 .bash_profile 更新为如下所示:

export DOCKER_HOST=tcp://192.168.99.100:2376
export DOCKER_MACHINE_NAME=default
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker/machine/machines/default

然后运行以下命令生成缺少的 ca.pem:

docker-machine regenerate-certs default

我发布这个以防万一这可以帮助其他人。感谢/道具去 github 上那个线程中的每个人,这是在一个小时的痛苦之后发现的。

【讨论】:

如果您会收到No machine name(s) specified and no "default" machine exists 错误,请按照此处的说明操作docs.docker.com/machine/get-started/#/create-a-machine【参考方案2】:

如果还是不行,运行:

find . -name ca.pem

要找出它在哪里,然后修改DOCKER_CERT_PATH=&lt;the path you find out&gt;,在Mac上,它必须是.bash_profile。如果您在 yo .oh-my-zsh 中输入此内容,它将不起作用。

【讨论】:

【参考方案3】:

请遵循本指南: Docker for Mac vs Docker Toolbox

为我工作,您需要取消设置变量而不是为 mac 创建它们。

# grep for DOCKER ENV varsenv | grep DOCKERunset &lt;DOCKER_VARS&gt;

【讨论】:

这对我有用。我在 Mac 上并且错误地设置了 docker 机器,即使我使用的是“Docker for Mac”。我删除了机器并且图像没有被构建。取消设置变量后工作。【参考方案4】:

通常大多数人都安装了 boot2docker 和旧版本的 virtualbox。正如安装指南中所说,在安装 Docker for Mac 之前,我们必须卸载 boot2docker 并将 virtualbox 重新安装到高版本。 https://docs.docker.com/engine/installation/mac/#/docker-for-mac

即使我们已经安装了 Docker for Mac,我们仍然遇到错误“无法读取 CA 证书”。

我的解决方案是从.bash_profile 中删除与 docker 相关的环境变量 (DOCKER*)。这似乎是一个长期的解决方案。

    vim ~/.bash_profile

    评论类似 DOCKER_*

    source ~/.bash_profile

    重启终端,运行应该没有问题:docker info or docker ps

希望对你有帮助。

【讨论】:

【参考方案5】:

如果该文件存在于DOCKER_CERT_PATH 环境变量中,则该错误也可能是由于文件权限问题引起的。请同时检查此用例。

【讨论】:

【参考方案6】:

我在 macOS 中清理对丢失证书的引用的解决方案,这些证书不在 ~/.bash_profile~/.bashrc 中:

unset $!DOCKER*

来源:https://forums.docker.com/t/initial-install-of-docker-for-mac-could-not-read-ca-certificate/9170/7

【讨论】:

【参考方案7】:

我遇到了同样的错误,因为我已将环境设置为后来删除的特定 docker 机器,但我的环境仍设置为已删除的机器。因此,docker 调用被重定向到导致错误的不存在的机器。

我取消了环境变量,问题已解决:

eval $(docker-machine env -u)

要查看哪个环境变量将被取消设置运行:

docker-machine env -u

【讨论】:

【参考方案8】:

我 Mac 上的启动板中的 Docker 以及来自终端的命令退出工作。我只想说我做了什么来为我修复它,不管它是否有意义,以防它帮助别人。

我跑了unset $!DOCKER*

然后我跑了:

export DOCKER_HOST=tcp://192.168.99.100:2376
export DOCKER_MACHINE_NAME=default
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=~/.docker/machine/certs/

然后我运行:docker(仅部分工作)

然后我又跑了:unset $!DOCKER* 然后我从 Launchpad 启动 docker,稍等片刻,现在它再次运行,一切恢复正常。

【讨论】:

以上是关于尝试启动docker时不断收到无法读取CA证书的主要内容,如果未能解决你的问题,请参考以下文章

SSL 证书 (CA) 如何准确验证?

用于创建和签署客户端证书的SSL中间CA

智能卡从 CA 证书中检索公钥

如何用Java读取使用证书

Docker - 通过IDEA和CA证书加密远程链接到服务器上的Docker

CA 证书没有作为 true 的 basicConstraints 扩展