Как начать работу с ноутбуком joupter для докеров
Я установил контейнер докеров-тензоров на машине ubuntu. Указатель настроек тензора указывает:
docker run -it b.gcr.io/tensorflow/tensorflow
Это помещает меня в контейнер-терминал докера, и я могу запустить python и выполнить пример Hello World. Я также могу запустить вручную. \Run_jupyter.sh, чтобы запустить ноутбук jupyter. Однако я не могу добраться до ноутбука от хоста.
Как запустить jupyter-ноутбук, чтобы я мог использовать ноутбук с главной машины? В идеале я хотел бы использовать докер для запуска контейнера и запускать jupyter в одной команде.
Ответы
Ответ 1
Для Linux-сервера Роберт Грейвс ответ будет работать, но для Mac OS X или Windows еще многое предстоит сделать, поскольку докер работает на виртуальной машине.
Итак, чтобы начать запуск оболочки докера (или любой оболочки, если вы используете Linux) и выполните следующую команду для запуска нового контейнера TensorFlow:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh
Затем для Mac OS X и Windows вам нужно сделать следующее только один раз:
- Открыть VirtualBox
- Нажмите на docker vm (мой автоматически был назван по умолчанию)
- Откройте настройки, щелкнув настройки
- В настройках сети откройте диалоговое окно переадресации портов
- Нажмите символ +, чтобы добавить другой порт и подключить порт от вашего Mac к виртуальной машине, заполнив диалоговое окно, как показано ниже. В этом примере я выбрал порт 8810, потому что я запускаю другие ноутбуки, используя порт 8888.
![введите описание изображения здесь]()
- затем откройте браузер и подключитесь к http://localhost:8810 (или в зависимости от того, какой порт вы установили в разделе хост-порта
- Сделайте свое приложение для обучения машинам с фантастическими штанами!
Ответ 2
Мой простой, но эффективный рабочий процесс:
TL; версия DR:
- Откройте терминал быстрого запуска Docker. Если он уже открыт, запустите
$ cd
- Запустите этот один раз:
$ docker run -it -p 8888:8888 -p 6006:6006 -v /$(pwd)/tensorflow:/notebooks --name tf b.gcr.io/tensorflow/tensorflow
- Для запуска каждый раз:
$ docker start -i tf
Если вы не в окнах, вы, вероятно, должны изменить /$(pwd)
на $(pwd)
Вы получите пустую папку с именем tensorflow
в своем домашнем каталоге для использования в качестве постоянного хранилища файлов проекта, таких как Ipython Notebooks и наборы данных.
Объяснение:
-
cd
, чтобы убедиться, что вы находитесь в своем домашнем каталоге.
- Титулы:
-
-it
означает интерактивность, поэтому вы можете взаимодействовать с контейнером в терминальной среде.
-
-v host_folder:container_folder
позволяет совместно использовать папку между хостом и контейнером. Хост-папка должна находиться внутри вашего домашнего каталога. /$(pwd)
переводится в //c/Users/YOUR_USER_DIR
в Windows 10. Эта папка рассматривается как каталог notebooks
в контейнере, который используется Ipython/Jupyter Notebook.
-
--name tf
присваивает контейнеру имя tf
.
-
-p 8888:8888 -p 6006:6006
отображение портов контейнера для хоста, первая пара для ноутбука Jupyter, вторая для Tensorboard
-
-i
означает интерактивный
Ответ 3
После дальнейшего чтения документации docker у меня есть решение, которое работает для меня:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow ./run_jupyter.sh
-p 8888: 8888 и -p 6006: 6006 выставляют порты контейнера хосту с тем же номером порта. Если вы просто используете -p 8888, будет назначен случайный порт на хосте.
../run_jupyter.sh сообщает docker, что делать в контейнере.
С помощью этой команды я могу использовать браузер на главной машине для подключения к http://localhost:8888/ и доступа к ноутбуку jupyter.
UPDATE:
После борьбы с докером на окнах я переключился на машину Ubuntu с докером. Моя записная книжка стиралась между сессиями докеров, что имеет смысл после чтения дополнительной документации докеров. Ниже приведена обновленная команда, которая также монтирует каталог хоста в контейнере и запускает jupyter, указывающий на эту смонтированную директорию. Теперь мой ноутбук сохраняется на хосте и будет доступен в следующий раз при запуске тензорного потока.
docker run -p 8888:8888 -p 6006:6006 -v /home/rob/notebook:/notebook b.gcr.io/tensorflow/tensorflow sh -c "jupyter notebook /notebook"
Ответ 4
Эти шаги работали для меня, если вы являетесь полным docker noob с помощью Windows-машины.
Версии: Windows 8.1, докер 1.10.3, tensorflow r0.7
- Запустить терминал быстрого запуска Docker
- После загрузки обратите внимание на адрес ip. Если вы не можете найти его, используйте этот
docker-machine ip
и сделайте заметку. Позволяет называть его "ip-адресом". Будет выглядеть примерно так: 192.168.99.104 (я составил этот ip-адрес)
-
Вставьте эту команду на терминал докера:
docker run -p 8888:8888 -p 6006:6006 b.gcr.io/tensorflow/tensorflow
.
Если вы запускаете это в первый раз, он загрузит и установит изображение на этом легком весе vm. Затем он должен сказать: "Блокнот Jupyter работает на..." → Это хороший знак!
- Откройте браузер:
<your ip address (see above)>:8888
. Например. 192.168.99.104:8888/
- Надеемся, вы сможете увидеть свои файлы ipython.
Ответ 5
Jupyter теперь имеет возможность запускать Изображение Docker для TensorFlow:
docker run -d -v $(pwd):/home/jovyan/work -p 8888:8888 jupyter/tensorflow-notebook
Ответ 6
Чтобы запустить его под гипер-v. Выполните следующие шаги:
1) Создайте виртуальную машину докера с помощью https://blogs.msdn.microsoft.com/scicoria/2014/10/09/getting-docker-running-on-hyper-v-8-1-2012-r2/, это даст вам рабочий контейнер докеров. Вы можете подключиться к нему через консоль или через ssh. Я бы поставил по крайней мере 8 гб памяти, так как я уверен, что это будет использовать много памяти.
2) запустите "ifconfig", чтобы определить IP-адрес Docker VM
3) В командной строке командной строки докера:
docker run -p 8888: 8888 -p 6006: 6006 -it b.gcr.io/tensorflow/tensorflow
4) Подключите к Jupyter Workbench с помощью http:/[ifconfig address]: 8888/
Ответ 7
Чтобы немного убрать вещи, я хочу дать некоторые дополнительные объяснения, потому что я также сильно потрудился настроить докер с тензорным потоком. Для этого я отношусь к этому видео, которое, к сожалению, не является самоочевидным во всех случаях.
Я предполагаю, что вы уже установили докер. На самом деле интересная общая часть видео начинается с минуты 0:44, где он наконец начал докер. До тех пор, пока он не загрузил ретрансляцию тензора в папку, он затем подключается к контейнеру. Вы можете, конечно, положить что-нибудь еще в контейнер и получить доступ к нему позже в виртуальной машине докера.
-
Сначала он запускает длинную команду docker docker run –dit -v /c/Users/Jay/:/media/disk –p 8000 –p 8888 –p 6006 b.gcr.io/tensorflow/tensorflow
. Команда "run" запускает контейнеры. В этом случае он запускает контейнер "b.gcr.io/tensorflow/tensorflow", адрес которого указан в учебнике по установке док-станции Tenorflow. Контейнер будет загружен докерером, если он уже не доступен локально.
Затем он дает два дополнительных аргумента: он монтирует папку хост-системы по заданному пути к контейнеру. Не забудьте указать раздел в начале (например, "/c/" ).
Кроме того, он объявляет, что порты доступны позже с главной машины с параметрами -p.
Из всей этой команды вы возвращаете [CONTAINER_ID] этого выполнения контейнера!
Вы всегда можете увидеть текущие запущенные контейнеры, запустив "docker ps" в консоли докера. Ваш контейнер, созданный выше, должен появиться в этом списке с тем же идентификатором.
-
Следующий шаг: при запуске вашего контейнера теперь вы хотите что-то выполнить в нем. В нашем случае ноутбук jupyter или тензорный поток или что-то еще: для этого вы делаете docker для выполнения bash во вновь создаваемом контейнере: docker exec –ti [CONTAINER_ID] bash
. Теперь эта команда запускает оболочку bash на вашем контейнере. Вы видите это, потому что теперь "$" изменился на root @[CONTAINER_ID]:. Отсюда нет пути назад. Если вы хотите вернуться на терминал докеров, вам нужно запустить еще одну новую консоль докеров, как в минуту 1:10. Теперь с помощью оболочки bash, запущенной в контейнере, вы можете делать все, что хотите, и выполнять Jupiter или тензорный поток или что-то еще. Папка хост-системы, которую вы указали в команде запуска, должна быть доступна в разделе "/media/disk".
-
Последний шаг доступа к выходу VM. Мне все еще не хотелось работать, и я не мог получить доступ к своей записной книжке. Вы все равно должны найти правильный IP и порт для доступа к запущенному ноутбуку, сеансу тензображения или тому подобное. Сначала узнайте главный IP-адрес, используя docker-machine –ls
. В этом списке вы получите URL-адрес. (Если это ваш единственный контейнер, он называется по умолчанию.) Вы можете оставить предоставленный здесь порт. Затем из docker ps
вы получаете список переадресованных портов. Когда в списке записано 0.0.0.32776- > 6006/tcp, вы можете получить к нему доступ с хост-машины, используя порт, указанный в первую очередь (Awkyard). Так что в моем случае выполненный тензор в контейнере сказал "запущен на порту 6006". Затем с моей хост-машины мне нужно было войти http://192.168.99.100:32776/ для доступа к ней.
- > И вот оно! Это побежало для меня вот так!
Ответ 8
Он дает подсказку терминала:
FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i
docker run -it tensorflow/tensorflow:r0.9-devel
или
FOR /f "tokens=*" %i IN ('docker-machine env --shell cmd vdocker') DO %i
docker run -it b.gcr.io/tensorflow/tensorflow:latest-devel
У вас должен быть "vdocker" или изменить vdocker на "default".
Ответ 9
По какой-то причине я столкнулся с одной дополнительной проблемой, которую мне нужно преодолеть за пределами предоставленных примеров, используя флаг --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 ."
И затем я могу получить доступ через http://localhost:8888 с моей машины. В некотором смысле это имеет смысл; в контейнере, который вы связываете с 0.0.0.0
, который представляет все доступные адреса. Но нужно ли мне это делать, кажется, меняться (например, я начал использовать ноутбуки с помощью jupyter/scipy-notebook
, не делая этого).
В любом случае, приведенная выше команда работает для меня, может быть полезной для других.