web-dev-qa-db-fra.com

Docker pour Windows ne fonctionne pas

J'ai installé la boîte à outils Docker maintenant et j'obtiens l'erreur pour tout:

Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectExtcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

docker version sortie:

Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      windows/AMD64
Get http://127.0.0.1:2375/v1.20/version: dial tcp 127.0.0.1:2375: ConnectEx tcp: No connection could be made because the target machine actively refused it..
* Are you trying to connect to a TLS-enabled daemon without TLS?
* Is your docker daemon up and running?

Mais la VM fonctionne sous VirtualBox. J'ai cherché partout mais je ne trouve pas de solution. 

UPDATE1: J'utilise Windows 8.1 et j'ai également essayé de démarrer par Kinematic également.

UPDATE2: Tout a fonctionné comme un charme lorsque j'ai essayé Virtualbox Test Build 5.0.3 ou une version ultérieure. Vous pouvez télécharger ici: https://www.virtualbox.org/wiki/Testbuilds

69

Il suffit de courir:

"C:\Program Files\Docker Toolbox\docker-machine" ls

récupérez le nom de la machine, puis exécutez:

"C:\Program Files\Docker Toolbox\docker-machine" env <MACHINE_NAME_HERE> --Shell=[cmd|powershell]

et vous devriez obtenir quelque chose comme ça:

"C:\Program Files\Docker Toolbox\docker-machine" env default --Shell=cmd
set DOCKER_TLS_VERIFY=1
set DOCKER_Host=tcp://192.X.X.X:2376
set DOCKER_CERT_PATH=C:\Users\X\.docker\machine\machines\default
set DOCKER_MACHINE_NAME=default
# Run this command to configure your Shell:
# copy and paste the above values into your command Prompt

J'ai aussi une erreur open C:\Users\X\.docker\machine\machines\default\server.pem: The system cannot find the file specified. et résolu le problème en mettant à niveau ma VirtualBox vers la version 5.0.3 (à partir de nightly builds

Version longue:

J'ai eu le même problème et après et la section "Utilisation de Docker à partir de l'invite de ligne de commande Windows (cmd.exe)" du manuel d'installation m'a mis dans la bonne direction

Le fonctionnement de docker consiste essentiellement à transmettre les commandes "docker" à un service de docker (exécuté sur le port 2375). Lorsque vous exécutez le menu fixe depuis l'hôte Windows, le service s'exécute en réalité sur l'hôte Linux créé par le menu fixe (vous pouvez le voir en ouvrant l'interface utilisateur virtualbox). 

Le flux habituel est le suivant:

  1. la machine par défaut est créée
  2. le démarreur (kinamatic/"Docker Quickstart Terminal"/cmd) de la machine attend le démarrage de la machine, obtient son adresse IP et définit l'adresse IP de linux comme adresse de service (au lieu de 127.0.0.1:2375)/variables variables
  3. à partir de ce moment toutes les commandes docker ... sont envoyées à l'hôte linux et tout fonctionne presque comme linux natif 

Le problème est qu'il y a un problème avec la configuration de la machine (je suppose que la nouvelle boîte virtuelle mais je ne suis pas sûr et j'ai le temps de creuser dedans). Vous pouvez voir qu'en exécutant la commande ls, vous remarquerez que (du moins dans mon cas) l'état de la machine est "timeout" et qu'il n'y a pas d'URL, contrairement à la sortie indiquée dans le manuel.

Ainsi, les valeurs d’environnement ne sont pas définies et les commandes docker ... échouent. 

En plus d'exécuter la commande, vous pouvez également démarrer le Docker Quickstart Terminal qui fait la même chose mais avec sh Shell

En ce qui concerne l'erreur de certificat, j'ai essayé de régénérer les certificats à partir de la machine virtuelle en utilisant:

/usr/local/bin/generate_cert --overwrite --Host=default,127.0.0.1,10.0.2.15,192.168.99.100 --ca=/var/lib/boot2docker/tls/ca.pem --ca-key=/var/lib/boot2docker/tls/cakey.pem --cert=/var/lib/boot2docker/tls/server.pem --key=/var/lib/boot2docker/tls/serverkey.pem

