Cómo inicio tensorflow docker jupyter notebook


He instalado el contenedor tensorflow docker en una máquina ubuntu. Las instrucciones de configuración de tensorflow docker especifican:

docker run -it b.gcr.io/tensorflow/tensorflow

Esto me pone en la terminal de contenedores de docker, y puedo ejecutar python y ejecutar el ejemplo de Hello World. También puedo ejecutar manualmente. \run_jupyter.sh para iniciar el jupyter notebook. Sin embargo, no puedo llegar a la libreta desde el anfitrión.

¿Cómo puedo iniciar el jupyter notebook de manera que pueda usar el notebook desde la máquina host? Idealmente Yo quisiera usar docker para iniciar el contenedor e iniciar jupyter en un solo comando.

Author: ROMANIA_engineer, 2015-11-10

9 answers

Para un host Linux, la respuesta de Robert Graves funcionará, pero para Mac OS X o Windows hay más por hacer porque docker se ejecuta en una máquina virtual.

Así que para comenzar a lanzar el shell docker (o cualquier shell si está utilizando Linux) y ejecutar el siguiente comando para lanzar un nuevo contenedor TensorFlow:

docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh

Luego, para Mac OS X y Windows, debe hacer lo siguiente solo una vez:

  1. Abrir VirtualBox
  2. Haga clic en la vm de docker (la mía fue nombrada automáticamente "por defecto")
  3. Abra la configuración haciendo clic en configuración
  4. En la configuración de red, abra el diálogo de reenvío de puertos
  5. Haga clic en el símbolo + para agregar otro puerto y conectar un puerto desde su mac a la máquina virtual rellenando el cuadro de diálogo que se muestra a continuación. En este ejemplo elegí el puerto 8810 porque corro otros portátiles usando el puerto 8888. introduzca la descripción de la imagen aquí
  6. luego abra un navegador y conéctese a http://localhost:8810 (o el puerto que establezca en el puerto host sección
  7. Hacer su fantasía pantalones aplicación de aprendizaje automático!
 46
Author: Craig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-11 01:43:09

Mi flujo de trabajo simple pero eficiente:

TL; DR version:{[19]]}
  1. Abre la terminal de inicio rápido de Docker. Si ya está abierto, ejecute $ cd
  2. Ejecute esto una vez : $ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
  3. Para empezar cada vez: $ docker start -i tf

Si no está en Windows, probablemente debería cambiar /$(pwd) a $(pwd)

Obtendrá una carpeta vacía llamada tensorflow en su directorio personal para usarla como almacenamiento persistente de archivos de proyecto, como Cuadernos y conjuntos de datos de Ipython.

Explicación:

  1. cd para asegurarse de que está en su directorio personal.
  2. parámetros:
    • -it significa interactivo, por lo que puede interactuar con el contenedor en el entorno de la terminal.
    • -v host_folder:container_folder permite compartir una carpeta entre el host y el contenedor. La carpeta host debe estar dentro de su directorio personal. /$(pwd) se traduce como //c/Users/YOUR_USER_DIR en Windows 10. Esta carpeta se ve como el directorio notebooks en el contenedor que es utilizado por Ipython / Jupyter Notebook.
    • --name tf asigna el nombre tf al contenedor.
    • -p 8888:8888 -p 6006:6006 mapeo de puertos del contenedor al host, primer par para Jupyter notebook, el segundo para Tensorboard
  3. -i significa interactivo

Ejecutar TensorFlow en la nube

 16
Author: Thoran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:47:23

Después de leer más de la documentación de docker Tengo una solución que funciona para mí:

docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh

El-p 8888:8888 y el-p 6006:6006 exponen los puertos del contenedor al host con el mismo número de puerto. Si solo usa-p 8888, se asignará un puerto aleatorio en el host.

El ./run_jupyter.sh indica a docker qué ejecutar dentro del contenedor.

Con este comando, puedo usar un navegador en la máquina host para conectarme a http://localhost:8888 / y acceso el cuaderno de jupyter.

ACTUALIZAR: Después de luchar con docker en Windows cambié de nuevo a una máquina Ubuntu con docker. Mi cuaderno estaba siendo borrado entre sesiones de docker, lo que tiene sentido después de leer más documentación de docker. Aquí hay un comando actualizado que también monta un directorio host dentro del contenedor e inicia jupyter apuntando a ese directorio montado. Ahora mi notebook se guarda en el host y estará disponible la próxima vez que inicie tensorflow.

docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
 10
Author: Robert Graves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-13 16:15:24

Estos pasos funcionaron para mí si eres un total docker noob usando una máquina Windows.

Versiones: Windows 8.1, docker 1.10.3, tensorflow r0.7

  1. Ejecute el Terminal de inicio rápido de Docker
  2. Después de cargarlo, anote la dirección ip. Si no puede encontrarlo use este docker-machine ip y tome nota. Vamos a llamarlo "dirección ip". Se verá algo como esto: 192.168.99.104 (Inventé esta dirección ip)
  3. Pegue este comando en la terminal acoplable:

    docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow.

    Si si está ejecutando esto por primera vez, descargará e instalará la imagen en esta máquina virtual liviana. Entonces debería decir ' El Jupyter notebook se está ejecutando en ....¡Esto es una buena señal!

  4. Abra su navegador en: <your ip address (see above)>:8888. Eg. 192.168.99.104:8888/
  5. Esperamos que pueda ver sus archivos ipython.
 4
