Comment démarrer TensorFlow Docker Jupyter notebook

J'ai installé le conteneur Docker tensorflow sur une machine ubuntu. Le menu fixe tensorflow instructions de configuration spécifiez:

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

Cela me met dans le terminal de conteneur docker, et je peux exécuter python et exécuter L'exemple Hello World. Je peux également exécuter manuellement. run_jupyter.sh pour démarrer le carnet jupyter. Cependant, je ne peux pas atteindre le cahier de l'hôte.

Comment démarrer le bloc-notes jupyter de sorte que je puisse utiliser le bloc-notes de la machine hôte? Idéalement, J' souhaitez utiliser docker pour lancer le conteneur et démarrer jupyter en une seule commande.

48
demandé sur ROMANIA_engineer 2015-11-10 21:23:38

9 réponses

Pour un hôte Linux, la réponse de Robert Graves fonctionnera, mais pour Mac OS X ou Windows, il y a plus à faire car Docker s'exécute dans une machine virtuelle.

Donc, pour commencer à lancer le shell docker (ou n'importe quel shell si vous utilisez Linux) et exécutez la commande suivante pour lancer un nouveau conteneur TensorFlow:

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

Ensuite, pour Mac OS X et Windows, vous devez effectuer les opérations suivantes une seule fois:

  1. Ouvrir VirtualBox
  2. Cliquez sur la VM docker (la mienne a été automatiquement nommée "par défaut")
  3. Ouvrez les paramètres en cliquant sur paramètres
  4. dans les paramètres réseau, ouvrez la boîte de dialogue redirection de port
  5. Cliquez sur le symbole + pour ajouter un autre port et connecter un port de votre mac à la machine virtuelle en remplissant la boîte de dialogue comme indiqué ci-dessous. Dans cet exemple, j'ai choisi le port 8810 parce que j'exécute d'autres ordinateurs portables en utilisant le port 8888. entrez la description de l'image ici
  6. Ouvrez ensuite un navigateur et connectez-vous à http://localhost:8810 (ou le port que vous avez défini dans le port hôte section
  7. Faites votre application d'apprentissage de la machine fancy pants!
46
répondu Craig 2015-11-11 01:43:09

Mon flux de travail simple mais efficace:

TL;version DR:

  1. Ouvrir Panneau De Démarrage Du Terminal. S'il est déjà ouvert, exécutez $ cd
  2. Exécuter ce une fois: $ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
  3. pour commencer à chaque fois: $ docker start -i tf

Si vous n'êtes pas sous windows, vous devrez probablement changer de /$(pwd) à $(pwd)

Vous obtiendrez un dossier vide nommé tensorflow dans votre répertoire personnel pour une utilisation comme stockage persistant de fichiers de projet tels que Ordinateurs portables et jeux de données Ipython.

Explication:

  1. cd pour vous assurer que vous êtes dans votre répertoire personnel.
  2. paramètres:
    • -it signifie interactif, de sorte que vous pouvez interagir avec le conteneur dans l'environnement terminal.
    • -v host_folder:container_folder permet de partager un dossier entre l'hôte et le conteneur. Le dossier hôte doit se trouver dans votre répertoire personnel. /$(pwd) se traduit par //c/Users/YOUR_USER_DIR dans Windows 10. Ce dossier est considéré comme le répertoire notebooks conteneur qui est utilisé par IPython / Jupyter Notebook.
    • --name tf attribue le nom tf au conteneur.
    • -p 8888:8888 -p 6006:6006 mappage des ports du conteneur à l'hôte, première paire pour Jupyter notebook, la seconde pour Tensorboard
  3. -i signifie interactive

L'Exécution de TensorFlow sur le cloud

16
répondu Thoran 2017-05-23 11:47:23

Après une lecture plus approfondie de documentation docker j'ai une solution qui fonctionne pour moi:

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

Les-p 8888: 8888 et-p 6006: 6006 exposent les ports de conteneur à l'hôte sur le même numéro de port. Si vous utilisez simplement-p 8888, un port aléatoire sur l'hôte sera attribué.

La. /run_jupyter.sh indique à docker ce qu'il faut exécuter dans le conteneur.

Avec cette commande, je peux utiliser un navigateur sur la machine hôte pour me connecter à http://localhost:8888 / et accès le carnet de jupyter.

Mise à jour: Après avoir lutté avec Docker sur windows, je suis revenu à une machine Ubuntu avec docker. Mon cahier était effacé entre les sessions docker, ce qui est logique après avoir lu plus de documentation docker. Voici une commande mise à jour qui monte également un répertoire hôte dans le conteneur et démarre jupyter pointant vers ce répertoire monté. Maintenant, mon ordinateur portable est enregistré sur l'hôte et sera disponible la prochaine fois que vous démarrez 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
répondu Robert Graves 2015-11-13 16:15:24

Ces étapes ont fonctionné pour moi si vous êtes un docker noob total en utilisant une machine windows.

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

  1. Exécutez Le Panneau De Démarrage Du Terminal
  2. Une fois chargé, notez l'adresse ip. Si vous ne le trouvez pas, utilisez ceci docker-machine ip et faites une note. Appelons-le "adresse ip". Ressemblera à quelque chose comme ceci: 192.168.99.104 (j'ai composé cette adresse ip)
  3. Collez cette commande sur le terminal docker:

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

    Si vous exécutez ceci pour la première fois, il téléchargera et installera l'image sur cette machine virtuelle légère. Ensuite, il devrait dire " le carnet de Jupyter fonctionne à ....'-> C'est un bon signe!

  4. Ouvrez votre navigateur à l'adresse: <your ip address (see above)>:8888. Par exemple. 192.168.99.104:8888/
  5. espérons que vous pouvez voir vos fichiers ipython.