J'ai eu des "erreurs de protocole" lorsque j'ai essayé de copier le certificat sur l'ordinateur hôte, ce qui m'a rappelé un ancien bogue de dossiers partagés de virtualbox. Ce n'est donc probablement pas un problème avec docker, mais avec virtualbox. J'ai mis à niveau vers la dernière version nocturne (5.0 .3-102224), a régénéré l’image par défaut et cela semble la résoudre. Windows 10 n'étant pas encore officiellement pris en charge, ni par docker ni par virtualbox, je ne suis pas sûr que ce soit la même chose qui entraîne l'erreur de certificat. Dans tous les cas, vous pouvez essayer de copier les certificats de la machine virtuelle (vous avez les chemins dans le bloc de code) vers votre répertoire utilisateur local (il est mappé sur/c/Users/X/dans la machine virtuelle)

60
SimSimY

Ce qui suit a fonctionné pour moi (Docker Toolbox 1.8.1b et Windows 7). C’est une version simplifiée de ce que @ baptiste-gaillard a exposé dans les commentaires ci-dessus. Réponse courte: Utilisez VirtualBox 5.03 ou une version ultérieure dès le début.

  1. Téléchargez VirtualBox 5.03 (version nocturne au moment de cet article) et le pack d’extensions.
  2. Redémarrez l'ordinateur portable. (Efface les trucs utilisant VirtualBox.)
  3. Installez VirtualBox 5.03 et le pack d'extension 5.03.
  4. Supprimez entièrement la VM par défaut (supprimez les fichiers).
  5. Réexécutez le raccourci Docker Quickstart Terminal pour générer la VM par défaut.

Le script Quickstart semble mieux s’entendre avec VirtualBox 5.03 en ce qui concerne la création des clés TLS requises.

8
James C

Avait le même problème que vous avez montré et juste résolu il y a quelques heures.

Il suffit de désactiver Hyper-V. Exécutez une invite de commande avec droits administrateur et exécutez la commande suivante:

bcdedit /set hypervisorlaunchtype off

Redémarrez votre PC, ouvrez virtualbox et supprimez la machine virtuelle par défaut après le redémarrage, revenez au terminal docker quickstart et entrez la commande suivante:

docker run hello-world

et tu as fini! J'espère que cela résoudra votre problème

7
Blah blah

ça marche pour moi

1) Commencez par lancer l'outil de ligne de commande et obtenez l'adresse IP de la machine en exécutant 

docker-machine ls command

2) Re-générer des certificats Docker-machine regenerate-certs

3) Définir les variables evn manuellement dans mon cas, l'emplacement des certificats était différent

set DOCKER_TLS_VERIFY = 1

set DOCKER_Host = tcp: // machine_IP: 2376

set DOCKER_CERT_PATH = C:\Utilisateurs\X.docker\machine\certs

set DOCKER_MACHINE_NAME = par défaut

Maintenant, lancez version de docker

Voici la sortie dans mon cas

Client: Version: 1.8.1 Version de l'API: 1.20 Allez version: go1.4.2 Git commit: d12ea79 Année de construction: jeu 13 août 02:49:29 UTC 2015 OS/Arch: windows/AMD64

Serveur: Version: 1.8.1 Version de l'API: 1.20 Allez version: go1.4.2 Git commit: d12ea79 Année de construction: jeu 13 août 02:49:29 UTC 2015 OS/Arch: linux/AMD64

5
sandiindia

L'installation de Docker Toolbox (dans 1.8.x) configure par défaut votre démon Docker pour qu'il utilise une connexion sécurisée via le protocole TLS (version 1.8).

Si vous utilisiez une ancienne version du démon qui n'était pas sécurisée, cela signifie au moins deux choses: - le numéro de port est passé de 2375 à 2376 - votre client démon doit présenter un certificat pour pouvoir communiquer avec votre moteur/serveur docker.

Donc, la réponse de sandiindia indique les variables d’environnement qui précisent au client docker la bonne configuration pour se connecter au serveur/moteur docker: 

#You're using a TLS secured daemon : 
set DOCKER_TLS_VERIFY=1

# Precise the Docker Host IP and port, the TLS default is 2376
set DOCKER_Host=tcp://*<docker_Host_IP>*:2376

