Я выполняю ipython сервер ноутбука в контейнере докера. Выполнение кода в ноутбуке от браузера работает по websockets, которые должны соединиться снаружи контейнера (браузер) к выполнению сервера торнадо внутри.
Я заметил это, когда я запускаю сервер ноутбука непосредственно с a docker run
команда
$ docker run -p 9000:9000 username/image ipython notebook --port=9000 --ip="*"
Я не могу получить соединение (ipython время соединения ядра ноутбука). Когда я запускаю оболочку в контейнере докера с и выполнении та же команда в контейнере, соединение работает отлично:
$ docker run -it -p 9000:9000 username/image /bin/bash
$ ipython notebook --port=9000 --ip="*" # inside docker image
В обоих случаях ipython журнал сервера содержит записи как
Connecting to: tcp://127.0.0.1:39946
для websocket соединений.
Это мешает писать сценарий и автоматически выполнять контейнер. Что я могу сделать для получения того же поведения как во втором случае direclty от run
ning изображение?
Похоже, ваша команда на ипитоне
должна быть выполнена на баше - вы должны проверить ENTRYPOINT
вашего Dockerfile, запуск ipython
непосредственно не работает на вас.
Передайте /in/bash команде запуска докера, чтобы проверить:
docker run -p 9000:9000 username/image /bin/bash -c 'ipython notebook --port=9000 --ip="*"'