Máquina virtual Docker en OS X instalada, pero los comandos parecen fallar

Estoy configurando Docker en mi máquina Mac OS X local y tengo algunos problemas para que funcione. He seguido las instrucciones de instalación en https://docs.docker.com/installation/mac/. Todo, hasta la instalación de la herramienta boot2docker, parece funcionar sin problemas, pero después de que la máquina virtual se está ejecutando, los comandos de Docker parecen no hacer nada. P. ej.,

$ docker run ubuntu echo hello world2014/06/17 08:20:54 Post http://localhost:4243/v1.12/containers/create: EOF

Cada comando termina en EOF y no parece hacer lo que realmente debería hacer. Aquí hay otro:

$ docker ps2014/06/17 08:25:10 Get http://localhost:4243/v1.12/containers/json: EOF

La máquina virtual creada por la herramienta boot2docker también se está ejecutando:

$ boot2docker status[2014-06-17 08:26:24] boot2docker-vm is running.

Tengo la sensación de que algo no está configurado correctamente, pero seguí las instrucciones línea por línea y no puedo ver dónde va mal algo.

Cualquier ayuda es muy apreciada, gracias!

Actualización 1

versión de boot2docker: 1.0.0 o 0.9.1 (no estoy seguro,no hay un indicador de versión AFAICT)

$ boot2docker ipUsage /usr/local/bin/boot2docker {init|start|up|save|pause|stop|restart|status|info|delete|ssh|download}

En la instancia de boot2docker:

$ sudo netstat -ntpl | grep dockertcp        0      0 :::2375                 :::*                    LISTEN      743/docker$ docker --versionDocker version 1.0.0, build 63fe64c

Actualización 2

Acabo de reinstalar boot2docker y ahora estoy definitivamente ejecución 1.0.0.

$ boot2docker versionClient version: v1.0.0Git commit: 2fef7b2

También volví a ejecutar el comando en la documentación (que entra en conflicto con lo que el comando me dijo que configurara DOCKER_HOST en la línea de comando, ver más abajo):

$ boot2docker up2014/06/17 18:25:43 Waiting for VM to be started................................2014/06/17 18:26:41 Started.2014/06/17 18:26:41 Auto detection of the VM's IP address.2014/06/17 18:26:41 To connect the Docker client to the Docker daemon, please set:2014/06/17 18:26:41     export DOCKER_HOST=tcp://:4243

Pero sigo viendo el problema original.

$ docker run ubuntu echo hello world2014/06/17 18:28:29 Post http://127.0.0.1:4243/v1.12/containers/create: EOF

Luego vuelvo a ejecutar el comando mencionado en la documentación:

$ export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375

Y ahora mira esto:

$ docker run ubuntu echo hello world2014/06/17 18:31:39 Cannot connect to the Docker daemon. Is 'docker -d' running on this host?

Debo mencionar que tratando de correr docker -d en OS X, se muestra este mensaje:

$ docker -d2014/06/17 18:34:04 The Docker daemon is only supported on linux

Lo cual no es de mucha ayuda...

Un par de cosas para comprobar:

Versión actualizada de boot2docker

Compruebe que el boot2docker esté actualizado. Si lo instaló a través de una aplicación como Homebrew, es posible que esté ejecutando una versión anterior. Consulte los lanzamientos oficiales en https://github.com/boot2docker/osx-installer/releases. Asegúrate de correr boot2docker delete y luego boot2docker init después de la actualización.

Cliente Docker actualizado

Probablemente sea una buena idea ejecutar un cliente Docker que coincida con la versión del servidor que se ejecuta en boot2docker. Si está ejecutando Docker 1.0 en boot2docker, asegúrese de tener el cliente 1.0 de https://github.com/boot2docker/osx-installer/releases.

Puerto correcto de exportación

Es posible que el puerto de los comandos no sea el correcto. Te acordaste de correr export DOCKER_HOST=tcp://$(boot2docker ip 2>/dev/null):2375 ¿como dice la documentación? Portuario 2375 es el nuevo valor predeterminado para Docker 1.0 (que se encuentra en boot2docker 0.9.1 y 1.0.0).

Reenvíe el puerto correcto

Después de actualizar el DOCKER_HOST para el cliente, puede tener un problema con boot2docker 0.9.1 que usaba el puerto incorrecto para las conexiones TCP de Docker. Pasos para verificar:

  1. Inicie sesión en la máquina virtual boot2docker mediante boot2docker ssh (la contraseña es tcuser).
  2. Luego verifique el puerto de escucha usando sudo netstat -ntpl | grep docker (probablemente 2375).
  3. Ahora abra VirtualBox, vaya a la configuración de la máquina virtual boot2docker, luego haga clic en Port Forwarding botón.
  4. Debe coincidir con el puerto que escucha en boot2docker (posiblemente 2375).
  5. Si el puerto no coincide, intente actualizar el reenvío de puertos y, a continuación, vuelva a intentarlo con el cliente.

Andy me llevó el 99% del camino. Estoy marcando su respuesta como la respuesta aceptada, pero escribiré aquí lo que resolvió mi problema. Después de instalar la versión correcta (1.0.0) de boot2docker, seguía recibiendo resultados incorrectos de cualquier comando de Docker.

Luego abrí VirtualBox y leí los puertos, y, he aquí, los puertos eran incorrectos. Sin embargo, cambiarlos a los valores correctos no solucionó el problema.

Decidí restablecer la máquina virtual, ya que el antiguo boot2docker probablemente lo configuró incorrectamente. Los siguientes comandos terminaron solucionando el problema.

$ boot2docker delete$ boot2docker init$ export DOCKER_HOST=tcp://:2375

¿Por qué esto está fuera de tema? Me parece una pregunta perfectamente válida. Me encontré con problemas similares.

No me di cuenta. Pero supongo que cuando dicen " profesional “se refieren a más problemas de” sistema de producción". Dado que pregunta sobre la ejecución de contenedores en una Mac, deben asumir que se trata de un entorno de desarrollo. La pregunta podría haber sido mejor para Stack Overflow. Siempre tuve la impresión de que la falla del servidor era para preguntas relacionadas con el servidor y el demonio, donde el desbordamiento de pila se basaba más en el código. Pero supongo que mis suposiciones estaban un poco fuera de lugar.

¿Puede proporcionar un poco más de información de depuración? versión boot2docker al menos? Tal vez también SSH a la máquina virtual boot2docker y obtenga la salida docker-version? Sospecho que se trata de un problema de reenvío de puertos de VM con el último boot2docker que se actualizó a Docker 1.0, que usa un nuevo puerto.

También parece que su puerto de cliente es incorrecto (al menos para Docker 1.0). Creé una respuesta con dos posibles problemas que pueden estar sucediendo.

@ AndyShinn aparentemente, hacer una pregunta sobre un “entorno de desarrollo” es motivo de cierre. Supongo que uno tiene que preguntarse * dónde* uno puede hacer preguntas como estas sin cerrarse…