2016-01-18 51 views
6

我想在后台运行一个jupyter笔记本,而不打印任何内容到控制台。我发现对于bash在question此解决方案:在Docker背景下运行Jupyter笔记本

jupyter notebook &> /dev/null &

但我运行在一个码头工人容器jupyter,并希望它通过CMD在后台启动。我如何在sh中做同样的事情?

+0

到目前为止,我不知道一种方式,文档没有看到,表明这是可能的默认情况下。但是,您的解决方案应该可以工作,在Docker的CMD行中添加此行。 – Ivan

+0

谢谢@Ivan问题是docker在sh中运行CMD命令,而不是在bash中,它在sh中似乎没有相同的效果。 – MrLoh

回答

4

我得到了它使用设置的工作:
https://github.com/jupyter/docker-stacks/tree/master/minimal-notebook

的伎俩是安装TINI,并把下面的代码放到一个start-notebook.sh脚本:

#!/bin/bash 
exec jupyter notebook &> /dev/null & 

,这是比添加到路径用:
COPY start-notebook.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/start-notebook.sh

然后,我可以设置CMD ["start-notebook.sh"]在启动时启动jupyter在后台运行的容器。

+0

你能解释一下'&>/dev/null&'做什么吗?特别是两个'&'符号? – Nick

+0

它确保日志不会被打印到'stdout',而是被重定向到'dev/null',并且终端不会被Jupiter阻塞,但是jupyter只是作为后台进程被触发。试试吧。 – MrLoh

+0

哦,'&>'是一种魔力。谢谢! – Nick

0

你可以做到这一点,执行下面的命令

jupyter notebook --allow-root &> /dev/null & 

您可能会看到jupyter命令需要--allow-root选项警告如果执行jupyter notebook命令作为一个码头工人容器根