Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 检查TLS连接时出错:检查和/或重新生成证书时出错_Docker_Docker Machine - Fatal编程技术网

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

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

重新启动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.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.
顺便说一句,重新生成证书也没有帮助。 有什么想法吗


谢谢。

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

  • 开放式网络与共享中心

  • 单击更改适配器设置

  • 查看是否有任何已启用的适配器,如VPN或VM Ware网络适配器

  • 尝试禁用它们并再次尝试连接到容器

  • 如果在您禁用其他适配器时它不工作,请重新启动您的电脑-在我的情况下,这对我很有效


  • 请尝试通过以下方式手动重新生成证书:

    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提出的类似,然后重新生成证书

  • 开放网络和共享中心
  • 单击更改适配器设置
  • 禁用所有活动的VMWare网络适配器。通常有解释“VirtualBox主机专用以太网适配器”
  • 通过运行
    docker machine start
    连接到您的容器
  • 运行
    docker machine env
    。如果你像我一样,你会得到以下错误:
  • 检查TLS连接时出错:检查和/或重新生成连接时出错 证书:验证主机的证书时出错 “192.168.99.100:2376”:x509:证书对192.168.99.101有效, 不是192.168.99.100

    这很好。现在我们需要做的就是跑步

    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