Подключение к ноутбуку Jupyter, запущенному в Docker на удаленном сервере - PullRequest
0 голосов
/ 07 февраля 2019

У меня проблемы с установлением соединения с моего локального компьютера с экземпляром ноутбука jupyter, который я запускаю на своем удаленном сервере в контейнере докера.

Что я сделал до сих пор:

Я подключаюсьна удаленный сервер с ssh username@remoteHostIp

я запускаю docker container ls, чтобы убедиться, что мой контейнер еще не запущен

Теперь я запускаю свой контейнер с docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

Imтеперь использую терминал в моем контейнере и запускаю экземпляр браузера jupyter без браузера

jupyter notebook --no-browser --port=8889 --allow-root

Он успешно запускается:

The Jupyter Notebook is running at:
[I 11:14:51.979 NotebookApp] system]:8889/

Теперь я запускаю другую оболочку на своем локальном компьютере и создаюssh tunnel:

ssh -N -f -L localhost:8888:localhost:8889 username@ remote_host_name

Моя оболочка через несколько секунд возвращает следующее:

channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused

Я не могу получить доступ к блокноту jupyter с localhost: 8888 / или localhost: 8889 /

Когда я запускаю ноутбук jupyter на удаленном сервере за пределами контейнера докера и создаю туннель ssh, все работает нормально.

Некоторая дополнительная информация: удаленный сервер: Идентификатор распространителя: Ubuntu Описание: Ubuntu 16.04.3 LTS Релиз: 16.04 Кодовое имя: xenial

Моя локальная машина работает на osx moave

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Сначала вы должны подключиться к удаленному серверу с помощью

ssh username@remoteHostIp

После подключения к нему вы должны запустить Docker-контейнер, используя

docker run -it -p 8080:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

Я рассматриваю здесь порт 8888 из ноутбука Jupyter.порт и 8080 - это порт удаленного сервера

Теперь откройте новое окно терминала на вашем локальном компьютере, снова SSH на удаленном компьютере, используя следующие параметры для настройки переадресации портов.

ssh -N -L localhost:8000:localhost:8080 username@remoteHostIp

iя рассматриваю здесь порт 8000 моего локального компьютера, а порт 8080, как я уже сказал выше, уже имеет порт удаленного сервера

Теперь получите доступ к удаленному серверу jupyter через локальный браузер.Откройте браузер и перейдите по адресу:

localhost:8000
0 голосов
/ 07 февраля 2019

Я решил вопрос самостоятельно, подключившись к серверу удаления и проверив IP-адрес док-контейнера: docker inspect <container_name>.Затем я использовал этот IP-адрес для создания туннеля ssh:

ssh -N -f -L localhost:8889:dockerContainerIpAdress:8889 username@ remote_host_name

, теперь я могу подключиться к ноутбуку jupyter в локальном браузере с помощью localhost: 8889

...