4
répondu Javiar Sandra 2016-04-08 17:10:50

Jupyter a maintenant une image Docker prête à fonctionner pour TensorFlow:

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

4
répondu Rush 2017-01-01 21:47:34

Pour que cela fonctionne sous hyper-v. effectuez les étapes suivantes:

1) Créer une machine virtuelle docker en utilisant https://blogs.msdn.microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/ cela vous donnera un conteneur Docker fonctionnel. Vous pouvez vous y connecter via la console ou via ssh. Je mettrais au moins 8 Go de mémoire car je suis sûr que cela utilisera beaucoup de mémoire.

2) Exécutez "ifconfig" pour déterminer l'adresse IP de la machine virtuelle Docker

3) sur le type d'invite du shell docker:

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

4) Connectez - vous à L'Atelier Jupyter en utilisant http: / [ifconfig address]: 8888 /

2
répondu kariato 2016-04-07 14:41:23

Pour ranger un peu les choses, je veux donner quelques explications supplémentaires car j'ai aussi beaucoup souffert de la configuration de docker avec tensorflow. Pour cela, je me réfère à cette vidéo qui n'est malheureusement pas auto-explicative dans tous les cas. Je suppose que vous avez déjà installé docker. La partie générale vraiment intéressante de la vidéo commence à la minute 0:44 où il a finalement commencé docker. Jusqu'à ce qu'il télécharge seulement le repo tensorflow dans le dossier, qu'il monte ensuite dans le conteneur. Vous pouvez bien sûr mettre n'importe quoi d'autre dans le conteneur et y accéder plus tard dans la machine virtuelle docker.


  1. Il exécute D'abord la commande long docker docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow. La commande "Exécuter" démarre les conteneurs. Dans ce cas il démarre le conteneur "b.gcr.io/tensorflow/tensorflow", dont l'adresse est fournie dans le tutoriel d'installation du docker tensorflow. Le conteneur sera téléchargé par docker s'il n'est pas déjà disponible localement. Ensuite, il donne deux types supplémentaires de arguments: il monte un dossier du système d'hôte sur le chemin donné vers le conteneur. Ne pas oublier de donner la partition au début (par exemple. "/C/"). En outre, il déclare que les ports sont disponibles plus tard à partir de la machine hôte avec le params-p. De toute cette commande, vous récupérez le [CONTAINER_ID] de cette exécution de conteneur! Vous pouvez toujours voir les conteneurs en cours d'exécution en exécutant "docker ps" dans la console docker. Votre conteneur créé ci-dessus devrait apparaître dans cette liste avec le même ID.


  2. Étape suivante: avec votre conteneur en cours d'exécution, vous voulez maintenant exécuter quelque chose dedans. Dans notre cas Jupyter notebook ou tensorflow ou autre: pour ce faire, vous faites exécuter docker le bash sur le conteneur nouvellement créé: docker exec –ti [CONTAINER_ID] bash. Cette commande démarre maintenant un shell bash sur votre conteneur. Vous voyez cela parce que le " $ " a maintenant changé en root@[CONTAINER_ID]:. À partir d'ici n'est pas le chemin du retour. Si vous voulez revenir au terminal docker, vous devez démarrer une autre nouvelle console Docker comme il le fait dans la minute 1: 10. Maintenant, avec un shell bash fonctionnant dans le conteneur, vous pouvez faire ce que vous voulez et exécuter Jupiter ou tensorflow ou autre. Le dossier du système hôte, que vous avez donné dans la commande run, devrait être disponible maintenant sous "/ media / disk".


  3. Dernière étape d'accès à la sortie VM. Il ne voulait toujours pas travailler pour moi et je ne pouvais pas accéder à mon ordinateur portable. Vous devez toujours trouver L'adresse IP et le Port corrects pour accéder au portable lancé, tensorboard session ou autre chose. Découvrez d'abord l'adresse IP principale en utilisant docker-machine –ls. Dans cette liste, vous obtenez L'URL. (Si c'est votre seul conteneur, il s'appelle default.) Vous pouvez laisser le port donné ici. Ensuite, à partir de docker ps, vous obtenez la liste des ports transférés. Quand il est écrit 0.0.0.32776- > 6006 / tcp dans la liste, vous pouvez y accéder à partir de l'hostmachine en utilisant le port donné en premier lieu (Awkyard). Donc, dans mon cas, le TensorBoard exécuté dans le conteneur a dit "lancé sur le port 6006". Puis, à partir de mon hostmachine je devais entrer http://192.168.99.100:32776 / pour y accéder.

-> Et c'est tout! Il a couru pour moi comme ça!

1
répondu BaluJr. 2016-06-22 19:56:37

Il vous donne l'invite de terminal:

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

Ou

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

Vous devriez avoir 'vdocker' ou changer vdocker en 'default'.

0
répondu Jung-Ho Park 2016-06-23 04:19:37

Pour une raison quelconque, j'ai rencontré un problème supplémentaire que je devais surmonter au-delà des exemples fournis, en utilisant le drapeau --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 ."

Et puis je peux accéder via http://localhost:8888 de ma machine. À certains égards, cela a du sens; dans le conteneur, vous vous liez à 0.0.0.0 qui représente toutes les adresses disponibles. Mais si je dois faire cela semble varier (par exemple, j'ai commencé des ordinateurs portables en utilisant jupyter/scipy-notebook sans avoir à le faire).

Dans tous les cas, la commande ci-dessus fonctionne pour moi, pourrait être utile aux autres.

0
répondu Karl Rosaen 2017-04-05 14:11:46