文章目錄
- 1. 選擇與拉取鏡像
- 2. 創建容器
- 3. 訪問Jupyter工作臺
- 4. 遠程訪問Jupyter工作臺
- 4.1 內網穿透工具安裝
- 4.2 創建遠程連接公網地址
- 4.3 使用固定二級子域名地址遠程訪問
本文主要介紹如何在Ubuntu系統中使用Docker本地部署Jupyter Notebook,并結合cpolar內網穿透工具實現任意瀏覽器公網遠程訪問本地部署的Jupyter Notebook界面。
Jupyter Notebook是一個交互式筆記本,支持運行40多種編程語言。可以使用它來創建和共享程序文檔,支持實時代碼,數學方程,可視化和 markdown。具有數據清理和轉換,數值模擬,統計建模,機器學習等等用途。
要使用Docker部署Jupyter Notebook非常簡單,只需要選擇并拉取你想要安裝的版本鏡像,然后在容器中進行參數設置就可以啟動容器,運行Jupyter Notebook了。
1. 選擇與拉取鏡像
本文中使用的操作系統為Ubuntu,在終端中執行命令:
如何在Ubuntu使用docker部署Jupyter Notebook并實現公網遠程訪問
sudo docker search Jupyter
即可看到各種版本的Jupyter Notebook鏡像,可以根據自己不同的需求選擇想要安裝的鏡像。
本教程中我們以jupyter/base-notebook
這個基礎版本鏡像為例,進行鏡像拉取。
執行命令:
sudo docker pull jupyter/base-notebook
執行命令后稍等一會兒就可以看到jupyter/base-notebook
鏡像已經拉取完畢。
執行命令:
sudo docker images
可以看到本地所有鏡像,其中就有剛才拉取的jupyter/base-notebook
鏡像。
2. 創建容器
在拉取了Jupyter鏡像后,我們就可以使用Docker創建容器來運行Jupyter Notebook了。
執行命令:
sudo docker run -d -p 8888:8888 jupyter/base-notebook
即可創建一個在后臺運行的名為jupyter
的容器,并將本地端口8888映射到容器的8888端口。
執行命令:
sudo docker ps -a
可以看到容器已經成功運行了。
3. 訪問Jupyter工作臺
此時,我們在瀏覽器中輸入本機ip地址加端口即可訪問Jupyter工作臺:
http://127.0.0.1:8888
可以看到,頂部顯示我們需要輸入密碼或者token進行登錄。
token獲取可以在終端中執行命令sudo docker logs 你的Jupyter容器id
進行查看:
在顯示的信息底部,可以看到一長串的字符構成的token,下圖紅框中67f4開頭,ec38結尾的這個即是。
將這串字符復制下來,回到剛才打開的瀏覽器中進行粘貼:
點擊log in
登錄,即可進入Jupyter工作臺:
如上圖顯示,則表示已經成功登錄。
不過由于token不方便記憶,所以可以登出后重新登錄界面,使用token來設置或修改密碼,之后即可使用密碼登錄。
確認后,會自動跳轉到工作臺界面:
點擊功能導航中的File,選擇Log Out,即可登出,之后再登錄工作臺就可以在頂部輸入剛才設置的密碼登錄了。
4. 遠程訪問Jupyter工作臺
現在,我們可以在本地使用瀏覽器登錄使用Docker部署的Jupyter工作臺了。
在工作臺中選擇Notebook下的Python3(ipykernel),即可創建一個.ipynb文件,開始愉快的使用Jupyer Notebook了。
不過我們只能在本地使用剛剛部署的Jupyer Notebook,如果身在異地,想要遠程訪問在本地部署的Jupyer Notebook容器,但又沒有公網ip怎么辦呢?
我們可以使用cpolar內網穿透工具來實現無公網ip環境下的遠程訪問需求。
4.1 內網穿透工具安裝
下面是安裝cpolar步驟:
cpolar官網地址: https://www.cpolar.com
- 使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
- 向系統添加服務
sudo systemctl enable cpolar
- 啟動cpolar服務
sudo systemctl start cpolar
cpolar安裝成功后,在外部瀏覽器上訪問Linux 的9200端口即:【http://服務器的局域網ip:9200】,使用cpolar賬號登錄,登錄后即可看到cpolar web 配置界面,結下來在web 管理界面配置即可。
4.2 創建遠程連接公網地址
登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:
- 隧道名稱:可自定義,注意不要與已有的隧道名稱重復,本例使用了:jup
- 協議:http
- 本地地址:8888
- 域名類型:隨機域名
- 地區:選擇China Top
點擊創建
創建成功后,打開左側在線隧道列表,查看剛剛創建隧道后生成兩個公網地址,接下來就可以在其他電腦(異地)上,使用任意一個地址復制到瀏覽器訪問即可。
可以看到,能夠正常公網遠程訪問。
輸入密碼后即可實現在公網遠程登錄本地內網部署的Jupyer Notebook工作臺界面。
小結
為了方便演示,我們在上邊的操作過程中使用了cpolar生成的http公網地址隧道,其公網地址是隨機生成的。
這種隨機地址的優勢在于建立速度快,可以立即使用。然而,它的缺點是網址是隨機生成,這個地址在24小時內會發生隨機變化,更適合于臨時使用。
如果有長期遠程訪問Jupyter Notebook的需求,但又不想每天重新配置公網地址,還想地址好看又好記,那我推薦大家選擇使用固定二級子域名地址的方式來遠程訪問。
4.3 使用固定二級子域名地址遠程訪問
接下來保留一個固定http地址,登錄cpolar官網,點擊左側的預留,找到保留二級子域名,為遠程服務器連接保留一個固定二級子域名地址:
- 地區:選擇China VIP
- 描述:即備注,可自定義,本例使用jup123
點擊保留
地址保留成功后,復制生成的公網地址,打開cpolar web ui管理界面,點擊左側儀表盤的隧道管理——隧道列表,找到我們剛才創建的隨機公網地址隧道 jup,點擊編輯
修改隧道信息,將剛才保留成功的固定http地址:jup123 配置到隧道中
- 域名類型:選擇二級子域名
- 預留的http地址:復制粘貼官網保留成功的地址,本例中為:jup123
- 地區選擇:China VIP
點擊更新
隧道更新成功后,點擊左側儀表盤的狀態——在線隧道列表,可以看到公網地址已經更新為了兩個固定二級子域名地址。
接下來與之前的操作一樣,可以在其他電腦(異地)上,使用任意一個固定二級子域名地址復制到瀏覽器訪問即可。