Проблема с доступом к ноутбуку Jupyter из Docker Контейнер панели инструментов - PullRequest
0 голосов
/ 12 марта 2020

Я только что установил контейнер Docker с помощью Docker Toolbox и запустил ноутбук jupyter внутри контейнера, используя

docker run --name container -v %somedirectory%:%someotherdir% -d -p 127.0.0.1:8888:8888 quay.io/fenicsproject/stable:2017.2.0 'jupyter-notebook --ip=0.0.0.0'

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

Если я сейчас go вперед и скопирую ссылку в мой браузер, он не сможет подключиться к localhost. Доступ к 127.0.0.1 также не работает.

Поскольку Docker Toolbox использует виртуальные машины Virtual Box, я также попытался использовать IP-адрес виртуальной машины, в данном случае 192.168.99.100:2376. Согласно пользовательскому интерфейсу Kitemati c, это комбинация IP: порт, которая публикуется docker -машиной машиной, и это действительно не приводит к общей ошибке соединения c. Вместо этого вывод браузера:

Client sent an HTTP request to an HTTPS server.

Я действительно не знаю, что делать с этого момента. Что означает эта ошибка? Имеет ли смысл использовать IP-адрес виртуальной машины? И самое главное: что еще я могу сделать, чтобы, наконец, получить доступ к блокноту jupyter?

PS: я также попробовал предложения, сделанные в темах Не могу получить доступ к блокноту jupyter с docker и Доступ к блокноту Jupyter, работающему на Docker контейнере , и, к сожалению, не может заставить работать любой из них.

Надеюсь, кто-то может помочь, большое спасибо заранее.

1 Ответ

1 голос
/ 12 марта 2020

Чтобы сделать эту работу, нужно сделать две вещи:

  1. Удалить часть 127.0.0.1 сопоставления портов; docker run -p 8888:8888 ...
  2. Подключение к адресу docker-machine ip с опубликованным портом; http://192.168.99.100:8888.

Docker Панель инструментов запускается Docker на отдельной Linux виртуальной машине. Любые опции docker run -p будут интерпретироваться с точки зрения этой виртуальной машины. Если вы docker run -p 127.0.0.1:..., то опубликованный порт будет привязан к интерфейсу lo0 localhost виртуальной машины, поэтому он не будет доступен вне виртуальной машины.

После публикации порта вам необходимо подключиться. к этому указанному c порту. Порт 2376 обычно является портом для доступа к демону Docker внутри виртуальной машины с взаимной защитой TLS; это нужно только для ручных команд docker. Для доступа к службам, работающим внутри виртуальной машины, необходимо подключиться к опубликованному порту (первое число в опции docker run -p).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...