web-dev-qa-db-fra.com

le menu fixe ne peut pas se connecter à boot2docker en raison du délai d'attente TCP

J'utilise Mac OS 10.9.5, j'ai suivi https://docs.docker.com/installation/mac/ pour installer docker. Je reçois un message d'erreur de dépassement de délai lorsque j'exécute le menu fixe, même si boot2docker VM s'exécute en arrière-plan.

nikhil@macbook ~> boot2docker status
running
nikhil@macbook ~> boot2docker ip

The VM's Host only interface IP address is: 192.168.59.103

nikhil@macbook ~> docker run hello-world
2014/11/01 01:01:31 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: i/o timeout
nikhil@macbook ~> docker search ubuntu
2014/11/01 01:02:40 Get https://192.168.59.103:2376/v1.15/images/search?term=ubuntu: dial tcp 192.168.59.103:2376: i/o timeout

J'ai vérifié que le menu fixe est en cours d'exécution à l'intérieur de la machine boot2docker et que mon port est correct.

nikhil@macbook ~> boot2docker ssh
                        ##        .
                  ## ## ##       ==
               ## ## ## ##      ===
           /""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
           \______ o          __/
             \    \        __/
              \____\______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.3.1, build master : 9a31a68 - Fri Oct 31 03:14:34 UTC 2014
Docker version 1.3.1, build 4e9bbfa
docker@boot2docker:~$ Sudo netstat -ntpl | grep docker
tcp        0      0 :::2376                 :::*                    LISTEN      629/docker
63
nikhil

J'ai eu ce problème aussi et voici une solution temporaire.

Tout d’abord, ouvrez virtualbox et vérifiez les paramètres réseau sur le boot2docker vm pour voir ce que le Host only l'adaptateur est nommé. Dans mon cas, c'est vboxnet1; pour vous, cela peut être vboxnet0.

Ensuite, appliquez cette commande:

Sudo route -nv add -net 192.168.59 -interface vboxnet1

Vous devriez maintenant pouvoir exécuter des commandes de menu fixe.

Voir ce numéro pour plus d'informations

edit : Je constate avec le temps qu'un dénominateur commun à ce problème est Cisco anyconnect (moi inclus), fwiw

57
darethas

J'utilise OSX Yosemite et Cisco Anyconnect (qui sont apparemment un mauvais combo pour utiliser boot2docker) et les éléments suivants ont finalement fonctionné pour moi (grâce au commentaire lié au problème GitHub ):

Ces étapes ajouteront une règle de transfert de port et modifieront votre environnement pour que le menu fixe pointe sur 127.0.0.1 (au lieu de 192.168.59.103 ou autre adresse IP NATée).

Premier - boot2docker doit être installé mais ne fonctionne pas.

S'il est en cours d'exécution, arrêtez-le maintenant:

boot2docker down

Ajouter une règle pour transférer le trafic de 127.0.0.1:2376 pour mettre en communication 2376 sur la machine boot2docker:

vboxmanage modifyvm "boot2docker-vm" --natpf1 "docker,tcp,127.0.0.1,2376,,2376"

Démarrez boot2docker:

boot2docker up

Définissez les variables d'environnement DOCKER par défaut:

$(boot2docker shellinit)

Remplacer le DOCKER_Host variable pour pointer sur 127.0.0.1:

export DOCKER_Host=tcp://127.0.0.1:2376

Vous devriez maintenant pouvoir exécuter les commandes de docker:

docker version
64
user2472759

Voici ce que j'ai fait pour résoudre le problème (j'utilise OSX Yosemite et la réponse acceptée ne fonctionne pas pour moi):

  • boot2docker delete - Attention: Cela supprime toutes vos images du menu fixe.
  • Dans Virtualbox, accédez à VirtualBox (menu) => Préférences => Réseau => Réseaux hôtes uniquement
    • Supprimer les réseaux hôtes uniquement, puis je les ai rajoutés
  • boot2docker init
  • boot2docker up

Docker fonctionne désormais à partir de la ligne de commande OS X via iTerm2 pour moi.

45
KLaw

Cela m'est arrivé aussi, et aucune des solutions ci-dessus n'a résolu le problème.

