Docker-machine: 找不到ca.pem

5
我正在使用Docker Machine创建一个测试机器(dev)。
$ docker-machine create -d virtualbox dev
Creating CA: C:\Users\xxx\.docker\machine\certs\ca.pem
Creating client certificate: C:\Users\xxx\.docker\machine\certs\cert.pem
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...

虚拟机已经创建并且运行正常。当我运行以下命令时,出现了以下错误:

$ docker-machine env dev

open C:\Users\xxx\.docker\machine\machines\dev\ca.pem: The system cannot fin
d the file specified.

我不知道如何处理这个问题。尝试重新启动boot2docker。

5个回答

5
你应该尝试使用 docker-machine regenerate-certs dev。我认为问题在于你的.pem文件被删除或未创建。我遇到了同样的问题,重新生成证书可以解决问题(重启无效)。

1
对我有用,是的,看起来在创建VM docker-machine时,它只会将所有证书添加到.docker\machine\certs\文件夹中,但期望在.docker\machine\machines<dev>\中。运行此命令还将证书添加到<dev>。 - Noushad

4
我猜你在使用docker info或任何带有docker的命令时会遇到Docker-machine:ca.pem未找到的错误。
尝试执行以下命令:docker-machine env -u 输出将类似于以下内容:

unset DOCKER_TLS_VERIFY

unset DOCKER_HOST

unset DOCKER_CERT_PATH

unset DOCKER_MACHINE_NAME

# 运行此命令以配置您的 shell:

# eval $(docker-machine env -u)

现在输入eval $(docker-machine env -u) 这应该解决问题。 最后,再次尝试docker info以确保正确性。

3

我遇到了完全相同的错误。结果发现是Cisco AnyConnect客户端影响了我的网络设置。仅仅退出AnyConnect是不够的,你需要重新启动机器才能恢复设置。

如果有人知道更多关于AnyConnect如何影响事情以及是否有比重新启动更好的解决方案,我很乐意听取!


嗨David,我没有使用AnyConnect。 - Rahul
1
使用AnyConnect似乎会导致问题。当调用docker-machine env default时,原始设置说明将无法正确工作,但是如果我重新启动并执行命令docker-machine create -d virtualbox dev,随后的docker run hello-world将正常工作。为了确保,我再次启动了AnyConnect,并尝试使用相同的命令创建一个qa机器,但是出现了相同的错误。 - BrDaHa

1

将证书从"C:\Users\xxx\.docker\machine\certs"复制

粘贴证书到"C:\Users\xxx\.docker\machine\machines\dev"


0

注意:这个错误是在 Windows 10 Docker 上出现的

这是我的错误:

@user ➜  git-repo git(users/user/dev) ✗  docker
unable to resolve docker endpoint: open C:\Users\user\.docker\ca.pem: The system cannot find the file specified.

这是我用来重新创建证书的 shell 文件链接,我将其命名为generate_docker_cert.sh

https://gist.github.com/bradrydzewski/a6090115b3fecfc25280

所以我去了那个错误输出的目录:

cd C:\Users\user\.docker\

创建了该文件:

notepad generate_docker_cert.sh

将链接中的值复制到那里并保存。

然后运行那个.sh文件:

.\generate_docker_cert.sh

然后docker命令就可以工作了:

@user ➜  git-repo git(users/user/dev) ✗  docker

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接