web-dev-qa-db-fra.com

Erreur lors de la vérification de la connexion TLS: erreur lors de la vérification et / ou de la régénération des certificats

Après avoir redémarré mes fenêtres, je ne peux pas me connecter à la machine Docker exécutée dans Oracle Virtual Box. Lorsque je démarre Docker QuickStart Terminal, tout va bien, ça se passe bien et cela me donne ce message:

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

mais quand je fais:

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

et:

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

aussi quand j'essaye de réinitialiser mon env., j'obtiens:

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

BTW, Regenerating certs n'aide pas non plus. Une idée?

Merci.

26
Hazhir

Veuillez essayer de régénérer les certificats manuellement en:

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

et recherchez d'éventuelles erreurs à corriger, puis réessayez:

docker-machine --debug env default

S'il échoue sur ssh, copiez et collez cette commande dans le terminal pour voir quel est le problème en ajoutant -vv.

Si vous avez:

debug1: connexion à l'adresse 127.0.0.1 port 64368: connexion refusée

alors votre machine ne fonctionne pas (vérifiez par docker-machine ls), essayez donc:

docker-machine start

Essayez ensuite d'y accéder via:

docker-machine -D ssh default
11
kenorb

Après avoir fait quelques recherches, j'ai découvert que la solution de contournement suivante peut résoudre le problème pour l'instant:

  1. Centre de réseau et de partage ouvert

  2. Cliquez sur Modifier le paramètre de l'adaptateur

  3. Vérifiez si vous avez des adaptateurs activés tels que VPN ou VM adaptateurs réseau Ware.

  4. Essayez de les désactiver et essayez de vous connecter à votre conteneur une fois de plus

  5. Si cela n'a pas fonctionné alors que d'autres adaptateurs sont désactivés, redémarrez votre PC - dans mon cas, cela a fonctionné pour moi.

8
Hazhir

