Назад | Перейти на главную страницу

поведение переадресации портов контейнера докеров для команды `run` (для веб-сокетов)

Я запускаю сервер ноутбука 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

для подключений через веб-сокеты.

Это усложняет сценарий и автозапуск контейнера. Что я могу сделать, чтобы добиться того же поведения, что и во втором случае, директива от running изображение?

Кажется твой ipython команда требует запуска в bash - вы должны проверить ENTRYPOINT вашего Dockerfile, запустив ipython напрямую у вас не работает.

Передайте / bin / bash команде docker run, чтобы проверить:

docker run -p 9000:9000 username/image /bin/bash -c 'ipython notebook --port=9000 --ip="*"'