Aujourd'hui, grâce à la suggestion de mes collègues, je n'ai pas d'abord démarré mon VPN. J'ai redémarré ma machine et démarré avec docker depuis le début.

boot2docker init
boot2docker up
$(boot2docker shellinit)
docker run hello-world

Travaillé comme prévu!

J'ai trouvé cela post de Florian Rosenberg utile. Je l'ai lu en détail, mais je pense que la plupart de ce qu'il suggère dans la première partie a été pris en compte dans la version la plus récente de boot2docker. Mais la partie intéressante était "Connexion au VPN Les choses vont se casser". Ce qu'il a suggéré est de rechercher une règle de pare-feu qui refuse tout. Donc, sans VPN, je cherchais cette règle, qui n'y était pas. Effectivement, une fois que j'ai activé mon VPN, l'erreur suivante (différente) s'est produite ...

docker run hello-world
2014/11/13 11:11:18 Post https://192.168.59.103:2376/v1.15/containers/create: dial tcp 192.168.59.103:2376: permission denied

J'ai vérifié les règles du pare-feu et, bien sûr, une nouvelle règle a été ajoutée ... Sudo ipfw -a list | grep "deny ip" 00411 1 64 refuser l'ip de n'importe

Une fois que j'ai supprimé cette règle de pare-feu avec: Sudo ipfw delete 00411

J'ai pu parler au menu fixe à partir de la commande Shell OSX.

6
bobbiejc

Ok, donc cela m'est arrivé aussi.

Tout d'abord, la définition des variables d'environnement est nécessaire. Mais ensuite, j'ai continué à avoir l'erreur d'erreur de délai d'attente d'E/S même après cela.

Ainsi, au lieu de démarrer boot2docker en exécutant le package d'application (en cliquant sur l'icône boot2docker), je l'ai démarré à partir de la ligne de commande.

J'ai d'abord exécuté,

$boot2docker init

Ceci dit, le VM était déjà en cours d'exécution.

Ensuite, je suis allé de l'avant et j'ai essayé de le démarrer.

$boot2docker start

Cela a commencé.

Vous pouvez le vérifier en exécutant

$boot2docker info

Il imprime un JSON sur votre instance en cours d'exécution.

Ensuite, vous pouvez ssh dedans et courir

$boot2docker ssh
$docker run hello-world

C'est ça. J'espère que ça aide.

5
wlan0

J'ai eu ce problème après avoir exécuté Cisco AnyConnect. Même après avoir arrêté AnyConnect, le problème a persisté. La réponse de @ treehau5 fonctionne, mais ce qui a également fonctionné pour moi a été de boot2docker poweroff puis à l'aide du moniteur d'activité, supprimez le ciscod laissé par AnyConnect. Ensuite, j'ai ouvert une nouvelle fenêtre de terminal et démarré normalement boot2docker. Les commandes de docker ont ensuite fonctionné correctement.

4
Dan Tenenbaum

C'était facile pour moi. J'ai mis à niveau virtualbox et ce problème est parti.

3
Rimian

J'ai essayé la méthode treehau5 mais cela n'a pas fonctionné. J'ai modifié le paramètre réseau de VirtualBox du paramètre v2 de boot2docker - le mode Promiscuous de l'adaptateur pour hôte uniquement à "Autoriser tout".

2
surajz

J'ai supprimé vboxnet0 des préférences de VirtualBox et initialisé un deuxième boot2docker vm (boot2docker --vm = "boot2docker-vm2" init) pour recréer vboxnet0 avec les paramètres corrects. Après cela, les choses semblèrent redevenir normales.

0
lenny

Voici ce qui a fonctionné pour moi quand j'ai rencontré un problème similaire. Assurez-vous d'avoir mis à niveau VirtualBox, puis:

  1. boot2docker stop
  2. boot2docker init
  3. boot2docker start; eval "$(boot2docker shellinit)"

Ensuite, pour des raisons de santé mentale, vérifiez que $DOCKER_Host Correspond à $(boot2docker ip). Je soupçonne que beaucoup de choses se passaient, car lorsque j'ai commencé, $DOCKER_Host Était devenu désorganisé.

La question et quelques discussions peuvent être trouvées dans la page des problèmes de GitHub ici - il semble plutôt que ce soit souvent le cas où VirtualBox est floconneux.

0
Alex Lynham