基於docker的伺服器端使用jupyter notebook的方法
目前剛接觸了linux伺服器以及docker,需要在上面跑些python的程式。但是伺服器沒有視覺化的工具,黑框框除錯起來非常麻煩,而python工具庫裡的jupyter notebook是一款強大的實時除錯工具,就想在伺服器上使用jupyter notebook。由於我是使用的docker,而網上的許多伺服器上使用jupyter notebook的教程都沒有在docker裡進行的,因此在找資料的繞了不少彎路,現在將總結的方法貼出來,希望能方便更多的朋友。
關鍵字:伺服器,docker,jupyter notebook,linux
以下的內容是主要基於我從網上找到的兩篇博文,感謝他們。
1、使用docker命令建立container
使用docker命令建立container時,可以使用-p指令為container指定對映埠:
docker run -p 7777:8888 [other options]
docker run 是產生容器的命令,而-p 7777:8888的意思是伺服器本身的7777埠會對映到container裡面的8888埠,前面的7777可以更改為別的數字,只要別和伺服器自身已經使用的埠產生衝突就好,後邊的8888最好別更改,因為8888是jupyter notebook的預設埠,若是這裡改動了8888,就要相對應更改。
2、在container裡安裝jupyter notebook
剛生成的container裡一般是沒有jupyter notebook的,需要我們去下載。使用的伺服器端作業系統是Ubuntu 16.04LTS,可以使用下面的步驟來下載:
下載jupyter notebook
pip install jupyter notebook
3、配置遠端訪問jupyter
3.1、生成密碼
在ubuntu的命令列裡輸入ipython開啟ipython,(沒有的話,輸入python也可以)
ipython
在python命令列裡分別輸入:
from notebook.auth import passwd passwd()
輸完之後,設定一個密碼,會生成一個sha1的祕鑰會有如下的結果:
這時候把sha1祕鑰儲存下來,然後退出ipython命令列:
quit()
3.2、生成jupyter notebook的配置檔案
jupyter notebook --generate-config
這時候會生成配置檔案,在 ~/.jupyter/jupyter_notebook_config.py
3.3、修改配置檔案
修改要用到vim,若是沒有,先執行:
apt-get update
apt-get install vim
安裝好vim之後,執行一下程式開啟配置檔案:
vim ~/.jupyter/jupyter_notebook_config.py
加入如下內容,其中sha1那一串祕鑰是上面生成的那一串
c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:41e4da01dde4:e820dc9c0398eda2dc9323c9e4a51ea1228166a2'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888
8888表明要使用container的8888埠訪問jupyter,然後儲存退出。
3.4、開啟jupyter notebook
jupyter notebook --allow-root
雖然在這裡看到,要求我們輸入127.0.0.1:8888來連線jupyter,但是輸入以上網址後發現找不到網頁。
這是因為docker產生的container是一個新的環境,而我們連線的是伺服器的埠,在第一步時我們把伺服器的7777埠和container的8888埠繫結在一起了,所以我們需要連線的是伺服器的7777埠。
所以在本地瀏覽器輸入
127.0.0.1:7777
輸入密碼就可以連線到伺服器端的jupyter notebook了。