检查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.
顺便说一句,再生证书也没有帮助。 任何想法?
谢谢。
在做了一些研究之后,我发现下面的解决方法可以解决这个问题:
-
打开networking与共享中心
-
点击更改适配器设置
-
查看是否有任何已启用的适配器,如VPN或VM Warenetworking适配器。
-
尝试禁用它们,并尝试再次连接到您的容器
-
如果在禁用其他适配器的情况下无法正常工作,请重新启动您的电脑 – 在我的情况下,这对我有用。
请尝试手动重新生成证书:
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提出的相似,然后重新生成证书。
- 打开networking与共享中心。
- 点击更改适配器设置。
- 禁用所有活动的VMWarenetworking适配器。 通常有解释“VirtualBox主机专用以太网适配器”。
- 通过运行
docker-machine start
连接到你的容器。 - 运行
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
。 - 现在
STATE
和URL
都可以。
但重新启动系统这个问题依然存在。
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议你检查系统中是否有任何反病毒程序正在运行。