Author: Javiar Sandra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-08 17:10:50

Jupyter ahora tiene una imagen Docker lista para ejecutarse para TensorFlow:

docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook

 4
Author: Rush,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-01 21:47:34

Para que esto se ejecute en hyper-v. Realice los siguientes pasos:

1) Crear una máquina virtual de docker usando https://blogs.msdn.microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/ esto le dará un contenedor docker de trabajo. Puede conectarse a él a través de la consola o a través de ssh. Pondría al menos 8gb de memoria ya que estoy seguro de que esto usará mucha memoria.

2) ejecute "ifconfig" para determinar la dirección IP de la VM de Docker

3) El el tipo de símbolo del shell de docker:

Docker run-p 8888: 8888-p 6006: 6006-it b.gcr.io/tensorflow/tensorflow

4) Conéctese a Jupyter Workbench usando http:/[dirección ifconfig]: 8888 /

 2
Author: kariato,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-07 14:41:23

Para ordenar un poco las cosas, quiero dar algunas explicaciones adicionales porque también sufrí mucho configurando docker con tensorflow. Para esto me refiero a este video que desafortunadamente no se presenta en todos los casos. Asumo que ya instalaste Docker. La parte general realmente interesante del video comienza en el minuto 0: 44 donde finalmente comenzó docker. Hasta allí solo descarga el repositorio tensorflow en la carpeta, que luego monta en el contenedor. Por supuesto, puede poner cualquier otra cosa en el contenedor y acceder a él más tarde en la VM de docker.


  1. Primero ejecuta el comando long docker docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow. El comando " run " inicia contenedores. En este caso se inicia el contenedor "b.gcr.io/tensorflow/tensorflow", cuya dirección se proporciona en el tutorial de instalación de tensorflow docker . El contenedor será descargado por docker si aún no está disponible localmente. Luego da dos tipos adicionales de argumentos: Monta una carpeta del sistema host en la ruta dada al contenedor. NO se olvide de dar la partición al principio (por ejemplo. "/c/"). Además declara que los puertos están disponibles más tarde desde la máquina host con el params-p. De todo este comando se obtiene el [CONTAINER_ID] de la ejecución de este contenedor! Siempre puede ver los contenedores en ejecución ejecutando "docker ps" en la consola de docker. El contenedor creado anteriormente debe aparecer en esta lista con el mismo id.


  2. Siguiente paso: Con su contenedor en ejecución, ahora desea ejecutar algo en él. En nuestro caso jupyter notebook o tensorflow o lo que sea: Para hacer esto, haga que docker ejecute el bash en el contenedor recién creado: docker exec –ti [CONTAINER_ID] bash. Este comando ahora inicia un shell bash en su contenedor. Ves esto porque el "CONTAIN" ahora cambió a root@[CONTAINER_ID]:. Desde aquí no hay vuelta atrás. Si desea volver a la terminal docker, debe iniciar otra nueva consola docker como lo está haciendo en el minuto 1:10. Ahora con una shell bash ejecutándose en el contenedor puedes hacer lo que quieras y ejecutar Jupiter o tensorflow o lo que sea. La carpeta del sistema host, que dio en el comando ejecutar, debería estar disponible ahora en "/ media / disk".


  3. Último paso para acceder a la salida de la VM. Todavía no quería funcionar para mí y no podía acceder a mi cuaderno. Todavía tiene que encontrar la IP y el puerto correctos para acceder al cuaderno lanzado, tensorboard sesión o lo que sea. Primero averigüe la IP principal usando docker-machine –ls. En esta lista se obtiene la URL. (Si es su único contenedor se llama predeterminado.) Puede dejar de lado el puerto dado aquí. A continuación, desde docker ps se obtiene la lista de puertos reenviados. Cuando se escribe 0.0.0.32776->6006/tcp en la lista, puede acceder a ella desde la máquina host utilizando el puerto dado en primer lugar (Awkyard). Así que en mi caso el tensorboard ejecutado en el contenedor decía "lanzado en el puerto 6006". Luego de mi hostmachine Necesitaba ingresar http://192.168.99.100:32776 / para acceder a él.

-> Y eso es todo! ¡Corrió para mí así!

 1
Author: BaluJr.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-22 19:56:37

Te da el indicador de terminal:

FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i
docker run -it tensorflow/tensorflow:r0.9-devel

O

FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel

Debe tener 'vdocker' o cambiar vdocker a 'default'.

 0
Author: Jung-Ho Park,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-23 04:19:37

Por alguna razón me encontré con un problema adicional que necesitaba superar más allá de los ejemplos proporcionados, usando la bandera --ip:

nvidia-docker run --rm \
  -p 8888:8888 -p 6006:6006 \
  -v `pwd`:/root \
  -it tensorflow/tensorflow:latest-devel-gpu-py3 sh -c "jupyter notebook --ip 0.0.0.0 ."

Y luego puedo acceder a través de http://localhost:8888 de mi máquina. De alguna manera esto tiene sentido; dentro del contenedor se enlaza a 0.0.0.0 que representa todas las direcciones disponibles. Pero si necesito hacer esto parece variar (por ejemplo, he comenzado a usar cuadernos jupyter/scipy-notebook sin tener que hacer esto).

En cualquier caso, el comando anterior funciona para mí, podría ser útil para otros.

 0
Author: Karl Rosaen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-05 14:11:46