继续获取尝试启动docker时无法读取CA证书

时间:2015-11-07 14:16:14

标签: macos docker boot2docker pem

我正在尝试从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命令时。

8 个答案:

答案 0 :(得分:23)

我找到了解决方案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上的那个帖子中的每个人都会在一小时的痛苦之后找到。

答案 1 :(得分:7)

请遵循以下指南: new file structure

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

# grep for DOCKER ENV vars
env | grep DOCKER
unset <DOCKER_VARS>

答案 2 :(得分:2)

通常大多数人都安装了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 *)。这似乎是一个长期的解决方案。

  1. vim ~/.bash_profile

  2. 评论类似 DOCKER _ *

  3. 的内容
  4. source ~/.bash_profile

  5. 重新启动终端,运行时应该没有问题:docker infodocker ps
  6. 希望它有所帮助。

答案 3 :(得分:1)

由于将环境设置为特定的docker计算机,后来又删除了我的环境,但我的环境仍设置为已删除的计算机,因此遇到了相同的错误。因此,将docker调用重定向到一台不存在的计算机,从而导致该错误。

我未设置环境变量,此问题已解决:

eval $(docker-machine env -u)

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

docker-machine env -u

答案 4 :(得分:0)

如果文件存在于DOCKER_CERT_PATH env变量中,则由于文件权限问题也可能导致错误。请检查此用例。

答案 5 :(得分:0)

我在macOS中的解决方案是清除~/.bash_profile~/.bashrc以外的缺少证书的引用:

unset ${!DOCKER*}

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

答案 6 :(得分:0)

我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*}
  • 然后我从启动板启动了docker,花了一会儿,现在它再次运行,一切恢复正常。

答案 7 :(得分:-2)

如果仍然无效,请运行:

find . -name ca.pem

要找出它的位置,然后修改DOCKER_CERT_PATH=<the path you find out>,在Mac上,它必须是.bash_profile。如果您在.oh-my-zsh输入此内容,则无效。