Я запускаю сервер ноутбука ipython внутри контейнера докеров. Запуск кода внутри записной книжки из браузера работает через веб-сокеты, которые должны подключаться извне контейнера (браузера) к серверу торнадо, запущенному внутри.
Я заметил, что когда я запускаю сервер ноутбука напрямую с 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
для подключений через веб-сокеты.
Это усложняет сценарий и автозапуск контейнера. Что я могу сделать, чтобы добиться того же поведения, что и во втором случае, директива от run
ning изображение?
Кажется твой ipython
команда требует запуска в bash - вы должны проверить ENTRYPOINT
вашего Dockerfile, запустив ipython
напрямую у вас не работает.
Передайте / bin / bash команде docker run, чтобы проверить:
docker run -p 9000:9000 username/image /bin/bash -c 'ipython notebook --port=9000 --ip="*"'