Terminal 在Docker的后台运行Jupyter笔记本

Terminal 在Docker的后台运行Jupyter笔记本,terminal,docker,sh,jupyter-notebook,Terminal,Docker,Sh,Jupyter Notebook,我试图在后台运行jupyter笔记本,而不向控制台打印任何内容。我在for bash中找到了此解决方案: jupyter笔记本&>/dev/null& 但是我在docker容器中运行jupyter,希望它通过CMD在后台启动。我怎样才能在上海做同样的事 我使用以下设置使其工作: 诀窍是安装tini并将以下代码放入start-notebook.sh脚本中: #!/bin/bash exec jupyter notebook &> /dev/null & 然后将其添加到路径中

我试图在后台运行jupyter笔记本,而不向控制台打印任何内容。我在for bash中找到了此解决方案:

jupyter笔记本&>/dev/null&


但是我在docker容器中运行jupyter,希望它通过
CMD
在后台启动。我怎样才能在上海做同样的事

我使用以下设置使其工作:

诀窍是安装tini并将以下代码放入start-notebook.sh脚本中:

#!/bin/bash
exec jupyter notebook &> /dev/null &
然后将其添加到路径中:
复制start-notebook.sh/usr/local/bin/

运行chmod+x/usr/local/bin/start notebook.sh


然后我可以设置
CMD[“start notebook.sh”]
在启动时在后台运行jupyter来启动容器

您可以通过执行下面的命令来实现这一点

jupyter笔记本--允许root&>/dev/null&

如果您在docker容器中以根目录执行jupyter notebook命令,您可能会看到jupyter命令需要允许根目录选项的警告。

到目前为止,我不知道方法,文档也不知道默认情况下这是可能的。不过,您的解决方案应该可以在Docker的CMD行上添加这一行。谢谢@Ivan问题是Docker在sh中运行CMD命令,而不是在bash中,而且在sh中似乎没有相同的效果。您能解释一下
&>/dev/null&
的作用吗?特别是两个
&
符号?它确保日志不会打印到
stdout
,而是重定向到
dev/null
,并且终端不会被Jupiter阻塞,但jupyter只是作为后台进程启动。试试看。
&
是一个较新的bash ism,“从bash 4起就可以正常工作”,它重定向了stderr和stdout。或者,更传统地说:
jupyter notebook>/dev/null 2>&1
,或者最好是
jupyter notebook>/path/to/logfile.log 2>&1
(最后一个尾随的
&
只是在后台运行整个命令)。