web-dev-qa-db-fra.com

Délai d'attente de la machine Docker - comment réparer sans détruire la machine?

Je rencontre un problème récurrent avec Docker Machine. Tous les jours ou quelques jours, le délai d’arrêt du délai est dépassé et je suis incapable de le récupérer une fois que cela se produit.

Exemple

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

Info Environnement

uname -a                 Darwin ColeyMBPR 15.4.0 Darwin Kernel Version 15.4.0: Fri Feb 26 22:08:05 PST 2016; root:xnu-3248.40.184~3/RELEASE_X86_64 x86_64
docker version           1.11.0
docker-machine version   0.7.0
vboxmanage --version     5.0.20r106931

Solutions tentées

J'ai essayé les choses suivantes sans ordre particulier:

  • Redémarrer le docker.
  • Lancer eval "$(docker-machine env default)"
  • Régénération des certificats docker-machine regenerate-certs default
  • Redémarrer ma boîte hôte.
  • Mise à niveau de Docker.
  • Réinstallation de Docker.
  • Mise à niveau de VirtualBox.
  • Suppression de tous les périphériques réseau VirtualBox Host uniquement.

Pirater

La seule chose qui fonctionne pour moi en ce moment est de détruire la machine de docker et de la recréer. Cela détruit toutes mes images et tous mes conteneurs et il est extrêmement fastidieux de le configurer à nouveau.

docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)

Y a-t-il quelque chose que je puisse essayer? Merci!


Mise à jour: 9 mai (étapes à suivre)

Je peux reproduire ce problème de manière fiable en procédant comme suit:

  1. Commencez avec une machine Docker fraîchement créée.
  2. Utilisez docker-compose up pour créer des conteneurs.
  3. Arrêtez l'ordinateur avec les conteneurs en cours d'exécution.
  4. Après le redémarrage, la CLI de Docker ne fonctionne plus car l'ordinateur Docker arrive à expiration.
27
Josh Cole

Cette commande a fonctionné pour moi avec le pilote digitalocean:

docker-machine ls -t 20

Il semble que le délai d'attente par défaut de 10 secondes soit trop court.

19
Tom

Il s'agit généralement d'un problème lié à la manière dont vous démarrez et arrêtez votre machine.

U peut le résoudre en utilisant 

$ docker-machine stop default

$ docker-machine start default

$ docker-machine regenerate-certs par défaut

N'utilisez pas "docker-machine restar default" car cela ne rafraîchirait pas vos configurations réseau.

4
Fabián Bertetto

J'ai eu le même problème avec Docker version 1.11.2, build b9f10c9

cela a fonctionné pour moi - mon docker est de nouveau en état de fonctionnement

$ docker-machine restart

$ eval $ (env. docker-machine)

3
jset74

Mon problème était très simple. Je bloquais le port 2376 avec mon pare-feu ufw. Docker-machine a besoin de ce port ouvert pour se connecter à la télécommande. 

J'ai trouvé la réponse à mon problème sur cette page:

1
Rick.H

Cela a fonctionné pour moi et mes conteneurs n'ont pas été détruits:

  1. Ouverture de la boîte virtuelle Oracle et suspension de la machine virtuelle
  2. Redémarrage de la VM sur le docker

    $ docker-machine restart par défaut

version de docker: 1.12.3

version docker-machine: 0.8.2, build e18a919

0
tej

Jusqu'à présent, j'ai un peu une solution de hacky - cela corrige la machine docker mais détruit tous les conteneurs et les images.

Script: rebuild-machine.sh

docker-machine rm -y default
docker-machine create -d virtualbox default
docker-machine stop default
VBoxManage modifyvm "default" --natpf1 "Forwarding App 1,tcp,127.0.0.1,3000,,3000"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 2,tcp,127.0.0.1,3001,,3001"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 3,tcp,127.0.0.1,3004,,3004"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 4,tcp,127.0.0.1,3005,,3005"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 5,tcp,127.0.0.1,3006,,3006"
VBoxManage modifyvm "default" --natpf1 "Forwarding App 6,tcp,127.0.0.1,8081,,8081"
docker-machine start default
eval $(docker-machine env)

Explication

  • Détruit le docker par défaut, les conteneurs et les images.
  • Crée un nouveau poste fixe sur VirtualBox et l’arrête afin que nous puissions modifier VirtualBox.
  • Ajoute la redirection de port pour diverses applications sur VirtualBox.
  • Démarre la machine de docker.
  • S'assure que le terminal est configuré pour la nouvelle adresse IP de la machine de menu fixe.
0
Josh Cole

J'ai ouvert virtualbox et fermé et démarrez tous vm manuellement /. State est running again

0
Crystal

Mon problème était très trivial - j'ai exécuté la commande "docker machine ls" juste après le redémarrage de la machine docker. Elle ne fonctionnait donc pas encore et cela entraînait un dépassement de délai.

0
Adam Stepniak