Подключение к ноутбуку jupyter, запущенному в докере на удаленном сервере

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

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

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

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

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

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

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

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

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

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

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 notebook на удаленном сервере вне контейнера докеров и создаю туннель ssh, все работает нормально.

Дополнительная информация: удаленный сервер: ID распространителя: Ubuntu Описание: Ubuntu 16.04.3 LTS Release: 16.04 Кодовое имя: xenial

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


person QuestionableQuestions    schedule 07.02.2019    source источник
comment
Я также нашел этот этот поток, но я не совсем уверен, как это помогает мне с моей проблемой,   -  person QuestionableQuestions    schedule 07.02.2019
comment
Спасибо за ответ, но следующая команда у меня не сработала. jupyter notebook --no-browser --port=8889 --allow-root. После запуска с --ip 0.0.0.0 он работал нормально. jupyter notebook --ip 0.0.0.0 --port=8889 --allow-root   -  person Shubham    schedule 22.05.2020


Ответы (2)


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

ssh username@remoteHostIp

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

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

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

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

localhost:8000
person srilekha palepu - Intel    schedule 07.03.2019
comment
Но я не понимаю, как он запускает jupyter? Команды jupyter notebook нигде нет. - person aquagremlin; 31.03.2019
comment
при выполнении команды docker запускается блокнот jupyter, поскольку в этой команде мы подключаем порт удаленного сервера (8080) к порту ноутбука jupyter (8888) - person srilekha palepu - Intel; 31.03.2019
comment
Итак, в контейнере waleedka / modern-deep-learning есть такая команда, как './jupyter notebook' в сценарии, который запускается при запуске контейнера? Просто потому, что вы открываете порты в контейнере для хоста, jupyter не должен запускаться автоматически. - person aquagremlin; 31.03.2019
comment
для этого нам нужно сохранить файл сценария run_jupyter.sh в Dockerfile, например (CMD [/run_jupyter.sh, --allow-root]) перед созданием образа. После создания образа, когда мы запустим контейнер, это позволит нам запустить jupyter notebook, а также предоставит токен для подключения. - person srilekha palepu - Intel; 01.04.2019
comment
у меня работает - я не вижу опции -f для ssh --- для чего это? - person mishaF; 18.06.2021

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

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

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

person QuestionableQuestions    schedule 07.02.2019