# The paths to the certificate and client key needed to authenticate to the daemon
# You should have 3 files in this directory : ca.pem, cert.pem and key.pem 
# In my case the default path looks like : 
set DOCKER_CERT_PATH=C:\Users\*<username>*\.docker\machine\machines\default

#the name of your Docker Host VM : 
set DOCKER_MACHINE_NAME=default

La documentation de docker sur la configuration TLS: https://docs.docker.com/articles/https/

J'espère que ça aide;)

3
vbe
Close the virtual machine from Virtual Box (you don't have to delete it)
Close Kitematic
Close Docker Quickstart Terminal

Maintenant, faites ceci dans l'ordre:

Open Kitematic
Open Docker Quickstart Terminal

Il est important de ne pas d’ouvrir le terminal Docker Quickstart avant Kitematic, car ce dernier initialisera les choses pour le terminal Docker Quickstart

Je n'ai pas eu besoin d'exécuter de ligne de commande ..

J'espère que cela aidera un corps ..

2
simo

Moi aussi j'ai eu le même problème, mais j'ai été capable de le résoudre sans avoir à taper quoi que ce soit sur la ligne de commande, cela a fonctionné hors de la boîte. 

Il s'avère que quelques étapes d'initialisation étaient manquantes, comme indiqué dans la réponse acceptée ci-dessus. Pourquoi l'installation par défaut de Docker ne le faisait-elle pas déjà? J'avais aussi des certs manquants. Donc, j'ai tout désinstallé et redémarré à partir de zéro. Cependant, une fois l'installation terminée, n'ouvrez pas d'abord le terminal Docker Quick Start, ouvrez Kitematic pour effectuer la première initialisation à votre place.

Kitematic a créé les certificats pour moi, défini les variables env manquantes, puis j'ai ouvert le terminal Docker Quick Start. J'ai tapé docker run hello-world, puis docker version et cette fois, cela a fonctionné comme prévu, aucun message d'erreur.

Notez que cela ne fonctionnait pas lorsque j'ai d'abord ouvert le terminal Quick Start

Je teste Docker au sein d'instances VMWare 10 et j'ai pu dupliquer ce problème et sa solution (solution de contournement) dans tous les cas. 

J'espère que ça aide.

2
arnold

J'ai résolu mon problème en supprimant simplement la valeur par défaut VM dans le gestionnaire VirtualBox, en redémarrant l'ordinateur (au cas où), puis en réexécutant le terminal Docker Quickstart. C'est tout.

Docker 1.8.2 et Virtual Box 5.0.4

2
Garrick

With Docker 1.8.1d a eu le même problème, après avoir désinstallé 1.8.1c. Problème éventuellement résolu en installant la dernière version de Virtual Box (5.0.18), en redémarrant à l'invite et en démarrant Kitematic Kitematic échoue au début et offre la possibilité de supprimer et de réinstaller le VM comme je l’ai fait. Après cela, mon terminal QuickStart était OK.

1
Stefan Sieradzki
  1. Mise à jour vers la dernière boîte virtuelle ci-dessus 5.0.3
  2. Redémarrez le système
  3. ouvrir une boîte virtuelle et supprimer la machine virtuelle par défaut
  4. ouvrez le terminal de démarrage rapide de docker
  5. exécuter docker run hello-world

Et vous avez terminé.

1
abhishek shringi

Supprimez et supprimez toutes les anciennes machines v.machines de votre ordinateur portable: 1. Ouvrez VirtualBox, cliquez avec le bouton droit sur 'default', Supprimer, 'Supprimer tous les fichiers' . 2. Invite de commandes (Exécuter en tant qu'administrateur)> docker-machine rm default

Désinstallez Virtualbox, la boîte à outils Docker et Git . Accédez à c:\Users\Vinita et supprimez les répertoires. .docker et .Virtualbox CClean fichiers et registre . Redémarrez.

Le nettoyage est fait.

I. Téléchargez la dernière version des outils Docker pour Windows (1.10.2) à partir de Docker Toolbox Cliquez avec le bouton droit de la souris sur le fichier téléchargé et sur "Exécuter en tant qu’administrateur" Cela installera Docker Quickstart, Kitematic et Virtualbox.

II. Téléchargez la dernière version de test de VirtualBox (5.01.15-105696-win.exe) à partir de Testbuilds - Oracle VM VirtualBox. Exécutez à nouveau en tant qu'administrateur.

(Vous pouvez ignorer tous les avertissements et écraser sur le VirtualBox déjà installé par Docker).

Jusqu'ici, rien d'extraordinaire. Nous venons d'installer le logiciel avec les droits d'administrateur . Maintenant, Panneau de configuration> Centre réseau et partage> Modifier les paramètres de l'adaptateur: Cliquez avec le bouton droit de la souris sur Réseau hôte uniquement hôte VirtualBox # 2 pour afficher les propriétés . Vérifier> VirtualBox NDIS6 Pilote de réseau ponté. (S'il est déjà coché, décochez-le et revérifiez.)

Vous avez terminé. C'est le seul correctif que nous avons utilisé!

Kitematic et Docker Quickstart devraient tous deux fonctionner maintenant.

Faites un clic droit sur Kitematic et lancez-le en tant qu'administrateur pour la première fois. Testé sous Windows 10.

1
KRK

Cela ressemble au problème de la boîte virtuelle, Dans mon cas, j'ai effectué les étapes ci-dessous pour résoudre le problème.

  • Stop Docker machine par 'docker-machine stop'
  • Ouvrir le réseau et le centre de partage sous Windows
  • Cliquez sur Modifier les paramètres de la carte.
  • Désactiver le réseau VirtualBox-Host Only
  • Démarrer Docker machine par 'docker-machine start'
0
NIrav Modi

J'ai rencontré exactement la même erreur lorsque je lance images de menu fixe après un redémarrage du système. J'ai utilisé docker version 1.10 sur Windows 7 64 bits avec virtualbox 5.0.10 et menthe (le terminal est livré avec Git pour Windows)

L'exécution de docker-machine ls m'a montré que la machine virtuelle est dans l'état Timeout . $ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default virtualbox Timeout Alors j'ai redémarré la machine virtuelle $ docker-machine restart default Puis lister à nouveau le statut me dit que le certificat est lié à une adresse incorrecte: $ docker-machine ls Unable to query docker version: Get https://192.168.56.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.101, not 192.168.56.101 Ensuite, je régénère le certificat $ docker-machine regenerate-certs default et enfin $ eval $(docker-machine env default --Shell=bash) Ensuite, docker fonctionne à nouveau!

0
leon

Il suffit de recréer la machine par défaut, puis d’exécuter

docker-machine env default

Ça marche pour moi.

0
Nam Nguyen

Sur ma machine non virtuelle, j'ai eu la même erreur. Les étapes ci-dessous ont fonctionné pour moi

Faites un clic droit sur docker-> Sous Paramètres-> Général, le démon Expose est-il sur tcp: // localhost: 2375 sans que TLS soit activé? Vous devez le faire si vous souhaitez accéder au démon tel que décrit. Gardez toutefois à l'esprit que ce paramètre n'est pas sécurisé, comme expliqué dans l'avertissement.

0
harshal bhavsar

Cela m'est arrivé plusieurs fois sous Windows 10 avec VirtualBox 5.0.14.

Cela semble être lié au fait de ne pas éteindre correctement VirtualBox (je crois) - par exemple, une coupure de courant!

  1. Arrêter la VM Docker

  2. Fermer Kitematic

  3. Démarrer le terminal Docker Quickstart

  4. Tapez le terminal:

docker-machine.exe -D ls

  1. Démarrer Kitematic. Les VM apparaissent maintenant.

Si cela ne fonctionne pas, essayez à nouveau les étapes 1 à 3 et cette fois, essayez de régénérer les certificats Ensuite, faites l'étape 4.

Ce qui est étrange, c’est que, dans le terminal, docker images ne les répertorie pas, mais indique qu’il ne peut pas se connecter à 127.0.0.1:2375 (mais docker-machine ls indique que la machine par défaut fonctionne sur 192.168.99.100:2376).

0
rmcsharry

si vous utilisez Docker pour Windows (version bêta), procédez comme suit:

  • Désactiver la carte réseau "DockerNAT"
  • Exécutez le "Réinitialisation aux paramètres d'usine" via la barre des tâches/menu fixe/paramètres/Réinitialisation aux paramètres d'usine "
0
Gomes