2016-01-18 83 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命令作爲一個碼頭工人容器根