我正在Docker容器中运行一个ipython笔记本服务器。 从浏览器运行在笔记本内部的代码在websocket上运行,websocket必须从容器外部(浏览器)连接到内部运行的龙卷风服务器。
我注意到,当我用docker run命令直接启动笔记本服务器时
$ docker run -p 9000:9000 username/image ipython notebook --port=9000 --ip="*"
我无法获得连接(ipython笔记本内核连接超时)。 当我在Docker容器中启动一个shell并且在容器中运行相同的命令时,连接完美地工作:
$ 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连接。
这使脚本和自动运行容器变得更加困难。 我能做些什么来获得和第二种情况下一样的行为来run图像?
看来你的ipython命令需要在bash中运行 – 你应该检查你的ENTRYPOINT的ENTRYPOINT,直接运行ipython不会为你工作。
通过/斌/ bashdocker运行命令,以便testing:
docker run -p 9000:9000 username/image /bin/bash -c 'ipython notebook --port=9000 --ip="*"'