[Centos-Docker] Docker-gpu安裝及docker中jupyter配置
寫在前面
OS版本:centos7
Anaconda版本:3.5
一、Docker安裝
安裝教程連結:https://github.com/ufoym/deepo#GPU,執行如下圖的Step1和Step2:
$ yum install docker
$ yum install nvidia-docker
注意: image類似作業系統映象檔案等,一個image可以對應多個容器(container)。
二、Docker使用
1、首先在需要使用的地方建立資料夾,比如,我自己建立的資料夾名稱是docker,然後在docker下面建立兩個子資料夾data和config(必須是data和config)。
2、使用下面的命令執行映象
$ nvidia-docker run -it -p 8888:9999 --ipc=host -v /home/hdj/jupyter/docker/data:/data -v /home/hdj/jupyter/docker/config:/config ufoym/deepo bash
其中,-p 8888:9999
的作用是將docker中的9999埠對映到伺服器本地的8888埠。(這裡的主要作用是,在之後會安裝jupyter,給其指定埠號9999,但是jupyter的埠windows下不能直接訪問,所以我們需要將其對映到伺服器本地,這樣在win下才可以訪問)。/home/hdj/jupyter/docker/data:/data
/home/hdj/jupyter/docker/config:/config
是伺服器上剛建立的config目錄地址。ufoym/deepo
是剛pull下來的映象的名稱。
3、拉取完畢之後,如果想要使用自己的容器(使用自己的容器,就相當於使用一個獨立的系統,以後使用無論怎麼更改都不會影響別人的容器,也不會影響docker外的系統),需要得到唯一的Docker Container ID,當安裝完成後,可以在系統中使用sudo docker ps -a
命令檢視:
4、得到Container ID之後,使用下面命令進入Docker互動視窗:
$ sudo docker exec -it 9d9a30b563c9 /bin/bash
其中,9d9a30b563c9是Container ID。
注: 使用docker exec –it時提示:Error response from daemon: Container is not running。可以先嚐試:
Step1:$ sudo docker start <container id>
Step2:$ sudo docker exec -it <container id> /bin/bash
三、Docker常用命令
進入互動視窗之後,就可以像在Docker容器外面使用軟體一樣。
注: 將需要執行的程式檔案儲存在data資料夾下。
1、以執行python程式LSTM訓練模型為例,若想使用深度學習模型,則需要安裝tensorFlow-gpu,如果使用sudo pip install tensorflow-gpu
則會提醒tensorflow-gpu已經安裝過,所以我們不需要再次安裝。若後臺執行程式,只需要進入程式所在路徑執行nohup python ***.py >log.txt 2>&1 &
即可。
2、若檢視已經執行的python程式,使用命令:ps –ef | grep python
3、若檢視GPU使用情況,使用命令:nvidia-smi
4、檢視GPU情況,並定時重新整理情況:nvidia-smi –l
5、將容器重新命名:docker rename <container id> new_name
,如docker rename 9d9a30b563c9 lina
6、刪除映象:docker rmi <image id>
,使用sudo docker images
可以檢視所有映象。
7、刪除容器:docker rm -f <container id>
,使用 docker ps –a
可以檢視所有容器。
四、Docker下安裝jupyter
首先進入docker,這裡直接安裝anaconda,比較方便。
1、安裝jupyter
Step1:下載anaconda安裝包
# wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh
Step2:安裝anaconda
# bash Anaconda3-5.1.0-Linux-x86_64.sh
若提示安裝位置,可以直接Enter,也可以指定目錄,如下圖所示:
接著會提示是否希望將PATH寫入/root/.bashrc
,輸入yes
。
之後,使用下列命令使.bashrc檔案立即生效:
# source ~/.bashrc
我們可以使用conda -V
檢視anaconda版本。
Step3:安裝jupyter
# conda install jupyter notebook
若已經安裝成功,則不需要再安裝,會有提示。
使用jupyter notebook
檢視是否docker內部jupyter可以啟動成功。
2、配置windows下遠端訪問jupyter
Step1:安裝和使用ipython
# conda install ipython
# ipython 進入python shell互動
若進入成功,則說明ipython可正常使用。使用exit
退出。
Step2:生成jupyter配置檔案
# jupyter notebook --generate-config
輸出Writing default config to: /root/.jupyter/jupyter_notebook_config.py即表示生成成功。注意: 這一步是在docker內,不是在ipython內。
Step3:使用ipython生成密碼
# ipython //進入ipython互動模式
In [1]: from notebook.auth import passwd
In [1]: from notebook.auth import passwd
輸入密碼,會輸出Out[2]: 'sha1:2a058da6fe75:fb78a12fbd27443b268f3b890fac016b74a38135'
,這串字串會在配置檔案中用到。
Step4:修改預設配置檔案
# vi ~/.jupyter/jupyter_notebook_config.py # 開啟配置檔案
新增如下內容:
c.NotebookApp.ip='*' #設定所有ip都可以訪問,即不限制ip
c.NotebookApp.password = u'sha1:2a058da6fe75:fb78a12fbd27443b268f3b890fac016b74a38135' # sha1:2a058da6fe75:fb78a12fbd27443b268f3b890fac016b74a38135便是上面生成的一串雜湊值
c.NotebookApp.open_browser = False # 禁止自動開啟瀏覽器
c.NotebookApp.port = 9999 # 指定一個埠,這裡埠指定9999,因為我們在執行docker已經將docker的9999地址對映到了伺服器本地的8888埠
Step4:啟動jupyter
使用下列命令啟動jupyter:
# jupyter notebook --allow-root
Step5:遠端訪問jupyter
訪問地址:http://server_ip:8888,按照提示輸入密碼(剛ipython中輸入的密碼),登入就可以使用了。
參考文章:
[1] docker安裝anaconda資料分析
[2] Docker - Container is not running
[3] deepo