检查TLS连接时出错:检查和/或重新生成证书时出错

在我重新启动我的窗口后,我无法连接到在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.com 

但是当我这样做:

 $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default - virtualbox Timeout 

和:

 λ docker images An error occurred trying to connect: Get http://localhost:2375/v1.21/images/json: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it. 

当我尝试重新初始化我的环境,我得到:

 λ 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. 

顺便说一句,再生证书也没有帮助。 任何想法?

谢谢。

在做了一些研究之后,我发现下面的解决方法可以解决这个问题:

  1. 打开networking与共享中心

  2. 点击更改适配器设置

  3. 查看是否有任何已启用的适配器,如VPN或VM Warenetworking适配器。

  4. 尝试禁用它们,并尝试再次连接到您的容器

  5. 如果在禁用其他适配器的情况下无法正常工作,请重新启动您的电脑 – 在我的情况下,这对我有用。

请尝试手动重新生成证书:

 docker-machine --debug regenerate-certs -f default 

并检查是否有任何错误需要修复,然后再试一次:

 docker-machine --debug env default 

如果在ssh上失败,则复制该命令并粘贴到terminal,通过添加extra -vv来查看问题。

如果你有:

debug1:连接到地址127.0.0.1端口64368:连接被拒绝

那么你的机器没有运行(通过docker-machine ls检查),所以试试:

 docker-machine start 

然后尝试通过SSH ssh:

 docker-machine -D ssh default 

这对我工作:

  • 从我的virtualbox中删除所有主机接口(VirtualBox => Preferences => Network => Host-only networks)。
  • rmdir.exe --ignore-fail-on-non-empty ~/.docker/
  • docker-machine start
  • docker-machine env
  • eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default) (也添加在我的.bash_profile结尾。
  • docker run hello-world < – 现在rorking

灵感来自这里的职位 。

这是为我工作。 第一步与Hazhir提出的相似,然后重新生成证书。

  1. 打开networking与共享中心。
  2. 点击更改适配器设置。
  3. 禁用所有活动的VMWarenetworking适配器。 通常有解释“VirtualBox主机专用以太网适配器”。
  4. 通过运行docker-machine start连接到你的容器。
  5. 运行docker-machine env 。 如果你像我一样,那么你会得到以下错误:

检查TLS连接时出错:检查和/或重新生成证书时出错:validation主机“192.168.99.100:2376”的证书时出错:x509:证书对192.168.99.101有效,而不是192.168.99.100

哪个好。 现在我们需要做的就是跑步

 docker-machine regenerate-certs -f default 

然后用docker-machine env再次testing它。 如果你得到:

 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快速入门terminal来启动我的虚拟机。

我也有这个问题。 执行docker-machine regenerate-certs <vm-name>无法解决问题。 我searchGoogle的错误信息,并find下面的解决scheme。

  • 在terminal执行sudo ifconfig vboxnet0 up
  • 显示docker机状态: docker-machine ls
  • 现在STATEURL都可以。

但重新启动系统这个问题依然存在。

GitHub问题链接,我发现在这里。

看来VirtualBox 5.1.24中有一个bug 。

我确保能够连接到我的docker机器的方式是分配一个固定的IP (并且只重新生成一次证书)(不需要重新启动)

之后, docker-machine ls总是工作。

我目前的脚本:
(用你的机器上%PRGS%\dm\latest docker-machine.exe的pathreplace%PRGS%\dm\latest
(请确保PATH包含最新的/ path / to / git / usr / bin ,以便像ssh这样的命令可用)

 > more dmvbf.bat @echo off setlocal enabledelayedexpansion set machine=%1 if "%machine%" == "" ( echo dmvbf expects a machine name exit /b 1 ) set ipx=%2 if "%ipx%" == "" ( echo dmvbf x missing ^(for 192.168.xy^) exit /b 2 ) set ipy=%3 if "%ipy%" == "" ( echo dmvbf y missing ^(for 192.168.xy^) exit /b 3 ) %PRGS%\dm\latest\docker-machine.exe ssh %machine% "sudo sh -c 'echo \"kill \$(more /var/run/udhcpc.eth1.pid)\" | sudo tee /var/lib/boot2docker/bootsync.sh >/dev/null'" %PRGS%\dm\latest\docker-machine ssh %machine% "sudo sh -c 'echo \"ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up\" | sudo tee -a /var/lib/boot2docker/bootsync.sh >/dev/null'" %PRGS%\dm\latest\docker-machine ssh %machine% "sudo chmod 755 /var/lib/boot2docker/bootsync.sh" %PRGS%\dm\latest\docker-machine ssh %machine% "sudo cat /var/run/udhcpc.eth1.pid | xargs sudo kill" %PRGS%\dm\latest\docker-machine ssh %machine% "sudo ifconfig eth1 192.168.%ipx%.%ipy% netmask 255.255.255.0 broadcast 192.168.%ipx%.255 up" 

例如:

 dmvbf default 99 100 docker-machine regenerate-certs -f default 

这将分配192.168.99.100泊坞窗机器“ default ”,并重新生成一次证书。
然后,每次docker-machine ls被调用时,它将显示相同的IP为' default '。

尝试这种方式/解决方法:

  • 首先确认$ yourhome / .docker / machine / certs /文件夹下有ca.pem,cert.pem,key.pem,ca-key.pem,对于这些丢失的四个* .pem文件,可以从其他也可能是自己创build的(这四个文件在开头肯定是不正确的)
  • 请确保env在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 = / Users / johnwang / .docker / machine / machines / default
  • 重新运行cmd:docker-machine regenerate-certs默认值(也许在运行之前,你需要重新打开dockerterminal)在mac上的docker工具箱试过,并且工作。
  • 最后是结果的一些日志:错误检查TLS连接:错误检查和/或重新生成证书:validation主机“192.168.99.100:2376”的证书时出错:x509:由未知权限签名的证书您可以尝试重新生成它们使用“docker-machine regenerate-certs [name]”。 请注意,这将触发Docker守护进程重启,可能会停止运行容器。 … … johns-MacBook-Pro:certs johnwang $ docker-machine regenerate-certs default重新生成TLS机器证书? 警告:这是不可逆转的。 (y / n):y重新生成TLS证书等待SSH可用…检测供应商…将证书复制到本地机器目录…将证书复制到远程机器…在远程机器上设置Dockerconfigurationdaemon … johns-MacBook-Pro:certs johnwang $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default – virtualbox运行tcp://192.168.99.100:2376 v17.03.1-ce

希望它有助于也看到我的答复在这里: https : //github.com/docker/machine/issues/2808

在我的情况下,这是我的FortiClient造成的问题。 停用后, docker-machine env default再次正常工作。 我build议你检查系统中是否有任何反病毒程序正在运行。