1. 程式人生 > >[Centos-Docker] Docker-gpu安裝及docker中jupyter配置

[Centos-Docker] Docker-gpu安裝及docker中jupyter配置

寫在前面

OS版本:centos7
Anaconda版本:3.5

一、Docker安裝

安裝教程連結:https://github.com/ufoym/deepo#GPU,執行如下圖的Step1和Step2:

Step1中的使用yum安裝命令如下:
$ 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

是伺服器上剛建立的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