поведение перенаправления портов контейнера докера для 'выполненной' команды (для websockets)

Я выполняю 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 от running изображение?

0
задан 8 May 2015 в 02:46
1 ответ

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

Передайте /in/bash команде запуска докера, чтобы проверить:

docker run -p 9000:9000 username/image /bin/bash -c 'ipython notebook --port=9000 --ip="*"'
1
ответ дан 4 December 2019 в 16:57

Теги

Похожие вопросы