Docker 检查TLS连接时出错:检查和/或重新生成证书时出错
重新启动windows后,我无法连接到在Oracle Virtual Box中运行的docker计算机。 当我启动Docker QuickStart Terminal时,一切看起来都很好,一切正常,它给了我以下信息:Docker 检查TLS连接时出错:检查和/或重新生成证书时出错,docker,docker-machine,Docker,Docker Machine,重新启动windows后,我无法连接到在Oracle Virtual Box中运行的docker计算机。 当我启动Docker QuickStart Terminal时,一切看起来都很好,一切正常,它给了我以下信息: docker is configured to use the default machine with IP 192.168.99.100 For help getting started, check out the docs at https://docs.docker.co
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
但当我这样做的时候:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Timeout
以及:
此外,当我尝试重新初始化我的环境时,我会得到:
λ docker-machine env default
Error checking TLS connection: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.
顺便说一句,重新生成证书也没有帮助。
有什么想法吗
谢谢。在做了一些研究之后,我发现以下解决方法现在可以解决这个问题:
请尝试通过以下方式手动重新生成证书:
docker-machine --debug regenerate-certs -f default
并检查是否有任何要修复的错误,然后重试:
docker-machine --debug env default
如果ssh失败,请将该命令复制并粘贴到终端,通过添加额外的-vv
来查看问题所在
如果你有:
debug1:连接到地址127.0.0.1端口64368:连接被拒绝
那么您的机器没有运行(请通过docker machine ls检查),请尝试:
然后尝试通过ssh连接到它:
docker-machine -D ssh default
我确保能够连接到docker机器的方法是(并且只重新生成一次证书)(无需重新启动) 此后,
docker机器ls
始终工作
我当前的脚本:(将
%PRGS%\dm\latest
替换为机器上的docker machine.exe
路径)(确保
PATH
包含,以便ssh等命令可用)
例如:
dmvbf default 99 100
docker-machine regenerate-certs -f default
将192.168.99.100
分配给docker机器“default
”,并重新生成证书一次。然后每次调用
docker machine ls
,它都会为“default
”显示相同的IP。以下是对我有效的方法。第一步与Hazhir提出的类似,然后重新生成证书
docker machine start
连接到您的容器docker machine env
。如果你像我一样,你会得到以下错误:docker-machine regenerate-certs -f default
然后用docker machine env
再次测试。如果您得到:
SET DOCKER_TLS_VERIFY=1
SET DOCKER_HOST=tcp://192.168.99.100:2376
SET DOCKER_CERT_PATH=C:\Users\Jay\.docker\machine\machines\default
SET DOCKER_MACHINE_NAME=default
REM Run this command to configure your shell:
REM FOR /f "tokens=*" %i IN ('docker-machine env') DO %i
那你就准备好了。在我的情况下,我需要通过运行Docker Quickstart Terminal来启动我的虚拟机。我通过以下方式修复它:
- 从我的VirtualBox(VirtualBox)中删除了所有仅限主机的接口→ 偏好→ 网络→ 仅主机网络)
rmdir.exe——忽略非空~/.docker/
docker机器启动
docker机器环境
(也添加在我的eval$(“C:\Program Files\Docker Toolbox\Docker machine.exe”env default)
).bash\u配置文件的末尾
← 正在工作docker运行hello world
灵感来源于。尝试以下方法/解决方法:
- 首先确保$yourhome/.docker/machine/certs/文件夹下有ca.pem、cert.pem、key.pem、ca-key.pem,对于这些丢失的四个*.pem文件,您可以从其他地方复制它们,也可以自己创建它们(这四个pem文件一开始肯定不正确)
- 确保在bash_概要文件中正确设置环境,如: 导出DOCKER\u主机=tcp://192.168.99.100:2376 导出DOCKER\u MACHINE\u NAME=默认值 导出DOCKER\u TLS\u VERIFY=1 导出DOCKER\u CERT\u PATH=/Users/johnwang/.DOCKER/machine/machines/default
- 重新运行cmd:docker机器重新生成证书默认值(可能在运行此操作之前,您需要重新打开docker终端) 在mac上的docker toolbox上试用过,效果很好
- 最后是一些结果日志: 检查TLS连接时出错:检查和/或重新生成证书时出错:验证主机“192.168.99.100:2376”的证书时出错:x509:由未知授权机构签署的证书 您可以尝试使用“docker machine regenerate certs[name]”重新生成证书。 请注意,这将触发Docker守护进程重新启动,这可能会停止运行容器。 ... ... 约翰MacBook Pro:certs johnwang$docker机器重新生成证书默认值 重新生成TLS计算机证书?警告:这是不可逆的。(是/否):是 重新生成TLS证书 正在等待SSH可用。。。 正在检测供应器。。。 正在将证书复制到本地计算机目录。。。 正在将证书复制到远程计算机。。。 正在远程守护程序上设置Docker配置。。。 约翰MacBook Pro:certs johnwang$docker机器ls 名称活动驱动程序状态URL SWARM DOCKER错误 默认-virtualbox正在运行tcp://192.168.99.100:2376 v17.03.1-ce
也可以在这里看到我的回答:在我的案例中,是我的
FortiClient
导致了问题。禁用后,docker machine env default
再次正常工作。我建议你检查一下你的系统中是否有反病毒程序。我也有这个问题。执行docker机器重新生成证书
无法解决问题。我搜索谷歌的错误信息,并找到下面的解决方案
- 在终端中执行
sudo ifconfig vboxnet0 up
- 显示docker机器状态:
docker机器ls
- 现在
和STATE
U
dmvbf default 99 100 docker-machine regenerate-certs -f default
docker-machine regenerate-certs -f default
SET DOCKER_TLS_VERIFY=1 SET DOCKER_HOST=tcp://192.168.99.100:2376 SET DOCKER_CERT_PATH=C:\Users\Jay\.docker\machine\machines\default SET DOCKER_MACHINE_NAME=default REM Run this command to configure your shell: REM FOR /f "tokens=*" %i IN ('docker-machine env') DO %i
docker-machine --debug regenerate-certs -f name_of_your_vm
docker-machine version 0.16.1 virtualBox 6.0
docker-machine start <machine-name> docker-machine regenerate-certs <machine-name>
docker-machine regenerate-certs --client-certs [name]
sudo ufw allow 2376