macos - run - docker-compose
Tiempo de espera de la máquina Docker: ¿cómo solucionarlo sin destruir la máquina? (7)
Tengo un problema recurrente con Docker Machine: cada pocos días decide el tiempo de espera y no puedo recuperarlo una vez que esto sucede.
Ejemplo
docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default virtualbox Timeout
Información del entorno
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
Soluciones intentadas
He intentado las siguientes cosas en ningún orden en particular:
- Reiniciando la máquina docker.
- Ejecutando
eval "$(docker-machine env default)"
- Regenerando los certificados
docker-machine regenerate-certs default
- Reiniciando mi caja de host.
- Actualización de Docker.
- Reinstalando Docker.
- Actualizando VirtualBox.
- Eliminación de todos los dispositivos de red solo host de VirtualBox.
Cortar
Lo único que me funciona en este momento es destruir la máquina acoplable y volver a crearla. Esto destruye todas mis imágenes y contenedores, y es increíblemente lento para configurarlo de nuevo.
docker-machine rm -y default && docker-machine create -d virtualbox default && eval $(docker-machine env)
¿Hay algo que pueda intentar? ¡Gracias!
Actualización: 9 de mayo (Pasos para reproducir)
Puedo reproducir este problema de manera confiable con los siguientes pasos:
- Comience con una máquina Docker recién creada.
- Usa
docker-compose up
para construir algunos contenedores. - Apague la computadora con los contenedores en funcionamiento.
- Después de reiniciar, la CLI de Docker no funciona debido al tiempo de espera de la máquina Docker.
Este comando me funcionó con el controlador digitalocean:
docker-machine ls -t 20
Parece que el tiempo de espera predeterminado de 10 segundos fue demasiado corto.
Este suele ser un problema relacionado con la forma en que inicia y detiene su máquina.
U puede resolverlo usando
$ docker-machine detener por defecto
$ docker-machine start default
$ docker-machine regenerate-certs por defecto
No use "docker-machine restar default" porque no actualizará sus configuraciones de red.
Esto funcionó para mí y mis contenedores no fueron destruidos:
- Se abrió la caja virtual de Oracle y se detuvo la VM
Reiniciado la máquina virtual en la máquina docker
$ docker-máquina reinicio por defecto
Versión docker: 1.12.3
Versión docker-máquina: 0.8.2, compilación e18a919
Hasta ahora tengo un poco de una solución intrincada: esto corrige la máquina de la ventana acoplable pero destruye todos los contenedores e imágenes.
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)
Explicación
- Destruye la máquina docker predeterminada, contenedores e imágenes.
- Crea una nueva máquina docker en VirtualBox y la detiene para que podamos modificar VirtualBox.
- Agrega el reenvío de puertos para varias aplicaciones en VirtualBox.
- Inicia la máquina docker.
- Asegura que la Terminal esté configurada para la nueva dirección IP de la máquina docker.
He abierto virtualbox y he cerrado e inicio todos los vm manualmente /. Estado se está running
nuevo
Mi problema fue muy trivial: hice el comando "docker machine ls" justo después de reiniciar la máquina docker, por lo que aún no se estaba ejecutando y eso causó un tiempo de espera.
Tuve el mismo problema con Docker versión 1.11.2, compilación b9f10c9
esto funcionó para mí: mi máquina docker ha vuelto al estado de funcionamiento
reinicio de $ docker-máquina
$ eval $ (docker-machine env)