Cela a fonctionné pour moi:

  • Suppression de toutes les interfaces hôte uniquement de ma boîte virtuelle (VirtualBox => Préférences => Réseau => Réseaux hôte uniquement).
  • 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) (ajouté également à la fin de mon .bash_profile.
  • docker run hello-world <- maintenant en train de travailler

Inspiré d'un poste ici .

5
Pablo Bianchi

Voici ce qui a fonctionné pour moi. Les premières étapes sont similaires à celles proposées par Hazhir, puis régénérées par les certificats.

  1. Ouvrez le Centre Réseau et partage.
  2. Cliquez sur Modifier le paramètre de l'adaptateur.
  3. Désactivez toutes les cartes réseau VMWare actives. A généralement une explication "VirtualBox Host-Only Ethernet Adapter".
  4. Connectez-vous à votre conteneur en exécutant docker-machine start.
  5. Courir docker-machine env. Si vous êtes comme moi, vous obtiendrez l'erreur suivante:

Erreur lors de la vérification de la connexion TLS: erreur lors de la vérification et/ou de la régénération des certificats: une erreur s'est produite lors de la validation des certificats pour l'hôte "192.168.99.100:2376": x509: le certificat est valide pour 192.168.99.101, pas 192.168.99.100

Ce qui est bon. Maintenant, tout ce que nous devons faire est de courir

docker-machine regenerate-certs -f default

Ensuite, testez-le à nouveau avec docker-machine env. Si vous obtenez:

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

Ensuite, vous êtes prêt. Dans mon cas, je devais démarrer ma machine virtuelle en exécutant Docker Quickstart Terminal.

1
jaycode

J'ai aussi ce problème. Exécutez docker-machine regenerate-certs <vm-name> ne peut pas résoudre le problème. Je recherche dans Google les informations d'erreur et trouve la solution ci-dessous.

  • exécuter Sudo ifconfig vboxnet0 up dans le terminal.
  • affichez l'état de machine de docker: docker-machine ls.
  • maintenant STATE et URL sont ok.

Mais redémarrez le système, ce problème persiste.

problèmes GitHub le lien que j'ai trouvé est ici.

Il semble qu'il y ait bug dans VirtualBox 5.1.24.

1
invzhi

Dans mon cas, c'est mon FortiClient qui a causé le problème. Après l'avoir désactivé docker-machine env default a encore bien fonctionné. Je vous suggère de vérifier s'il existe un programme antivirus en cours d'exécution sur votre système.

0
Guster

Essayez de cette façon/solution:

  • assurez-vous d'abord qu'il y a ca.pem, cert.pem, key.pem, ca-key.pem sous $ yourhome/.docker/machine/certs/folder, pour ces quatre fichiers * .pem perdus, vous pouvez les copier à partir d'autres placez-les ou créez-les vous-même (ces quatre fichiers pem ne sont sûrement pas corrects au début)
  • assurez-vous que l'environnement est correctement défini dans bash_profile, comme: export DOCKER_Host = tcp: //192.168.99.100: 2376 export DOCKER_MACHINE_NAME = export par défaut DOCKER_TLS_VERIFY = 1 export DOCKER_CERT_PATH =/Users/johnwang/.docker/machine/machines/default
  • relancez le cmd: docker-machine régénérer-certs par défaut (peut-être avant d'exécuter cela, vous devez rouvrir le terminal docker) Testé sur la boîte à outils docker sur mac, et cela fonctionne.
  • Enfin quelques journaux du résultat: Erreur lors de la vérification de la connexion TLS: Erreur lors de la vérification et/ou de la régénération des certificats: une erreur s'est produite lors de la validation des certificats pour l'hôte "192.168.99.100:2376": x509: certificat signé par une autorité inconnue Vous pouvez tenter de les régénérer en utilisant 'docker-machine regenerate-certs [nom]'. Sachez que cela déclenchera un redémarrage du démon Docker qui pourrait arrêter l'exécution des conteneurs. ... ... johns-MacBook-Pro: certs johnwang $ docker-machine regenerate-certs par défaut Regenerate TLS machine certs? Attention: c'est irréversible. (y/n): y Régénération des certificats TLS En attente de la disponibilité de SSH ... Détection du provisionneur ... Copie des certificats dans le répertoire de la machine locale ... Copie des certificats dans la machine distante ... Définition de la configuration Docker sur la télécommande démon ... johns-MacBook-Pro: certs johnwang $ docker-machine ls NOM ACTIVE DRIVER STATE URL ERREUR SWOCK DOCKER défaut - virtualbox Running tcp: //192.168.99.100: 2376 v17.03.1-ce

J'espère que cela aide aussi à voir ma réponse ici: https://github.com/docker/machine/issues/2808

0
john

La façon dont je m'assure de pouvoir me connecter à mes machines à docker est en en leur attribuant une IP fixe (et en régénérant les certificats une seule fois) (aucun redémarrage nécessaire)

Après ça, docker-machine ls Fonctionne toujours.

Mon script actuel:
(remplacer %PRGS%\dm\latest par le chemin où docker-machine.exe est sur votre machine)
(assurez-vous que PATH inclut le dernier/chemin/vers/git/usr/bin , pour que des commandes comme ssh soient disponibles)

> 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.x.y^)
        exit /b 2
)
set ipy=%3
if "%ipy%" == "" (
        echo dmvbf y missing ^(for 192.168.x.y^)
        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"

Par exemple:

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

Cela affectera 192.168.99.100 à la machine docker 'default', et régénérez les certificats une fois.
Puis à chaque fois docker-machine ls est appelé, il affichera la même IP pour 'default'.

0
VonC

Il suffit de démarrer la machine docker puis de régénérer les certificats

docker-machine start <machine-name>

docker-machine regenerate-certs <machine-name>

Cela fonctionne comme un charme pour moi.

0
Asad Shakeel

pour moi, courir

docker-machine --debug regenerate-certs -f name_of_your_vm

a très bien fonctionné.

docker-machine version 0.16.1
virtualBox 6.0

docker a également été configuré pour utiliser la machine par défaut avec IP 192.168.99.100

0
aurelius